From bed70417342f39a8811f6f0a6613ceed0e3fced5 Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Thu, 27 Aug 2026 13:31:00 -0400 Subject: [PATCH 1/7] update pynucastro nets to pynucastro >= 3.0 also use description to explain what the modified rates are doing --- .../he-burn/ase-iron-starlib/Make.package | 2 + .../he-burn/ase-iron-starlib/actual_network.H | 552 +- .../he-burn/ase-iron-starlib/actual_rhs.H | 843 +- .../ase-iron-starlib/approximate_rates.H | 694 +- .../ase-iron-starlib/ase_iron_starlib.py | 3 +- .../he-burn/ase-iron-starlib/derived_rates.H | 7464 +++++++++-------- .../he-burn/ase-iron-starlib/modified_rates.H | 18 +- .../ase-iron-starlib/partition_functions.H | 12 +- .../ase-iron-starlib/pynucastro-info.txt | 2 +- .../he-burn/ase-iron-starlib/reaclib_rates.H | 25 +- .../temperature_table_rates.H | 1284 +-- networks/he-burn/ase-iron/ase_iron.py | 3 +- networks/he-burn/ase/ase.py | 3 +- networks/he-burn/he_burn_core.py | 12 +- 14 files changed, 5427 insertions(+), 5490 deletions(-) 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..26f66cfe3 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_Ar36_starlib = 55, + k_Cl35_p_to_He4_S32_starlib = 56, + k_Ar36_He4_to_Ca40_starlib = 57, + k_K39_p_to_Ca40_starlib = 58, + k_K39_p_to_He4_Ar36_starlib = 59, + k_Ca40_He4_to_Ti44_starlib = 60, + k_Sc43_p_to_Ti44_starlib = 61, + k_Sc43_p_to_He4_Ca40_starlib = 62, + k_Ti44_He4_to_Cr48_starlib = 63, + k_V47_p_to_Cr48_starlib = 64, + k_V47_p_to_He4_Ti44_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,64 +372,64 @@ 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, @@ -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_Ar36_starlib", // 55, + "Cl35_p_to_He4_S32_starlib", // 56, + "Ar36_He4_to_Ca40_starlib", // 57, + "K39_p_to_Ca40_starlib", // 58, + "K39_p_to_He4_Ar36_starlib", // 59, + "Ca40_He4_to_Ti44_starlib", // 60, + "Sc43_p_to_Ti44_starlib", // 61, + "Sc43_p_to_He4_Ca40_starlib", // 62, + "Ti44_He4_to_Cr48_starlib", // 63, + "V47_p_to_Cr48_starlib", // 64, + "V47_p_to_He4_Ti44_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,64 +579,64 @@ 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, @@ -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_Ar36_starlib) { return starlib::prand(49); } - if constexpr (rate == k_p_Cl35_to_He4_S32_starlib) { + if constexpr (rate == k_Cl35_p_to_He4_S32_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_Ca40_starlib) { return starlib::prand(52); } - if constexpr (rate == k_p_K39_to_He4_Ar36_starlib) { + if constexpr (rate == k_K39_p_to_He4_Ar36_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_Ti44_starlib) { return starlib::prand(55); } - if constexpr (rate == k_p_Sc43_to_He4_Ca40_starlib) { + if constexpr (rate == k_Sc43_p_to_He4_Ca40_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_Cr48_starlib) { return starlib::prand(58); } - if constexpr (rate == k_p_V47_to_He4_Ti44_starlib) { + if constexpr (rate == k_V47_p_to_He4_Ti44_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..3a0c8491b 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 @@ -474,7 +469,7 @@ void evaluate_rates(const burn_t& state, // 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 +481,7 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -499,70 +494,22 @@ void evaluate_rates(const burn_t& state, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. - fill_derived_rates(tfactors, rate_eval); - - - // Fill approximate rates - - fill_approx_rates(tfactors, state.rho, Y, rate_eval); + derived_rates::fill_rates(tfactors, 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); + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + // We do this after DerivedRate in case the branching depends + // on a derived rate. + branched_rates::fill_rates(tfactors, rate_eval); - 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); + // Fill approximate rates - 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); + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); } @@ -614,47 +561,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 +608,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; @@ -726,143 +641,143 @@ void rhs_nuc(const burn_t& state, 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 +794,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)); } @@ -1020,13 +935,13 @@ void jac_nuc(const burn_t& state, 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 +974,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 +1048,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 +1132,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 +1169,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 +1235,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 +1296,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 +1316,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 +1363,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 +1374,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 +1426,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 +1439,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 +1488,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 +1553,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 +1616,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 +1681,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 +1702,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 +1743,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 +1764,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 +1986,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 +2019,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 +2048,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 +2080,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 +2109,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 +2144,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 +2158,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 +2174,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 +2211,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 +2228,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 +2240,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 +2280,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 +2302,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 +2339,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 +2361,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 +2369,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 +2412,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 +2475,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 +2498,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 +2537,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 +2605,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 +2629,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 +2674,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 +2696,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 +2744,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/derived_rates.H b/networks/he-burn/ase-iron-starlib/derived_rates.H index 8c2bc81a1..0de295910 100644 --- a/networks/he-burn/ase-iron-starlib/derived_rates.H +++ b/networks/he-burn/ase-iron-starlib/derived_rates.H @@ -7,5292 +7,5296 @@ #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_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; + 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_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, + 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_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 = -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 = -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_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; + 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_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, + 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_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 = -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 = -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_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; + 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_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, + 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_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 = -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 = -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_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; + 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_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, + 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_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 = -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 = -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_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; + 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_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, + 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_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 = -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 = -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_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; + 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_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, + 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_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 = -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 = -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) -{ + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates(const tf_t& tfactors, T& rate_eval) + { - amrex::ignore_unused(tfactors); - amrex::ignore_unused(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); - { - // 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 + { + // 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; + } } - } - { - // 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; + } } - } - { - // 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; + } } - } - { - // 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; + } } - } - { - // 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; + } } - } - { - // 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; + } } - } + } + } #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..e40f90f9a 100644 --- a/networks/he-burn/ase-iron-starlib/modified_rates.H +++ b/networks/he-burn/ase-iron-starlib/modified_rates.H @@ -12,6 +12,7 @@ namespace modified_rates { + using namespace reaclib_rates; using namespace temp_tabular; template @@ -19,6 +20,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 +30,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 +93,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 +103,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/partition_functions.H b/networks/he-burn/ase-iron-starlib/partition_functions.H index 88d94029b..9fd59d303 100644 --- a/networks/he-burn/ase-iron-starlib/partition_functions.H +++ b/networks/he-burn/ase-iron-starlib/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.024785291222403763, + 9.999994999180668e-07, 0.0001259920626667995, 0.0017764212290928272, 0.008665347199341391, 0.02478529122240376, 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.003078257300827377, 0.007778667567807429, 0.01603376935914739, 0.02868269041229125, 0.06934041108806749, + 0.0030782573008273765, 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.00711562379553272, 0.036122649876509136, 0.09416770925148646, 0.17582214798729476, + 0.00026996355655966415, 0.007115623795532719, 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.0026504843609634825, 0.006510758935580232, 0.013783568660113304, 0.04542450669313041, + 0.0008776147834635239, 0.002650484360963482, 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.005180557708084945, 0.0108093677159202, 0.033929817942853414, + 0.0006687763192560828, 0.0021007917908672197, 0.0051805577080849445, 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.1384489068080837, 0.21212628348615897, 0.4130674701171434, + 0.04333627107625303, 0.08256291389970516, 0.13844890680808367, 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-starlib/pynucastro-info.txt b/networks/he-burn/ase-iron-starlib/pynucastro-info.txt index 858109df5..f1cd9a44d 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-22-g7128998de 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/temperature_table_rates.H b/networks/he-burn/ase-iron-starlib/temperature_table_rates.H index c51e30aa1..9734c4de7 100644 --- a/networks/he-burn/ase-iron-starlib/temperature_table_rates.H +++ b/networks/he-burn/ase-iron-starlib/temperature_table_rates.H @@ -129,7 +129,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 +184,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 +410,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 +483,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 +541,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 +617,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 +693,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 +760,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 +827,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 +894,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 +970,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 +1037,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 , @@ -1089,7 +1089,7 @@ namespace p_Al27_to_Si28_starlib_data { 0.15956456967133845, 0.131028262406404 , 0.11867152971749854, 0.10885440491208208, 0.10074990310014315, 0.09349034308733897, 0.08801087732271337, 0.08342160813907236, 0.07881118042428985, - 0.071389996086673 , 0.06485097231961627, 0.04879016416943204, + 0.071389996086673 , 0.06485097231961627, 0.04879016416943205, 0.03729578474369693, 0.03149866705937102, 0.02955880224154443, 0.02858745685191247, 0.02955880224154443, 0.03149866705937102, 0.03246719013750141, 0.03343477608623742, 0.03440142671733232, @@ -1104,7 +1104,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 +1159,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 +1226,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 +1293,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 +1342,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 +1391,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 +1466,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 +1512,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 +1562,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 +1612,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 +1687,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 +1737,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 +1787,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 +1862,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 +2027,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 +2082,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 +2128,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 +2195,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 +2262,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 +2308,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 +2384,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 +2460,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 +2536,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 +2603,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 +2670,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 +2716,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 +2792,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 +2859,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 +2935,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 , @@ -2990,7 +2990,7 @@ namespace He4_S32_to_Ar36_starlib_data { // temperature / rate tabulation for Cl35 + p --> Ar36 -namespace p_Cl35_to_Ar36_starlib_data { +namespace Cl35_p_to_Ar36_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.605170185988091 , -4.509860006183766 , -4.422848629194137 , @@ -3047,7 +3047,7 @@ namespace p_Cl35_to_Ar36_starlib_data { 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.05354076692802976, 0.05164323315183839, 0.04879016416943205, 0.04592893188839973, 0.04401688541677426, 0.04210117601863533, 0.04018178963283176, 0.04018178963283176, 0.04018178963283176, 0.04018178963283176, 0.04018178963283176, 0.04018178963283176 @@ -3057,7 +3057,7 @@ namespace p_Cl35_to_Ar36_starlib_data { // 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 , @@ -3096,7 +3096,7 @@ namespace p_Cl35_to_He4_S32_starlib_data { -1.3758185491345005e+01, -1.0808343906784620e+01, -8.4794158270822066e+00, -6.5712830423609239e+00, -4.9917154092437448e+00, -3.6726124816500643e+00, - -1.5871873034992807e+00, -1.3008457330480694e-03, + -1.5871873034992807e+00, -1.3008457330480696e-03, 1.2377943528014466e+00, 2.2406033006381643e+00, 3.0661907372025525e+00, 4.6279096729575810e+00, 5.7670702138921195e+00, 6.6780905106776620e+00, @@ -3133,7 +3133,7 @@ namespace p_Cl35_to_He4_S32_starlib_data { // 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 , @@ -3188,7 +3188,7 @@ namespace He4_Ar36_to_Ca40_starlib_data { // temperature / rate tabulation for K39 + p --> Ca40 -namespace p_K39_to_Ca40_starlib_data { +namespace K39_p_to_Ca40_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.605170185988091 , -4.509860006183766 , -4.422848629194137 , @@ -3255,7 +3255,7 @@ namespace p_K39_to_Ca40_starlib_data { // 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 , @@ -3322,7 +3322,7 @@ namespace p_K39_to_He4_Ar36_starlib_data { // 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 , @@ -3383,7 +3383,7 @@ namespace He4_Ca40_to_Ti44_starlib_data { // temperature / rate tabulation for Sc43 + p --> Ti44 -namespace p_Sc43_to_Ti44_starlib_data { +namespace Sc43_p_to_Ti44_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.509860006183766 , -4.422848629194137 , -4.3428059215206005 , @@ -3450,7 +3450,7 @@ namespace p_Sc43_to_Ti44_starlib_data { // temperature / rate tabulation for Sc43 + p --> He4 + Ca40 -namespace p_Sc43_to_He4_Ca40_starlib_data { +namespace Sc43_p_to_He4_Ca40_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.509860006183766 , -4.422848629194137 , -4.3428059215206005 , @@ -3525,7 +3525,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 , @@ -3580,7 +3580,7 @@ namespace He4_Ti44_to_Cr48_starlib_data { // temperature / rate tabulation for V47 + p --> Cr48 -namespace p_V47_to_Cr48_starlib_data { +namespace V47_p_to_Cr48_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.509860006183766 , -4.422848629194137 , -4.3428059215206005 , @@ -3655,7 +3655,7 @@ namespace p_V47_to_Cr48_starlib_data { // temperature / rate tabulation for V47 + p --> He4 + Ti44 -namespace p_V47_to_He4_Ti44_starlib_data { +namespace V47_p_to_He4_Ti44_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.509860006183766 , -4.422848629194137 , -4.3428059215206005 , @@ -3722,7 +3722,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 +3798,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 +3874,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 +3950,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 +4026,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 +4102,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 , @@ -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,7 +5477,7 @@ 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_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 --> Ar36 @@ -5486,13 +5486,13 @@ namespace temp_tabular { // σ = 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_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_Ar36_starlib_data::log_t9, - p_Cl35_to_Ar36_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) { @@ -5504,7 +5504,7 @@ 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_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 --> He4 + S32 @@ -5513,13 +5513,13 @@ namespace temp_tabular { // σ = 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_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_He4_S32_starlib_data::log_t9, - p_Cl35_to_He4_S32_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) { @@ -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,7 +5558,7 @@ 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_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 --> Ca40 @@ -5567,13 +5567,13 @@ namespace temp_tabular { // σ = 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_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_Ca40_starlib_data::log_t9, - p_K39_to_Ca40_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) { @@ -5585,7 +5585,7 @@ 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_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 --> He4 + Ar36 @@ -5594,13 +5594,13 @@ namespace temp_tabular { // σ = 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_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_He4_Ar36_starlib_data::log_t9, - p_K39_to_He4_Ar36_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) { @@ -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,7 +5639,7 @@ 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_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 --> Ti44 @@ -5648,13 +5648,13 @@ namespace temp_tabular { // σ = 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_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_Ti44_starlib_data::log_t9, - p_Sc43_to_Ti44_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) { @@ -5666,7 +5666,7 @@ 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_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 --> He4 + Ca40 @@ -5675,13 +5675,13 @@ namespace temp_tabular { // σ = 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_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_He4_Ca40_starlib_data::log_t9, - p_Sc43_to_He4_Ca40_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) { @@ -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,7 +5720,7 @@ 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_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 --> Cr48 @@ -5729,13 +5729,13 @@ namespace temp_tabular { // σ = 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_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_Cr48_starlib_data::log_t9, - p_V47_to_Cr48_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) { @@ -5747,7 +5747,7 @@ 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_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 --> He4 + Ti44 @@ -5756,13 +5756,13 @@ namespace temp_tabular { // σ = 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_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_He4_Ti44_starlib_data::log_t9, - p_V47_to_He4_Ti44_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) { @@ -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,7 +5936,7 @@ 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) { @@ -5985,7 +5985,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 +5995,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 +6013,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 +6075,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 +6085,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 +6103,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 +6121,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 +6139,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 +6157,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 +6175,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 +6193,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 +6211,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 +6229,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 +6247,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 +6265,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 +6283,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 +6301,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 +6319,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 +6337,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 +6355,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 +6373,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 +6391,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 +6409,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 +6427,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 +6445,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 +6463,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 +6481,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 +6499,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 +6543,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 +6553,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 +6571,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 +6589,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 +6607,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 +6625,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 +6679,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 +6697,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 +6715,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 +6745,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 +6775,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_Ar36_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6793,15 +6793,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_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_Ar36_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_starlib) = drate_dT; } } { - // p_Cl35_to_He4_S32_starlib + // Cl35_p_to_He4_S32_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6811,15 +6811,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_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_He4_S32_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_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 +6829,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_Ca40_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6847,15 +6847,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_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_Ca40_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_starlib) = drate_dT; } } { - // p_K39_to_He4_Ar36_starlib + // K39_p_to_He4_Ar36_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6865,15 +6865,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_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_He4_Ar36_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_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 +6883,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_Ti44_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6901,15 +6901,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_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_Ti44_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_starlib) = drate_dT; } } { - // p_Sc43_to_He4_Ca40_starlib + // Sc43_p_to_He4_Ca40_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6919,15 +6919,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_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_He4_Ca40_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_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 +6937,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_Cr48_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6955,15 +6955,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_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_Cr48_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_V47_p_to_Cr48_starlib) = drate_dT; } } { - // p_V47_to_He4_Ti44_starlib + // V47_p_to_He4_Ti44_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6973,82 +6973,82 @@ 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_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_He4_Ti44_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_V47_p_to_He4_Ti44_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; } } 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/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/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 From b3fdd1cdcdf0c55e2a7451ff9be1327f13faf153 Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Thu, 27 Aug 2026 15:49:48 -0400 Subject: [PATCH 2/7] update --- networks/CNO_extras/Make.package | 2 + networks/CNO_extras/actual_network.H | 262 +- networks/CNO_extras/actual_rhs.H | 679 +- networks/CNO_extras/approximate_rates.H | 28 +- networks/CNO_extras/branched_rates.H | 31 + networks/CNO_extras/cno_extras.png | Bin 52930 -> 54058 bytes networks/CNO_extras/derived_rates.H | 4786 +- networks/CNO_extras/modified_rates.H | 3 +- networks/CNO_extras/pynucastro-info.txt | 2 +- networks/CNO_extras/reaclib_rates.H | 4329 +- networks/CNO_extras/tabular_weak_rates.H | 99 + networks/CNO_extras/temperature_table_rates.H | 2 +- networks/ECSN/Make.package | 2 + networks/ECSN/actual_network.H | 72 +- networks/ECSN/actual_rhs.H | 259 +- networks/ECSN/approximate_rates.H | 28 +- networks/ECSN/branched_rates.H | 31 + networks/ECSN/derived_rates.H | 24 +- networks/ECSN/modified_rates.H | 3 +- networks/ECSN/pynucastro-info.txt | 2 +- networks/ECSN/reaclib_rates.H | 1719 +- networks/ECSN/tabular_weak_rates.H | 67 + networks/ECSN/temperature_table_rates.H | 2 +- .../he-burn/ase-iron-starlib/branched_rates.H | 31 + .../ase-iron-starlib/partition_functions.H | 12 +- .../ase-iron-starlib/tabular_weak_rates.H | 83 + .../temperature_table_rates.H | 6 +- networks/he-burn/ase-iron/Make.package | 2 + networks/he-burn/ase-iron/actual_network.H | 436 +- networks/he-burn/ase-iron/actual_rhs.H | 843 +- networks/he-burn/ase-iron/approximate_rates.H | 694 +- networks/he-burn/ase-iron/ase-iron.png | Bin 78211 -> 90718 bytes networks/he-burn/ase-iron/branched_rates.H | 31 + networks/he-burn/ase-iron/derived_rates.H | 7494 +- networks/he-burn/ase-iron/modified_rates.H | 18 +- .../he-burn/ase-iron/partition_functions.H | 12 +- networks/he-burn/ase-iron/pynucastro-info.txt | 2 +- networks/he-burn/ase-iron/reaclib_rates.H | 5935 +- .../he-burn/ase-iron/tabular_weak_rates.H | 83 + .../ase-iron/temperature_table_rates.H | 2 +- networks/he-burn/ase-test/Make.package | 2 + networks/he-burn/ase-test/_parameters | 4 +- networks/he-burn/ase-test/actual_network.H | 252 +- networks/he-burn/ase-test/actual_rhs.H | 373 +- networks/he-burn/ase-test/approximate_rates.H | 630 +- networks/he-burn/ase-test/branched_rates.H | 31 + networks/he-burn/ase-test/derived_rates.H | 5328 +- networks/he-burn/ase-test/modified_rates.H | 18 +- networks/he-burn/ase-test/pynucastro-info.txt | 2 +- networks/he-burn/ase-test/reaclib_rates.H | 4275 +- .../he-burn/ase-test/tabular_weak_rates.H | 32 + .../ase-test/temperature_table_rates.H | 2 +- networks/he-burn/ase/Make.package | 2 + networks/he-burn/ase/_parameters | 4 +- networks/he-burn/ase/actual_network.H | 242 +- networks/he-burn/ase/actual_rhs.H | 351 +- networks/he-burn/ase/approximate_rates.H | 630 +- networks/he-burn/ase/branched_rates.H | 31 + networks/he-burn/ase/derived_rates.H | 5126 +- networks/he-burn/ase/modified_rates.H | 18 +- networks/he-burn/ase/pynucastro-info.txt | 2 +- networks/he-burn/ase/reaclib_rates.H | 4199 +- networks/he-burn/ase/tabular_weak_rates.H | 32 + .../he-burn/ase/temperature_table_rates.H | 2 +- networks/he-burn/cno-he-burn-33a/Make.package | 2 + .../he-burn/cno-he-burn-33a/actual_network.H | 474 +- networks/he-burn/cno-he-burn-33a/actual_rhs.H | 933 +- .../cno-he-burn-33a/approximate_rates.H | 630 +- .../he-burn/cno-he-burn-33a/branched_rates.H | 31 + .../he-burn/cno-he-burn-33a/derived_rates.H | 8658 +- .../he-burn/cno-he-burn-33a/modified_rates.H | 18 +- .../cno-he-burn-33a/pynucastro-info.txt | 2 +- .../he-burn/cno-he-burn-33a/reaclib_rates.H | 8221 +- .../cno-he-burn-33a/tabular_weak_rates.H | 115 + .../cno-he-burn-33a/temperature_table_rates.H | 2 +- .../he-burn/cno-he-burn-34am/Make.package | 2 + .../he-burn/cno-he-burn-34am/actual_network.H | 558 +- .../he-burn/cno-he-burn-34am/actual_rhs.H | 1103 +- .../cno-he-burn-34am/approximate_rates.H | 630 +- .../he-burn/cno-he-burn-34am/branched_rates.H | 31 + .../he-burn/cno-he-burn-34am/derived_rates.H | 9926 +- .../he-burn/cno-he-burn-34am/modified_rates.H | 44 +- .../cno-he-burn-34am/pynucastro-info.txt | 2 +- .../he-burn/cno-he-burn-34am/reaclib_rates.H | 9493 +- .../cno-he-burn-34am/tabular_weak_rates.H | 131 + .../temperature_table_rates.H | 2 +- networks/he-burn/he-burn-19am/Make.package | 2 + networks/he-burn/he-burn-19am/_parameters | 4 +- .../he-burn/he-burn-19am/actual_network.H | 234 +- networks/he-burn/he-burn-19am/actual_rhs.H | 351 +- .../he-burn/he-burn-19am/approximate_rates.H | 630 +- .../he-burn/he-burn-19am/branched_rates.H | 31 + networks/he-burn/he-burn-19am/derived_rates.H | 4226 +- .../he-burn/he-burn-19am/modified_rates.H | 44 +- .../he-burn/he-burn-19am/pynucastro-info.txt | 2 +- networks/he-burn/he-burn-19am/reaclib_rates.H | 4415 +- .../he-burn/he-burn-19am/tabular_weak_rates.H | 32 + .../he-burn-19am/temperature_table_rates.H | 2 +- networks/he-burn/he-burn-28amnp/Make.package | 2 + .../he-burn/he-burn-28amnp/actual_network.H | 360 +- networks/he-burn/he-burn-28amnp/actual_rhs.H | 769 +- .../he-burn-28amnp/approximate_rates.H | 694 +- .../he-burn/he-burn-28amnp/branched_rates.H | 31 + .../he-burn/he-burn-28amnp/derived_rates.H | 5998 +- .../he-burn/he-burn-28amnp/modified_rates.H | 44 +- .../he-burn-28amnp/pynucastro-info.txt | 2 +- .../he-burn/he-burn-28amnp/reaclib_rates.H | 5703 +- .../he-burn-28amnp/tabular_weak_rates.H | 83 + .../he-burn-28amnp/temperature_table_rates.H | 2 +- networks/he-burn/he-burn-33am/Make.package | 2 + .../he-burn/he-burn-33am/actual_network.H | 570 +- networks/he-burn/he-burn-33am/actual_rhs.H | 1161 +- .../he-burn/he-burn-33am/approximate_rates.H | 466 +- .../he-burn/he-burn-33am/branched_rates.H | 31 + networks/he-burn/he-burn-33am/derived_rates.H | 7850 +- .../he-burn/he-burn-33am/modified_rates.H | 44 +- .../he-burn/he-burn-33am/pynucastro-info.txt | 2 +- networks/he-burn/he-burn-33am/reaclib_rates.H | 7007 +- .../he-burn/he-burn-33am/tabular_weak_rates.H | 131 + .../he-burn-33am/temperature_table_rates.H | 2 +- .../C-burn-simple/Make.package | 2 + .../C-burn-simple/actual_network.H | 14 +- .../C-burn-simple/actual_rhs.H | 78 +- .../C-burn-simple/approximate_rates.H | 28 +- .../C-burn-simple/derived_rates.H | 24 +- .../C-burn-simple/modified_rates.H | 3 +- .../C-burn-simple/pynucastro-info.txt | 2 +- .../C-burn-simple/reaclib_rates.H | 363 +- .../C-burn-simple/tabular_weak_rates.H | 43 + .../C-burn-simple/temperature_table_rates.H | 2 +- .../ignition_reaclib/URCA-medium/Make.package | 2 + .../URCA-medium/actual_network.H | 80 +- .../ignition_reaclib/URCA-medium/actual_rhs.H | 326 +- .../URCA-medium/approximate_rates.H | 28 +- .../URCA-medium/branched_rates.H | 31 + .../URCA-medium/derived_rates.H | 24 +- .../URCA-medium/modified_rates.H | 3 +- .../URCA-medium/pynucastro-info.txt | 2 +- .../URCA-medium/reaclib_rates.H | 1767 +- .../URCA-medium/tabular_weak_rates.H | 75 + .../URCA-medium/temperature_table_rates.H | 2 +- .../ignition_reaclib/URCA-simple/Make.package | 2 + .../URCA-simple/actual_network.H | 26 +- .../ignition_reaclib/URCA-simple/actual_rhs.H | 137 +- .../URCA-simple/approximate_rates.H | 28 +- .../URCA-simple/branched_rates.H | 31 + .../URCA-simple/derived_rates.H | 24 +- .../URCA-simple/modified_rates.H | 3 +- .../URCA-simple/pynucastro-info.txt | 2 +- .../URCA-simple/reaclib_rates.H | 363 +- .../URCA-simple/tabular_weak_rates.H | 67 + .../URCA-simple/temperature_table_rates.H | 2 +- networks/nova-li/Make.package | 2 + networks/nova-li/actual_network.H | 206 +- networks/nova-li/actual_rhs.H | 771 +- networks/nova-li/approximate_rates.H | 28 +- networks/nova-li/branched_rates.H | 31 + networks/nova-li/derived_rates.H | 24 +- networks/nova-li/modified_rates.H | 3 +- networks/nova-li/nova_li.py | 10 +- networks/nova-li/pynucastro-info.txt | 2 +- networks/nova-li/reaclib_rates.H | 5967 +- networks/nova-li/tabular_weak_rates.H | 67 + networks/nova-li/temperature_table_rates.H | 2 +- networks/nova/Make.package | 2 + networks/nova/actual_network.H | 116 +- networks/nova/actual_rhs.H | 463 +- networks/nova/approximate_rates.H | 28 +- networks/nova/branched_rates.H | 31 + networks/nova/derived_rates.H | 24 +- networks/nova/modified_rates.H | 3 +- networks/nova/nova.png | Bin 61640 -> 59726 bytes networks/nova/pynucastro-info.txt | 2 +- networks/nova/reaclib_rates.H | 3389 +- networks/nova/tabular_weak_rates.H | 32 + networks/nova/temperature_table_rates.H | 2 +- networks/partition_test/Make.package | 2 + networks/partition_test/actual_network.H | 28 +- networks/partition_test/actual_rhs.H | 89 +- networks/partition_test/approximate_rates.H | 28 +- networks/partition_test/branched_rates.H | 31 + networks/partition_test/derived_rates.H | 328 +- networks/partition_test/modified_rates.H | 3 +- networks/partition_test/pynucastro-info.txt | 2 +- networks/partition_test/reaclib_rates.H | 255 +- networks/partition_test/tabular_weak_rates.H | 32 + .../partition_test/temperature_table_rates.H | 2 +- networks/sn160/Make.package | 2 + networks/sn160/actual_network.H | 6354 +- networks/sn160/actual_rhs.H | 12438 +- networks/sn160/approximate_rates.H | 28 +- networks/sn160/branched_rates.H | 31 + networks/sn160/derived_rates.H | 24 +- networks/sn160/modified_rates.H | 3 +- networks/sn160/pynucastro-info.txt | 2 +- networks/sn160/reaclib_rates.H | 118963 ++++++++------- networks/sn160/tabular_weak_rates.H | 1379 + networks/sn160/temperature_table_rates.H | 2 +- 198 files changed, 143289 insertions(+), 143165 deletions(-) create mode 100644 networks/CNO_extras/branched_rates.H create mode 100644 networks/CNO_extras/tabular_weak_rates.H create mode 100644 networks/ECSN/branched_rates.H create mode 100644 networks/ECSN/tabular_weak_rates.H create mode 100644 networks/he-burn/ase-iron-starlib/branched_rates.H create mode 100644 networks/he-burn/ase-iron-starlib/tabular_weak_rates.H create mode 100644 networks/he-burn/ase-iron/branched_rates.H create mode 100644 networks/he-burn/ase-iron/tabular_weak_rates.H create mode 100644 networks/he-burn/ase-test/branched_rates.H create mode 100644 networks/he-burn/ase-test/tabular_weak_rates.H create mode 100644 networks/he-burn/ase/branched_rates.H create mode 100644 networks/he-burn/ase/tabular_weak_rates.H create mode 100644 networks/he-burn/cno-he-burn-33a/branched_rates.H create mode 100644 networks/he-burn/cno-he-burn-33a/tabular_weak_rates.H create mode 100644 networks/he-burn/cno-he-burn-34am/branched_rates.H create mode 100644 networks/he-burn/cno-he-burn-34am/tabular_weak_rates.H create mode 100644 networks/he-burn/he-burn-19am/branched_rates.H create mode 100644 networks/he-burn/he-burn-19am/tabular_weak_rates.H create mode 100644 networks/he-burn/he-burn-28amnp/branched_rates.H create mode 100644 networks/he-burn/he-burn-28amnp/tabular_weak_rates.H create mode 100644 networks/he-burn/he-burn-33am/branched_rates.H create mode 100644 networks/he-burn/he-burn-33am/tabular_weak_rates.H create mode 100644 networks/ignition_reaclib/C-burn-simple/tabular_weak_rates.H create mode 100644 networks/ignition_reaclib/URCA-medium/branched_rates.H create mode 100644 networks/ignition_reaclib/URCA-medium/tabular_weak_rates.H create mode 100644 networks/ignition_reaclib/URCA-simple/branched_rates.H create mode 100644 networks/ignition_reaclib/URCA-simple/tabular_weak_rates.H create mode 100644 networks/nova-li/branched_rates.H create mode 100644 networks/nova-li/tabular_weak_rates.H create mode 100644 networks/nova/branched_rates.H create mode 100644 networks/nova/tabular_weak_rates.H create mode 100644 networks/partition_test/branched_rates.H create mode 100644 networks/partition_test/tabular_weak_rates.H create mode 100644 networks/sn160/branched_rates.H create mode 100644 networks/sn160/tabular_weak_rates.H 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..83b4fea09 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 @@ -354,7 +349,7 @@ void evaluate_rates(const burn_t& state, // 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 +361,7 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -379,86 +374,22 @@ void evaluate_rates(const burn_t& state, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. - 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); + derived_rates::fill_rates(tfactors, rate_eval); - 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); + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + // We do this after DerivedRate in case the branching depends + // on a derived rate. + branched_rates::fill_rates(tfactors, rate_eval); - 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); + // Fill approximate rates - 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); + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); } @@ -513,75 +444,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 +481,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; @@ -655,156 +544,156 @@ void rhs_nuc(const burn_t& state, 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; @@ -867,49 +756,49 @@ void jac_nuc(const burn_t& state, 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 +807,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 +816,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 +893,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 +917,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 +973,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 +996,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 +1021,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 +1047,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 +1071,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 +1086,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 +1099,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 +1121,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 +1149,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 +1169,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 +1181,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 +1199,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 +1217,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 +1252,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 +1264,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 +1281,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 +1292,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 +1317,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 +1331,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 +1342,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 +1365,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 +1381,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 +1406,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 +1415,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 +1427,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 +1466,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 +1480,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 +1516,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 +1532,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 +1543,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 +1565,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 +1583,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 +1594,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 +1613,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 +1634,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 +1665,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 +1694,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 +1710,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 +1728,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 +1745,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..6a8556dfc --- /dev/null +++ b/networks/CNO_extras/branched_rates.H @@ -0,0 +1,31 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_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 c87507a742946eedc4cd5197e633a56996d1de1f..9278fb331d5913a5fa88c39aa2069208159fdd63 100644 GIT binary patch literal 54058 zcmZtuby${N^92kOVgLdnA*h5>lF|(d2ofS7(jg$--JsH~(k&nY(%lUbN=ui7gmkxl zbHe@nzV|rZ_Yd#Di!=6~J+o%5HCKR~ti*LpQcM&Sl5c#@5)kR`G$-4d>H&FZPDEeZ;*4)O;zQ#ivI1*JbqQtYv!Q^M+`qtlB$vbHV9 zkL$J4BuwdEwchWrzfTc75v#fCk9m~`k0dbj*Cj$Z>$lkQa+mZiUw3}2RgO*nfm0HhDBI#2rg`pia)d`yS)RI3Ss-lN>RxCUY7ph=S3w&cBg_ihQg zaJ>AgICFL|UGAVt-TiG0vw0Q^LpiC43BlHj{57@RD|@3ul}AMDdpx;Nn-h5+jS8%Ha4!P zs!Elk%h3!yf6@wR2L~=*Ufv;Q^jfXt4UfL5DKb}A*EI8vj*ga=7P)#4_q4UWmEpyW z`hR6lbBFGswp>CkQe7SX@#DMr`1sQAH_mVG*xubu!_)4wVy$Kx{Vpg7Yk7HDeEeI; z?Y6_MxsWnyT3Ym9zklnOOpcGofBsB`rD!6E|LA-r#A2hu!<+Ybm{?C3<`zt9d7~5t z>@IOuJT)`R=@VV4Ru@KDU0p?K@9bn7ONxy(9yuuZ_}?OuVKV1oYG~vRYihOSnpRg< z5{{dGo1P|@kdV;T(+ernu5*j+jAV#5N*tmY*u*^FB^@35$iOo5@glorh32v!KV*h- zR7KlD@8+thONJBSoquLauJ@0lqL%ldI^UhC?y^IFG60#e1w@gkZ zril7Qsf47zE%|TzbujE#hV&2CCo>i4{~pfa!p0sROnX{8I+i;aQ%k8`ylso|!Uj~tTo)(Jzd64@VL+oPDby)k+E<%J1lh1BqoDO?OTbtndf4}aHM|7Ww z;(WztQ$7u@^!>@@zT6Tw%q;!?c>#TEq8y12|9e6R(EsOCUf zOiWz8ew|uCAmP&|3Nv%_T+Jdn)T(h7Q!QAG^JAuCFr25U2Qj}oRvPp@nk9|9P~A5z z?f&4`muc=N`(onaa8u>k(kT504<6)bR!8Nkm)p!VVQ`R!NG2DTmQqtuc`N0r_2p^u zYiMdp*C~wRO!-H$N3Et$H;9m)S@I+{0*%O-c;X;YRHN88Nd) zfy09YKKnrHxo?7-X6j9Bc67aJTj_IsOQc7iF0wmK@3Ngt0?&uTLnqT{-2zA`Wfqer zYivI(z6Fyc2srnT>EF5|;Pk%Ic2TVwo05$5BIDg;)U1j~lL%9*4tA?M+gJbi@nepr z@8}&qJAa5Sb@(X}qe{c_Kt`^nFP*QfvQ|FC z+{{>1R1_oNTvYm$5nH$N9s>wu`d+>yxHD-ED1t%$iklc^bUTS~cwu{Ovz}l&BIm1TChgrx&{H znV@`C&X>(r%C)kwne9yxHJhmTP#w+mf&<#Wi-LxRc6hqe)6vzXKV9d}VbuGE zrT!E@z2C;u;CYgOao>|0U272O;<-u#$Z>K0O_--y{cUTm4T)S)U+fOY(}Cy0&%7>Q z&wP;)`ea2$T3YXW6cbVHmxqa^>cXEfS~xE9Bf&jR&Oxiuc`e;b8}tY7HVDNPU78G+ga=WW#5-wAr2`&f;AOMH`B=yg$?xk|ECu zez%H>iuWHrpq3BkR@hn~-g?_ax>p%8cm;tJ2+PmfPeHtNOE zzq;=IX)Q4xIQ)CE0gwD((>B?CpJd?6v$@>zsj7UJK@(0Wn$`I|YAczCxz`#VYEDqd!(+EECJty2^>Q(!Wfo z7g{}1tKupy2+CqxHfsZdDCx>^J-{D93^x$A5gfbohftZz5fvPEyNX!?RD|n@9 zT?xFlNa#;ZO=0Z23Oa97xgYN~4h-C6VPSdak62}hdw`ue&X zgsjeZ%%+-N zn3yikGxr4r6D7lGNXjI{#9moi_WWw}A`$iw(5!Yy7xBRiCKo1)l+w2gg(8Q5K`4$P zWl&*AbCpgSf~2BKH;&|W)=-z&u1<33^S!wv=n}!CUbeY6tUUnxi53?s5_YX-vg z_3PK0M~lhquiM{?#CQ2Xuwgnit^N7axtQ$Poh0ab_&ZvA`|fnMGRs(*`S+#1G)Y-m z=G_{|7#VO-FI~P&S~fa9ev^cx<9Kfc>ohn!n*seY_AiJzgC_55B_@NI+S=M*p2dq7 z8*~NcRF_n{?0uETy&Ngk3NiNF!h#uzDZa$+f{l?vJ-3}M?i}sWdrD(NyQHoy-8%;(EC~X&hJlKv26FP2RIxFrG`d&Wm@g0td^YLh0}CYx9CD6?y*i7%R85jCskx!xOW)Y2|UeOk3r+k+i`+_bnt1p6*AIV7%>Ow|upO zxi2<}NF@DB9@l-dx;Z^Py{+9{w_h8NV#0{1)fj}dht<|P^`&ERC=Nuk2W=p6iKxpU z$Q<()cLk(mq^6fJSuSM5wzFGIRJbkr2L*jEf0i*&sMCCTtkkq^b+ou|*$zo$lhuyI zBR1PV*n8w)882Ta6_b&{M)AWXUsx-jW-i(HwoUcYcN}R=WaCj?a@S}jvUHj z7I~bxK-u&Hlo${YfLshZChNn^88_6=s>KEZu;_04qlUf>Hmf77F8iwiwYBbV7t4nj zH6WpdX`mcIr&M7*cNqeZZueHHn)$9YH6(43K>)0DOzU+sA)%qnCDWcJCMGGxY=o~N zU!87v{!4r8b-Cr+H-!w@yF!qY(ZbB(q(eM)Ii}Sb570o|tN$`wPr$DzsXlQH4GHNQ zK30qYTw(>wEOM|hQ5g=<2U!FtrIIT{xvKEqZ`-&mCSnp2?jUfW#2r3~P0Eqk&=Zjk zM>C~-TSn0(7UMfrm?Fv%oXVr6w6H^H{jOnQG3-`cyGcWE?Dq(;QrgV=jDSiNk|5H+OgEiS^XO20<4j1tn&r!ur0Nd1GxG){5*)MdIv_d6NlJe2lqp zdK(%ZUB2T zTFC$`hCx5sCyl&%Yfn!;+|hZ*0H6yLNuO?y*0tq%Q4tX&1FJ|NMNQtE-zSmm*R)T@0Bhl0lhkOl#yI7~}8V8?!nu7to)Ih@f4&cFl-` zw5YgP^6Aruq%8-K>H71vg%R+|=dfzTqxH=m`Y<{vc}@E+N_O^eWi4l)x9C@(aqtld zQ!g>P5gHm=bNnaU*FtAzX69$si;RXjQBhHO`tRMz2S~5!r2GZe@1fJ?t1`1ug(X&q ziTe*81Pp6?PU8J?b8|BSr1BPv1X>*7-gh5TUmNX7W!H;sb=oaHDOGz`YBGqu0htZS zP7n}!(BfFRVv0FBItoD(iu`FVWKt`61(jAQOC2iZvT~)3K9m5g1osY&JdH|)RU~?U zr-cdWjuhxHsus2MayqR~RC1X7q|+YG-Q3*7&n~AL86CZG=Z;3|N_0zG8!@lJWeO&y z5P0m(ZvKq|s~M5mxw($c&e`ziLMc$dkLnf+3LX+*E?eAhIinjuZJC;?8zI!Aehn*C zLC(d+CWF)s7o9KwYe^n&IEPnWdahh62!4 zye-P^`!mU_xVYTvD5G`m{DACQeXHSSzgLDF)+cx&h@Mv3{QkAS+nJY_2WeH9V0tI* zksn$jA^+i0ulm}Uz9gh91l~%1RW1H9iuP1j_a0=9Rx-zfCO2n0zQn#~_LEiieI}(x zUoPjtM@YVw=EQND7MTpv7bh^l3qu2>8^&Pv@Obj%&rmK_dE3W{tjt165&u+42~H>q zsd$Ne_C*fYtX%D_pw>5^_+G!=U+e0K;4KA(k2)uMVS)xuF4|E@=1q|N;i~*Ds9ln7IM*)`&`AuOtqM-x+CN^^40$H z=g*svC{qWPt?cYt`uaXRi|5*!betx+JDjV|ojrI+ap%sRCBO_p#4Kedcai>gb)?YA z$?4Oe$=3GvY{Of01X~%ozXu@GPD&vnfO3=%c*>hjL{Twf5WO90@kojB&7`CxfRcE` z#Lv77HU$c$L%*^cM?EK-pNcr}$N~M47PUKh56{jS- zd;uWu0l>r7)}GcilrQoIQYVdB*)cFMkiKtlTv{z%D$?KI{}r@}L(D$V+4m0&U`-H{ zkOYKq_J`zoyUAo&`uv0;8zq$lAtA#iYT7-IhY_GOOBhiEOA z4){Hj&0mfE$MT(%alXSjT{+ZRU-lhaKGzd|cz28BCIfw$E> zO*{nF*{k$B-fYTw2kiauEs$E!wK2b(V+1rS1;-frGt~!?QqY11WM^lWO0#ZmZ|g$E zD%y4?`6L=J6v$%A{7xmRy_^clY0Oe#8`<3NI`jwEgYI6zz}Q;ONERZ{%wJbZ5y7~8 za2u2KCJwU>#5#18@>N>bbi~=Pq7e9hDN$C`W&N5Wri6u-)oi}J=~kB92eF>)r9Hlz z-LE_zKYk3qaRV|$wnjY_H2?clc~t7rkB=BaVt&riTG=-4Z{4xsQ=p^{p zuUFX`+7tZet@JsQHt{5X_+#o+TS$p;K#z(~k_LYFID5IHeT^H#*6*)dclh1Cp@$Hd zcDX~HD;`4XcDmID07iAUiu!T(;I`!~{@=R7&=p?QH}7(8s^#r#qq*GLoeKKtS#(*i zE%Z0k9HQK=>FMO>!escJW$0ZKgsxW;pHh1&9i2t>lo9>wv&hl=HRpJqXu5=c0>dzLDmAWnYis zq+@ZLe@Eu#m$k$@JJh+(Zt&w5KutsFTZppq0S-YSzKT!@8qZ_Gx;y6{+NGy>8j#49 zd3qtdmcggKFE(s{uYW8qUmQQsKJ4waoKm$q*?4Z~gGm?zU{gApSsyAE^$;mO5z#lG zRXW|2KWUib%!Sp8q|#VgwRw6~ZD5mYH7i!^9c{Qe*xKs-h+zdPYP*YjnxN{|oY(f= z-f!rjQgxbrsck$cTbRy|lE5}|#^2WphgSQ2uPk3QF5OC3=s-GC0Jn!bJ;I{}I_SV) z7-S(}k2cxuBhFpEh$AK3H`97FQ#XYE+BzO?uIdGSJe@Oz1Sh^WR;pU##A-T}!>V4+ z2oSu=Zn^2jb3y7{GW`Ul{72d4Q)c=@H4dr@`=0U0d*jjxE{fHeWBA~{p$L1Y`~>&v z)n6gpQ?DA{pd!6GuoAXgv#qXqt>3=+wzoe`O-;>IEnX1i+%uI~`0X~1iAj!9s=+|y zgadTh@xjJ(=yo9gUtv(n`L#LIeDLx)bl6Knxwk`Zb2GmjV8Gfc2uI>>_QT@q+foWc z!oCMSKDe~w4-?j!f`p>OZ_3Nd+pUd70^kJTPSTygD{5!QLCm5>#lV17sum)Z-qhWV z0~xugxfzP&eMZLM-d?$cgaoNm!!lo#E5dnS^{_Xvu*g3xdOmIr5{QO?fui~8Ne~eg zHT4bX1P_yX68R-uT=+~%Nz)Yqa&wt1EG(dk;Smvu13-t$jyuSxI~!HA$CKmePJ*tB zdCsJeIeTGST*8-$7Q4-RHb>HHp*`6hZKdHZo4>f*N< zbd3lpfwk|kZd%WuKPTn3kO3?xooPeq&3m4}ww`|PuKf{E(b(#Xi$cCAtCU@wBmJZ9 zM@B{vE;)+*M01W(2Hm)w3pF1@9(roH{Ue!s3@KQY-cGOe7qu4J_ZH<%^9gPXC75T= zyjE{D0je`#G@8V7_O8uds~>Lf&6hf#BIyZ5RNkEz8z-ts=|dE{#p8sRe;8NRncUt) zhpY+O*W=I1vR(dc_Wqpw4ojGA@(VZTvDm+k-FCt&{OrxjzZ^ANRYkYM-Z{IrME^vQ zp4&Pbs>QDzU@(JfhN5&qncO@iH2s^d=(LcofrU%>@EtA%Z26TNBZ3 zHGEcF_AIJ#*d`Uilmj!ETUXDekl7D9CWi$tC*zU^`?z|?sG}th@P$xBChz5F7CAj# z%Bi{a>hEv%CyzfP$KF1qtkX z(;pF%I?fyS`}<8w?}w2W3t%L9Sb%+vJhi0vPoz<91zrkgzUD=Go=u^;xC-U^f1h1? z`rl{!QXctn8a5V9m43%Rr^vVDK5Xic;0t-<9Y~+^=>i;7ZYsXsxbkWpx84^$KBr;* z-u-v)J%sJMew*u-`Og0SLNl%~#~2Ygc@MBel`ebq&<16|aRGdzUNP1rDRUDN{=)yB zav-(jIGf6Rx-JoLfPAhRXEOs8Rm)OLOw29dft%r|TS0>9jCfFDHi}=WrkPqgiFN*j z@?S14ArgV}_U+r6{V`LYbx)u*GZnM&p{sh5uD}ZT^s8c4Q;ur!Ek3)e&_`mT2n!1XU)4~g|6Qtv z>&1Cc%hUXK^NH%8KNZuWE31Sb5MaUqfrq^hY;H!9OJJS*3F&@YYwL%&I4K}o`WBIA z0c!b&f*0>oVn(DP54~8wPSQk-Z#o2y?r)?b=}FAVxh?L@wT1OKoEL>bfkhz*qnhZW|9~@*Llzq}lchA&aGZ1lrIj0{lx6E)oSO?IA@;)KK%uWN~ zpS<7@4Z@9!#ZsP!j(?FqGf9H|Ld{ zOiueeiGy!pz9al+ru^L7JUuvl=a-?lh(LK45GuNt&VZlc_53Svm+$moS}$L#HiqAk z8ALS{gp`Iv+7GNu(6IW2Y9s&We;aNwknwyGAY;12+L%VQLkL`JyYUKnZ>6naGb_2r zAtf|hxM70(w{G0HaSC1M?oyxEVv=k3*V1Xp^T1Vj*5s%E^bijhoe8rf;#9HXiDo?& zlU7a4O9om0koB zWoIZUKr{ZN=Aoe|K&C1=UtFormoDq#)cN~K8k2Z42hyA$TLp=WClFEbx`@e_7nj+3 z*su2Lj=1$OaqERpmkwv{{CpSCT!cOS#hIPeq0xKPdHE;`V3$hbf1jbdej!o4yjZDO z`A>rkeQJe-O^A3luZ}NrRfqGxfJo)|aGnd5{@YlI05S|dhVFOi<+K0G0Xo+I_t}r< zpCzKc2m*-@!Ke>zUtEv%|2}i^yhQ)IUaV~Xqm1$?9&A&sYQ~FuQOo}K(h(TvX)RUk zza4#ZLDG~jz^%{UDB{*N@+is~(W~-N=lNHl3HmBt+Xd`s7Hwd*?v) z)YNqK>eWXn73CgX%N-;dJoYg;n0i0Rgn(W14-KW^;)=@2VHE8G)O>h+446h7fQ}r! zbPszOKz1m+%|Hux{P;n|%}oq-GBNQkU~z9>U+8lDrP8Z1c1$?c9L&bPiENM<$w?jJ zi9}pO&erUWk4Z`0&@GMBdkO>XOv%bxIMM^kGd?M)6rhu3XknnMZ}nJcyCGcU(OoZa z^n{4;kFd%isJyyBVF07#he(J}E_H?H=I6zpKD`Q!=A9xTzFRuVMzBV+RK5&kZq6X!IlAb;gm`>u6 z&i6?q&9Xc{intFBr)mx&xP;vNrku0g9Nt_viTNpNVdNkP>U0u10|=|h69A%V<5Gg z{ctl3y5fA#Mk}LL%U+}W;RqX7-_0CQyld2WmT760=o0H?Eb)qe7iPsvl~*bS&-~rG_&R`qKXO$O{EUk+Wh8Yub1m92xZ}orMD1_Q~pJg zxlp*yC2-c%<~^7z|I2W0Zq9iz(XqmA`QsDQ(6BHh;p;;tFR_?BP7;cbi|YjV&1?Th zF#lHT;Nq4AB#xg$w@>j3L{{~1Mle2qh&~MVnCOicy z|1Mw5kjZf`Op+@rJ?$B;u5l>CHBmHZkunx7n5e zAbZtn>fSBc@xgJ%f?w-5987mH+bLzf%vOpVS=BgTpr!Te2&YXOG{Ksv2W1r4U!$$6z|Vfa z2mU?IRZ_3U2M8LANVs&(K%uk&pfUi)q6FR@&2q$YqM{Kx1tv^ zukCqO`qG5H8@jI}&|yF##!G)kV)Lj)L?KV$i#7E_0sOAH{uGPHgv^vU*FjI zrv6%AU$rzZ^%Rs*5KBjm#^Em?0bm(~i@`-(K~X?1CK4lN(1mV48DoE ztu}JM@#iZW9)Xs?#@u`^@c7Xq6oh7iWk-199#dIx{~(AK$dzjrLj=L=z9bg<7tDYu&6P3(y+CkEJ~q2T(gK z@!UbV%Th0A2KEl|CIG^~&sWVK-hs}2r-L>*;;_`4uFKA4rCThW{h!)rTxz7+!*jO= z68iqjA6Rbh=t$A1v;h^fYl#QMC1q{*Cjk9GcliXM&24W`87w(LKPwHoNWpM|nL7$Z zh*qr&iMx1;+(YYGF+_9*;|NRbF1}^$UeuF67$Y^#?C_!}IU1Gy1-0ts79hGMfvR|u zl(ZA}N=!`5TgOvTkpKZyp!L};_xoHZ&upG12dksa;6`AyVS+{t?>tZI_ky;=Z7swa%4H8i8?Xa}G(H(wH^h^4&CvY(>oUt}S?=U7pqCpCj)CP3bii_zF2^!1IDf{}i0MiG^5l0Xf9QS?0ggr{rU8y_rcy2`XbIeE zJF}kuPRIe4&I7VOY6=lac?H?*4zG=*Ah?&Q}U(<2m9$4Baemph;)0G}?Jasr|rP#N($tH2&| zBTRNU8lvpsHpFFRWks}9#CZad{o(!lS4KBbGvR!J zG7o7F=MGN;v|7R4ec*|ZO%iaPM)e+NBEu*wF4j9e+&U6b)iQmmvyly!4d|s%dB8z~ z+-q#Q#Q24ct?dT?8x#=45vyaWBEybm0dP?*4EZ&Pj;{AD_`xPbPxmG$fOvrQ06$5u zB^&{^4qRGVa^L6!dSKQAenTL3+!oKZ!7DgFh~<9FtW(f<NRSJ|x6^^7i?{##B^P)VI_pLC9`^ zv5h9N8n{v9Bymr>g?pSG-yk5cdtOS2X!hW@Nv!{Sj0Iih>Dk$iz2JaJ>5oMIXh4bs znez9;yKjRL0T^Xx*f;0p^k_sEsigT&CkLc^lSbwtDXz`mQ)f`Ft`AW1^YHY-@1=F1 zZU2a6_X9>()byz}y;9Co;M+;K%x-}S`U%jA4;cfhm_TQV%X!%VHvnWVtEFB_P=w#5 zrRlwG19lSq!r_1f2qNBtC^rkmv&g9yb`1x^UY}k$?+&s=aEt)K_t$%RRynL;Hh|V) zWo@mqJ>LPGsz0Qwxz*Jl@Wbsy!^U?QH05+)e|ZNvWoBXF8ziI6y*uXyk#V zw#Siv-M_!CAdt1ebrDNZyk%Vn_jM~BL~?=SC2nTM2#136t7`Tj;w+kSSz(%Tn!El* zCbkJV#)Wzkbvww80FkiMgvIg-Y=ZNguDeT(u$G_?BF+dp0!$>qfb#-N;P0Qo>~xnD z2`JwKdXHpcn>|3&D>3S8S|WA>JRB?J&bPI-1z{a!6$xvmg)!;9n44t{o7J5xj9X6p zb8bK8L$tO>Ea>{b*4Db<$wx~~qx+l!1;Frf3JwA6+g!mAJ0u2nRq9Z<5LY2|I-Gn9 zpl#G_eY<^!$LbA)=RHrHTCL|04v>~OgPkjEqjI3MzXwJZ42-edmRc#M8gRe?^tXb0 z!Fak(5V9T9W(5(G+UA694=ecN(yVVowVwkv`Za``Pv}v*Ey(F`a6-x^Rd;|<0_Y|H z)eB+T&Bn{F*Vg@t>_EH)bw>-glbjbwJpP>>poKx=#qqj=YXG(eai#-_&^t3A73#nh z!BWIBy$C^y<^GVirCH|74AbpSI~3MdKrzN+C0Tu3(3Mu4MPzZW!TN2%-WI@x(xzt|hwhM*CtFgSL0xhJJYWovzYz5` z}NE&rL8WzU*f(U4aehNisK*udt;Q zvIry3QYpO0Z87msEm6QyBS0yeQ(&p^bF#;A0IX?0=u2o`&tAQvc$D?k85WnrxZhjI z{df~<{^B_Kty@oF^AVa$M_sF{tgOsu$SiAc*oV#>yosvTcYI}E8-asfW#J{E5 zaMzj42TO(C?iG4)L;`;nX_XEE8aMk5JEj?G5t7*aAWB;x{*QbAi#copBkpMv63ubhshB};vc4_K#B;U<21$fR zfD5xbzp4ZZA1WlZTozt>@>D0*jX&uaEmXMfx7Q$eDxhUCx;a)3IA7auIAn_rX2}D?T6J&3*6QJDcB~s-M4A|1PDo15J9GVim05 z=#a!O#330375+v}@9e~6~_Jp>&_ zgqVpy#J_)CYbe)A&RLIOy$lRO(7?1KoEz9Zz(fWJAr#yfhz%0}uzn%w2I$lR@QBg* zguix|2ZC>Nha!~;G+>+kRaF8^4B&=A{@;P{UgVD!NujeNVz5;Miv!5OUBjG*kf(x4 z*nL0Tmtb>T*MK7uBA!P1@ZtO5VC*lliE$emQJ9$`5#oHck!^3<`6y`QmzcKVOD|~x zJv?3Z?()L&o=Y=*>A_enL?0pOlfXFv1?>7O&IfPyF<4Z4LDMdFxF6{6-vEY!2Gt}| zE;D~n%7MpPXbHF}egd|JEFfR&>gqnHr(1({8-Nv7jc-tp^jn6Y>3lx>KftKI_$8wX z2@A0pK#Fw3LZy$CLiAZM4*>T{K||vU90GyUb-;PEv$H>xY{6o26&w3Cn4ZOhZrSjw zDCKFyMnn)mD`H;qJVg$HE#QHI)C8U4f;yp44@g+xJuMzJAxdRzuU1|uoWU?ll=eu_ z(6M2+QTe$~TxrNC9*av6g$Tv+V~9HhC@C<~hC_On2j*5}nD9XetT!MxHfQ=@{j(X# z9z|-7Y?L|F8(O(1(=2L&Zy1daiYM5K=2FPd`{Fbx-m2B!uKi%}3s-*1!USvc6g2$O z?-jHuDJhD18l#|tQ;K~+h*mL@pI~AKNDFOU2V^*LfL&k*C~|l}1C{DF5NC`pa<74? zc0_}LH!J@UnHcy_2$#Ri%g+xVzik?=^AT)huyTQ*mVrO8(1Dj`Yj1}NPQk$9Tze_Q z?UhH!X8|;tMgu|LdOn1quL$&3j^;bb^&Id7cOQLeU; z5%?3TfO_|y=|G01uxa#5DqLJ#mxFclH8yX&CaUvJ82dJl6$S8#h%FkjV(=YaHtnD` zz?aX#^_HWgEWi6Gu1k+D0^l=Ghcfx{;jfVH-IakLSSq#Z8W9j@upvCp--_mfL5L|X zW=C2_#eV8(O9z1J|#gp--i1`E<|`NO6p2%h631*#8L=`TadV{-Bt>?TYdN zCeIg*LbWb3t;$_82d~&HCQ8Cox3K=!9bUUi+V-yFAcByO*P@xjb6PSX}|16gJklIacddNUpn4TDOse6`nd%T-8}Xh8||y&)>Za5wBMjZQNC8 zJ~dP(5$|6gs5o-0f?ot>55g^alTr*dXA+Z=iQ>ye9KBJy`Mv80CzXEQz59y=I83-@5+1&9A40jwuC>I>2zRoSYo|{AXE;{b_9jyDr;wTvgJqjm<;$wL7eT zA5@H;k}2O7u2wwFUnubOv`0BE-`6)^xKETJ4*wkkTNjKudveqtFH_ z>h8f9TL2Ucg*5T&yDr!NyryOn&{eT#&uN&;PuyR$+0A7ocrH{Il-YLotq@>rL}`QK zc(@R6iNNxJ!PVd9ZIEyM{f(Mh50#%PTc%aEsYcQMWY~0C)4EjRTJLC=z2fwf{wQ7?O&lkW>K zMQ(s;YW9ZI6~8KW? z?K2Q?IgL$zu5rg#9!&CGbM(bcHnGMww$Co5XgCW&>rO$e5P(%|z%z*m7C`00m{x6m zoR??6EGsOL1=*A{Ia3p;t8K0Uf4asPt7j5ct_-V{_mcGd&^(p zhwSe#@q_8Zcki07RPdKHi2qhva)y`!Ehi0n7$EjTk&!K+5kH292jw<`{|oR9D6&pq z+YYLwR9YS|`sEOiy;Y9Zo;V{)^6_yxsdC>kAAK!F{ ziGqtJwnXvvZmXSbfn%>cbAyk+Z?03`a8Rr4%au&I7gMaGc#qbx$$2%;esNx*@CtO` zUdG#$`ml(3?V1j-KM?5!z#$?OF68#0>+U!>IF~M6k}J2+Omg2>b#r$Q641Iz*-4Ki zX8FLQ>bf63@#RWA!Tt?$FhW@|YE-<35{OSo z_ynpJrohzqq4>+|tU3Pq@hom5-Uc=TX=np__nldm$nALfR18wzG zrrq?cefp0Ao_*QJ7_8V94VBiS^c7>ECSV_+yk7UY=jn8<+*Z#E^HG>d{TQ9wYaHt< z*IPcj^o^}Cj;*F=CL}X#Rsq6CJowNi+7;W%~)9Y2!@!Z<(CHvX{;dR_MhE8aeFKycU z{t;7@%)xU-;3=KY_J#p6e$^S@3odrEGr7YT zk)XK|s=FGZE-W2^JL)yro62_Q_Me!B;X(W@mh$$c8W?^>nhGFjryR?(n=XMfZ_G3w zU|XZtybs>L$?Q@s&Re$^Pc@mCo`k0uyoffo=~2N3wHg?t_gORO4U?=z4V#7L<6H>+ z0GcPLt0)L32Hb%v46dl`D*ecGVf!!7 z7i;gxJjV$*_->a?T%}$NjazZL#Fn+bbGkQ9jx^TP_?wstFg*q)O3BHpqbrSATXf&6 zl}#&c{0G$^mD!!iuag8(!qhQ>^r93r4hvqq6iJg7%c!?6US0m_gSWAPt#=9NS0@;T zs{}!;)zs0hU!gV)%k+8qJN_oWkbZK(Q6u{YC@lt2h6*xRMfT-YTn~yk4w;3;yCYBH zfB$(*XGZA6u}QT&ppH7*y(!Y^hP7(@ZPkNoTckkOu3|KdAG`ndFEv%XU>0%4Yy#qtZ10dfX+Np&Xt!6_(o% za88dZ(h3jK_Y8l7VytKdJPV5T>f|)6em7=gU;1-vuQ`1H|?KxR;MCD z=o>rdNFyFiVo$h?pgQd4-FoublLdur$9>RBCDWAmi_kurWsM+O4uQ}%=sk7Ee;B~0 z2UfWf6DE-enjtbjN}$y4BZa!D6Kq`*Fjle!DwHjZJp>JF;h8i4h$R){Z5#F7Oz9Tv zNxiP8QnH|Q_$c47N8z^OHH`c?i|fOl&%OkSGKe11wfjy-H9h$r^5Q`t3_^m~r%_?m zIF^nm`sa8|Y4_6%`m50*eHe=RnQBi=%cx>bQf_Kl&E|D?!-2htnz^saD ziN%XEplle`1|koCQlIiL1m-aMsq@>JtQN_tRM()bP1hqn`T6mr$jDa6{kaM+tP!)t zI}EG~nNKUf;8^-%&ROLxZ<8Oq4G^uFgGU()OiV;)f7)=_`K;G`%XQ*4hprL0tYGtT zw?eK62x7NLjODfcGT1gupbu7@enRQ1@&@e`cJQ4A4{g11ErfHq(^m$+v(yKJ;DrJP zOIjE-E`T|h6LN5Nh__8wSbGVBMX1iRjz9g&NNW8@1E>7n&${92r$0-P{#8cD88{Ru zfrcg1z~X|ypkrv*2DXDAq&RHs?5YK?P?1zVk)&w`x>l=49xyqFM@OhuKskhx3tN;- zx3>DgZ_WJr)c`IqAhfvDyGTQP0YM->rI@t@k%%XJ1WN_86m|^%bH@}=*!ti$%x_(V z`BzHttN?|f03uGB`*6NCEf?3&=2z`{A-G-jMshv{{T`tZ3BOm5P|V{2wc9esGQb2N z#y6mtKLaZ-ej*|wf(*7HvBKnpVG0;K7)e}B(l^8!=S_hlhe7h?^RQY6C27{QDNTI>K& zBWYP<&v?I3b=*Ri$3xi1_8dw(2C#X*=iu?3)IGP)85!Vf zdRaWA3KIf=@xHZ@dzzI@HaB|#Ixf_0#RQv)VM+ccT1%h4l|A^@g(1dLK7RhRfn_@F zIz(E421`TZueu&ga3LPQP>{^5z$lc~GiADhNPs^Sb`TdOC}RcibqHW$fE(PgxN;8# zzP2FAb)6T)!4Bv#w%z|~sZ|3(OZ^6HA_`fGPu6=nI&@%(W#YNI3ZA9N_13w&HhVF= z2z_9DPRMvih#fWrbGJI0fCd4RyR_i{YB&Rq(h$T4T)U8(__ZsX@cKYd{s2b;#v>58 zNx<0&(t1hXt1aN}1vigxfgFmf!BTF>cw5Mg=VI=h-Tl}Of@99j>l+xj4;nb5Tk6S0 zA_${y`N>c0y>-)DUtL=(EH7u-T7gW49wHuY$#w%22hpIs2W=4?=SzzwMeinu#vKF3 zZA7jDpJ?n}4RtF_+koY*`2_v}OqyJlB2AZ){&g}kGNgt)Ox(O}S%dURKZHX4#t|`k zrONeNBYZgktHsrf8OF4rh*?-4;Jok(K z$f0V!Qm%e~9q}k2RtQMEUNU6^e`f)~u^fYE^o_tN=BZwjMOGzdTVRq+}*IXUwEGO&q~U^+lWMXiBn z1brq9X1O4m43=EYEiNpB>hs3gAcq>0pd+AP<-0$;AO;Dm?j@K4g6?Pc;DGz+SV#yO z_CUAXY@iE3V2E>*kvuo?8z}bApu_lBmv`FVo5aLOse;1eYYy=z{?8L?@RO+qM=zkGPnF*Z-hy%z^^v`wO}ZMzB33ZQKE)s!E;e z7sN)Q%jxRkLOQ4lNg29Jv<5h0NDl#x*dl0Eh{*%vuWb&f=3vAq>MH{SU?I%NhOfYc z3D|z6P;N8@g0UnR?WvA{fWYSFLvt6K7d-s@FMz2)hWCNKu^a(;nhPZM*W0Yr&k)8b zCV(3330Lr@g5F)`obHIYy$wS2{B3VCVq(YV_7g#ny9h^#k03#|cB>|bhwJ@(iNzi& z`T#M2VPT6n!H;g1gbg3+bc+Nj+ z8&dG}eaPtER^DA-KBmrsT#S4Xz)@LsRTXLNzukf7$N_~T>E!B4d??oxp(hoHJf9Ov z6lC4?^#%TDr$eyWBqSyx>}2XC9zH$=n1u}wEiEo)aFDBnn_ech$hol$x z+Z6}Yb?Il&qAMWCtwpfF;SdGpNoKj-m(!5I0FJf{Hu2Ia&E2$CPBX|PF}7 zkIhP|UYo6r6;Q5gD`}~RJ!6t6@$1JDR5qTO%U>*+<%oRaz@(sB(m60jP58Z4($Bq< zCUm_Z<*PRHutmgQdrnAyFr-=wvu`5)x`?IU|DFoH+tMCi9Yb(*17AXN{!x-SyVOP!-zz~Z)#p3wQ}Ft`gv-7!TC<;8hOUI#)#)jtt}j1LfH8Ze z-hmp;M~3UR_VKfWJtb!*8VYG`AUbd4@)#G)0}?W+qegEl#ShP|Bun>LaOY|$_CXvv z1Iu^Ll*fo6V;ZR_QDi$G(uH2Rxr+u#5T^BhXd4)c&7c?P(9<(zosXo1FN29s$Fc24 z=O)Vz(Xuzq36x4nd*Q=gA(X8%eM2~Jk}h43L6-Ne__d`%$NsI3CZkjOtWn1j0mGi` zTusflAPSmA4hDl9`~ZzR(T38lT{8kn8;A_IvM#Y$rrP$l6&hkq}^)V zoPe+BQu5=a_Q6Qoui3l%pm#?vob%AtzA<;!MLaa=)!H`Z=fL8}A0iISWE%?}5NFBd za?1WSy>-@Io^Io_1@dZNis+RK>EhhpTH%%6?8kS&cr9xhFS;(lorKb-%&CID*l67) z)TO)du(B?=w#(D~ES@8~Q7^3dt!J0QN7c+pjSAJZdcsP-LCFlwwNW}Vdh}n!Hbh|y zp;VSVMY@sSH13uLAO51Ba~(qYv?GmE;=JV;Q8tKj6~`AKH7n$62IXUNWo2bwTykc1 z?Q7QY@ZD0^kuaa-lJ*Vz_pS|dU;k1OL+#7L#%A%9=E0Qvf63;sPi#xCB?O$1Kd;B@ zs*ExDtifL;Y2q6C zS{9=IZx`zWznC1&WSZrDNG!WUus^~p7^JY=7%ECUV%>T@QqOs{C{Hcd0K9KP$4mEt zfYvD`^`;B4bHTu5C=&r)^;}ADnpeH&Ch&98vvG-aH$0>JL+?qiz|vAAKOvy6tRWDw{D$+EUBP>%BRm?Qd5vcK=|9XUyPz z{O%12S>@k;(|l=t^iHXh?3b2U3IMYN4X*;H4XP$RGL~R~uJ(ns-yPQkE=$Zvm#$L z^ij#yTV7tv+BQW>J$;v$`59{u`-%voWVnoK1JwE{_bM&^)vH6<>~le_^F-5uhy+gy z6gLqvz7~=dcJ;8^%{U*N+}GE7gsCZ9$AT+|ri<=9`yPqzp$$&Pznd>Kib@Kb+qNDU z{QB(rdinI7*#&#Zc7p_*I(K!+{>bMwJhbrpQ6Q(&{sR6_6`#m;$823HS$|L*O*}Tr zM8O$)2!6d;`$t?SPTEcva{3cw6DSrhqz0-4`R-zaS+{i?2YmdxpQ6Wi1h zl{R^Hb^#k@u(NBX7)RL969a>7n&TtpIxg{2C~6cSliN!A1Ml*h|B zT~se9BwmY)ivuCz|A+DWcvIMg+G2uxzhvRJlh!nR@eRR0iW&zCV_IzsT*unIo4>F< zikvwi6nQiJ9w)1PbBhm05HlB-Kk5bEr$zlfS|skZvpYTBDmYVHZruIvpRG_wi$P&^ z@K>>>s>Q<%>{pXQmC3$;j-;?l2CpUKqR<&abS$CB2k(1lfnsyMl>|4peBvHMEl%x~`#uD74Roal>DrN} z$_2K*NH4viD};_64HTRf5(qQVY@N{mS2I>|)a(}R#v8rZQCNSN@IWT_@x?( zg2nN>J0^E91upP!b@JIVY?IaAC)h)NBU*C0UP^o)Ep72cM;=jH0A}is)p@Dq<<{y< zQReHG6K*jv+FP!+b?d|*uV-~n4{+QZ&pv72OcBko<|LZ(aAeAYLHav44UvFw8nzPY zA@PX{H#gkGten!lh~5}V9@niV-i3yS?hHjpkaqh&=_j&!!leVn63|MO2&@49IyYyH z^qDXnQBx1W?oOx}&QN%HsD1j8BUO{X_F#X`zwJ~^*Mr^p?Bu2=J8kZSzBxS@aezC( zM#aNukf-ynu!q&aIU`pWuYH%?>1kUdatlPPA09O7a+8hGUY(}=^=tkN=SJghT{upM zTP-aSY6ZeVlj_((#<{UhM|Yv)6!%>jgU}~(bmx89vTI{a?Lr)kBvRd`S%rW1q(5!9 zD)znbp z$;mR>3(K+=vSA2;t5C8a{CxibNbXk64UCQ5hqxYxP7k!*{xLDP+P5oghYgoq{tW)P z>BiLyFVy~&rBcj&PZThE_}*&zDMuZ; z0BENi*--uUcED-h0lQ7NO&dEqLZAtijr8!!ff9C3ZR>fFutu~;5BUbvHF{L^e0BV* znB;$$F2m)mV|hwyRhJ6YjYQdWn>tFr3#-8#L$womS`bSSr6m*#cJA20GWGFS_5{-W z->>WVW?iTq>aIxKVrVMQXUKLb$s6p3Gq93#K*crl3ynOo1nafa=0llKp7!Zg^mJkg>-F+l0vh-?KvKR!#5Kfh# zPHHg6b4Kpd_cey1kNMf^->UAs3>|!L1ljon_3fo<{p9ebAR%?7BQ7(IHo)*L&HFRS zXX^1Ov*1TX>L@VQ%!q`CTk)!V66mv3|Yu$2#HH1+Muy^flo~Z5$8FCKD4ZX?SsyRwf&B0Q z#OjT+l+zbINs?LrLr+!+f$9g~5h1Out)1A6vos|Xw&+vCnUSRaeR+=Sc8+y(RrQ@D ziGL>ZWrLYas0;rMI#E=zz#xhSe&{_hwj7Gt{QUew&>zFFe6_-IzB2962A@p9_dc~r zN&hY5isWI!p>H@1PlS<=rA)8+X~sz358(wGSJX&RiH?pAOb!v~`EmkHeZ<9`{zl7< zOH2xL@k_*g*G=GQVp1mL{@_>eyeP(bxo6QxCzCDz*8al{cKd`CnZLc&eWAFhw!@~K&$sk_;cqdEc)Hnv z^3ww51S5c8ToA@)PR?38#n*WQ9q}$c&LlH2vU{oj!)p$j&JI2xIAb{2o}}tqzSl$C z3FP7HAvZ>G`uQpu7K>pEk(FKgKW39Hwj8_dEu4FXLBLK8UF|o*LQ4yI)GgEEUyAjN z8gjYE?Tm!tdCRLOUq#dm7WO<%k(pkmQqfU3yVbCf?Mi9#k%cGmv}-dl)Mqy>Gv%H7 zb9d{1Xx-SB-E0z`v(0Sws~)#ZYII53?AqQovc!$T)C&xJRU8p(j0Y2^`m1O|bTa+o zaxBLc*CwN_kG6j`S(3geu)*jesBfvQ6!ptG{HUo7hYajOe}kuyQ$eQL;Jr* zqg(w^h!C;+cJ5)<3Di8!sIvb?*}?zYW4~SiQg|81KIdr0m(O1g1wD|r(au_zExG9a zv+?HbapudzGjpU9Cq^~(wTqVL4t=|}ex5ZaE@M{z#>w%UXB^F(kI0RmS4}s57Wj`r zWm#Wbsfd&3lk&e;zow-lwRIKZ`NbBphOg3<3J-5vQ98e8zZs_dfIKMOo33)?p`wmDwk0MvDCQq+e?3%=*Fy-M5r3Ee-8$ zu%_O9d%iwtY1K)Se@@TLTb1jj$I@dZS10;AGrLE53Z@Wp9)Y9iHD_sju_y=k{l322|z(`(iWM9Qhx*ee2VgKW~4idF0`h z(qmKN435b|)pe)r1?1qyJ8C-v~S`m_6zAU!3PMr1r$g>*Vi@ zJ%==!lS-9epV7?iSzl=UN;=Tm$_ecfx{#%UTN4=NOt4Jzxs7?IzusZ za|o{)g!`a{6JkLki9W4`?jT`Y%-eO6dCzF`(qdt(d6n7eX$wvj`@kpDn--g;t)9+j zvih~&=Q8=TvnZtL#P>K@8nG81?Yz}y;jpx1a!Ns4(lp0tIrZw@(g*csM!wUbAKUA9 zl7d<%E2j9v$G8U{NB^Vr3;CiknDM}6Lcn3=3Yt(~bsiK0p`Zb%>|#N0?q2HPHmZG! zqb}#}={*w^% zm0u9rQ``GBz}`Na)wG2@HZ5(M&#bm}fL3RuHkyE7O>NZk@9tZDc`4WKD!X6p>VVV6 z@+-)I2HQfsy`}Vw=RA&b|3oPDe}$d<2t|L6q5e(eOVJiy1qtUEoGMsLPG>SJ8dd&^ zY8nw%^CAr@9jHmTLcja=?{DSViASXGb2FT9dVYXs8pzTUg#Rn|{XV%IW7Uxp~UG>ptQf?(>~E3gHD zu^z${gj>wtZoxN?Q&8Qck}u%eK8Pytf|B`pfZXb1-WcjjQ4!`B%H09Bc>QVLt6T* zS~4Kmqmm4?#;z`NSdaL3cZHq%j5^cw zN}i(&qZ%?CqU)8-kb96_S*LkubW{|f<&1+C+7h5~|24Q80~{G_hnG#dZ;${fCP+k7 ze4W6gqJMk16E2IBYN7-_3~He>Fc?6p|0%JNXgm>A=bA{NPwVZdi5d|W$ctwSRMiZu z_8vKM1O`K$>aZ>79kNXwLZAg-=uK#Br)JNtxz67lYwaz4ZRS*0Vn@fgor?NC36v4A z^7I-LgwgbPw?IgcA=bk$*_G_2nAp0maZYuQ`#atJ!g7W+<`r_W63@}4fsuk5bnHy~ zRdRB2c=0&V4j6#vyC2RbHqXEU`s>quKQ8EWp{z#es1p-|(GhR5$ zvoJT;j~_VaIcbZx>RL>J2v*d{sHbkLowao}T91fo|7>Tne-<1ZT(f~xn+Q7z>}RLL zq6%S_85^$@D44}(x%VKm-8le4`NpH0>W8+Uc>AB1G5xyzl1VCgmDNOhDZ1$+@Xg>c zvQK?PZkTQ{D$9n3^DW<>H7}B)qObJ|@n}>XJwMZoD9~)G`zFp|5s0T|#+zUx3*d

Rn_ z|LjA-iQpBu@p3{b4~hh#m^*Ru_!+jZq`|=*zvW2%X^C1O*O+eu~{vCgwI~BwMf>RLYMyA^*MU!N@1U7X9Ld^&JJf zGiEkhz~rNhGO+HxW-qCcO?-^1x2J7bm>5$CD^e@#&e+WDQ#-a zeR4rpmpbd%Cd;X?BEFWm54peqUc+ASas!Fz-K(iKi#x@$H!fV;p#`GFQRzJNO;pNMVl$f!Gr z_@mDYhj?VL8_=sK1T}QoT_`+Y9s?}QZ;?^Kuma%taLDf*fXclfM&XqR#?D=X7k?KM ze-IoMl7JYZo7$3ZWB$BkJ7kUk5TP!C=133RWs6rfMvx*AFdB5OcqKZ}PVpk{)QZ8i z{isAv%YTbTNAJe@!j2hB_3NZQy~H3mMt?L-NEzcA8;ZojQ4 zK(k55euup3npyu2z@94tuevdZSUckqDKSyT!#XMW?mJ``=#_bggoq*6ILu>t&h6m& zUI=tipSW7;tSUTeC8gF{zTbh1|G>e2wHmk zj4S0A08XsUvobC!+z!WrJvu0e?zZhZ^r+sMZvTF8rw=U6lwYucllB2+EZ{RXVK5v; zMDfj8b>oGGp63%vp=%YYf5?`Cg$GbT89qo@!PH@z}7jU{bV01 zfQ5*Sf9mq(v|rntyT)N`!b|Au=}~VUoSZa%TEqv_2&e>0{odj;7GGOY`9RnegZDuY zkD<#KM<)X&R}DB#mlq0v@&Yggv|2ZNu2Eb`edy7~z}d$;UoUkqt^q<1LMQ4Mi1_ia zMfj16k4W&v5WL3aTv*np}1Eo?r7T-iH`6$`F*F1q{l+xhCR&j?u!!~~H7D~Ass zh9RM-KgRObj=CV|N}~D*M-{yLu_}3-kVMQ)bbLaSIt?B)c;z2GH2|>|hna8qq$9@8 z044-NN>=r3G8Ej{F15K9`ss<(`(R(hO#yi>;pifM1>qnht~$9S{5efx%R=-3VI`r2 zKVE7+FC+NKp6IMZrm4$Ip;+aC1Qz=RCf}xX!t|3A)ZWucYV@yD~ zs5iNfeFeRs=(lGN!7{)YgTFZRsKz6*fcb!*O$UGLn^V(-zeschD$b~<7mYU_hoKr* z?;G%y0GY+_4~6Whdva17+M`|PRZw7tF5VSs2Q0$NWL1TLE&!{26JKZvd-H7~Gj3vt zB<<_A5H8ATxF~UkBW%2c3>s`Hjb8=`f)KF84r1Y&!$OC{`XwY9h_(gewdCNwY7Xq{?Y$>1&UI9O zkIkr*iJkf{1T93=2odwv?@_|uuiw6nz^(x{=MpppMFK@QfXQe8Nd=??0zBde|8HhX zk;XH;`(784Q_bj6i?Cyp?gLVaa| zx(o`XLI}KHzkeT%0Cf#|ITuF&v5w5|_Hzk-dGSH#Ps3tvo0+K6^nD!#NzS+g+f`fg zE+XRs#RjFq`?;>H__Xr<*O{O*WK9u0^i@tI=40UO!VrW09#9qTy0d~NEO?&E%FM!o z;=rvZ07yc!PK}@e(UF^q_y9y@EGDZ3_EiWdu`s>2ThiT4l%-qd!{Ir!x_C{zb5Xhd zorcZotX2t|JFDhhs6iC$F5OUgU44am{m=)5&>YA`h}t7qzBXtep%nT`y(iK6{>O`3 zutY^d~r zak?^+U%M{CTl<(~8@Gs0hO=y7wU`lci((@CQ&VQB(+DMx>aEwkw2S>MN1@^p#8Slm zbrFkRM?b_90$l_cqWO$cgmWH0UjuXXE#qB4M(vsUPSq7q4)qX}g_MY9*)s;QStBLm z05y*+2D}N1BG~ik@G7q%&^gs|3b|4IUpaWXJ;d!GHGNNfBow1>CXj~fNaMn ze~Z8gPK-inZf&Js04$L>n}B}($ZdWGvo}twda%NLjsM{%MgV})-9KtHi|e8mjw##` z9+Dg`U$CX2+=n)Y18D^oL(K+Gd4gQAhmluj=6&jE0;Yg*4;LNRtkKtcw{R81QZUp2 za|S{r4~T6cEdHopAL6kz_|{E83Q+hZs)wGMbdxlP4zZj+*6Zo}Ki{a!#_>s(KtDfR z_k7I-c3e=Xb=O9V0y}gGNxtG&Bg0y5?1$YP9{2QL?{!g1d%P3D$cwv44R{`exEceKySk7EqsqxX9q7XH08^XT9x%PCt+7Aw zq5Z6iEN5!6JqyZ#*2CoYLU8l~k9(Jwj}KP7-+c2j{^&&LLhSq(U<%#TQM^!ikakmT zQN?%=_|W}wKb7aX05%JV9&GFAdL9*UZ0|q(YX*W%x7}B=zJ6s!tpMK(4~iK21R1O{ zZ1y2lnq~j`2KVpXdqZCS5VjQrE9R(HYG{AT{S*^3M4s$w#O8AACIW_7q(umS3EMR4 zGx#Wu;zNhQ`3x5g-RnVln-m~RN%rT_&SS+kkIDYLAUY?yD54M^vdXk9=V+LkK7@p* z>S={ucEK?Tf#MTA=Uo{3gyVJBsG1Kg0Ss?BsF2}7 z7zhK!W-6g~Ld^qKGYmVjBf23)KdqkJMJ}q-@g*)3W@hNjqHn*FZDj8YSz2AC^(;rM> zQ(^5AE&BgH@s8fJ6Zh1w?!Iz<>)}#Rvr+19Eic z{6{vJFVtm4qSGoeoYA3cnA$8Csr2A#`}3p2X=>wH%TWb2PNP9X`kWN5Ho9kGhLozL ztPJ54>cQpE(8#K>koy8Hv`1t{3gh9XfWo(k@Pji-B9}P<9l&!XQa~2}icHssm-Q(+dh2Hd-vCpU9fOWYV6VmM}E>oij7Dx;Zr; z(U>u&=<&7FmI_y+zQ1hjckN(_mM;2_hZDceKXrT*x;39ybTTyb>1N=tq0xf|qsaQp zd7JxJ7Vkw!F4yv8^#X#!#-YOGvX=-ZKMlh$Q`7a=8Ot~gJQ1Qf&-Zz5g8~E)U99c_ zD2w2}rhx8ZFNP^CXW{1eZ;kn5WPQ0i*dbrQoMN|9ad)=_EkVmAL}Dn1_SgN|)0C3$ z`)_`0>*w$c0lmO{&6Ev2+)%! zs=3qCwU

E$OpzUrR=pv`p*zlx-^V(SJ>Nqc78TqDo!YGDM`z%JfQpvPN=5&?ebf z!C+WMym;jAd0l#iTt%Zfwj;G``ptVyQ#i zW>FRPr(dSTLR^m|>lv0l0&->!jswr=)a*Tx`^Gd^iDHZUAVv}5U!SX!AyLN=Ws-0*|P(j-ieZlI)#VutrwTd~dN(SSP zeh!abVj)2koO2hzHKFzQenWh+tYDf%(lc)&);m*awq{pl?T(kLhc_`Dc zrdg3IthH@q>G3ZM`ufDO*qAR;Xa9tjlH2w6>V!_pgDS-{nSUEwCqZ&F*n$|g2V<*z z=APpsM+!Pul7)UCN%{zBHOw)BDpJV8a7}JkG_0Za|F364lu>Zg{%C7!L-@bnr?O=7 zckjq_*M&QV6I*KgTD|sld5-y5{kd-+GS>ff*D5)Nv>|^_TzJ}2C0^M!8B$UuP?A!q z5YEgq?G)9a^WgrPJiox#k53cNAI_6jb~;IJ=6g+MuIO8Y#kShEY}OssFXS6ac6AjOPMLw zIS!;GL^=qMk9*|6ll#D=8=WU?*RYS)T+~TCg?xCXQOURl3YMpVZjVpR zpkLXub?31TeL6YC|1CL;Pj$8#N-UFJH^Pkjcwq3Z>B*@sRsCOy4vZ^o504Z8m10nOj%o!7OSQ zAF{$IUY%aM*T5(1uB*qEs-z!(f4e*?T)x)QFaX0GxR-CxTk(|#1*y8w*e+y(yZu}p zyBcN~;zl%n_$3R$UhNY zsEyE^88>s3TA?FRGK3&24ORd^hlr>jAT0;aP=AsJ89H7c)$HwgK><1m8gBN`$m&}R z85KeufuOdT{5|q;*YFiOVGpN+b4_mi&wuW2GTSb}GSk%`jaCYrCaF+ZVE$-}o@^W} z_&ZS7G(41&To>)>o9X_mpZZ=?ha%saD#}c#3F3;@hW-b2C9&hQ?b|8pJ$9(~r+DnD zoXWX=b*N6fTW?hO+3mfQF1;c60hE3ILqD>s=q-F$kze2I`t7iS#>+%(Xo6H|@CH-o>_eY+X#S7^~^c>Dyyh? zj4PXvKOrpdva0+mM%nt+@V>thc?Bcy1TkqC(0HOhK-f?w31M(G%2W6Tm^OP=|NSlA zcc-5DU?>MM_w=)+>Xc2qXxM2#LdMN(LE-8V!zWgoTlPak9|h?I#aTMhrmCUVfn8>GbHxh^vfQjw zQ*zUH`gUxaJM32Au+b7evCtQ)6p*eVKvKWy&&{N?C-LvxlqoZGk<*&no6~3IA|gFZ z7Mz`ZGJY0v9XY}$!#1#&zE?2ux{6L?FGYO9K_?U}p=l|Gjt^Y$K^PTX7~>`50KPea z>37%!b%@;~5Aq(rQ$yrJ4w~zv{XAnm)W8iGIl5y+g!T?)gxS&J}}}EZ1c> zZSxW76^ACGkb|Hbe~)$Uvub?#=aSgu?1RQfrRnQ=E5EBQ9^!u*@ZlF^q;Zx35o*`91C3BR8*B4s=OMRD- zv7L#Wz;&P)QH<>C9taFeU7H))^|>EDSiDVM;B%KXBo`iG*({*tKN@Nl**<*q_EN0Q zr?-)}gvC}opgMo?^D`x7abiFKWMNbrD=q??E8cVc+mneB;r-z2zIgTY+m6w{&#Z}W zv7CF5RQ#$dWY1tBDNN#-NRLQL*CZ_1P4PDmkaON-q1jv?qoDBUvJ$%JWNcX5@YS7) zO6-wDzq+DK!86G%&HS!E2P{(Zz8+3ISByA8PwFAn^q&+MA*q)&*U{5Jg~knpGy)&! zl#bd4CIo&)1Xav0LAXp)veBR6cv9xGKOlGnOR*w|+Z&ad%iw`Jzj(2G^=Lcuhr|>i z@63ee!u_@?5jCrQC7T0o7Xi8(l0WpUg?KNy4 zf?PWaV@TC6Fa{(MTN8SgQEC#)inJyh-GVP04 z*8huB1p{yZM10><^yoyHmWxAZ|EK+TVRM6nJ;6AogEvW@+>&)P`0Bw=EYCi zcIIa)v%N1~sgb=nvDiV&+sR^a9w?>hlmJ*gQDBFE=pvMrkzF~k84)cG+){LQj3drZ z$Ot!#4NM;YSQC!V7%&CS&@;!LQ^J*lUUsO!ApUEtTAAfscxalYG|O?izvOxniF z*TOd-{dby%je%z$PsLqyTb4^@f89BH?7;R2Aqw^M@y5BNz!Z_;TkBgW=062%NOW0{ ztXXKXS$tz9!lYS*t7N9vXGF%7bzgj2nh&dp&@5SaYCFh6UwlT;;nIhG>83WjcS<)q z$2z<=E$nwWOkA3KQ}C>v=dT7iC0#Xh*B(ZTQ`S3<-`5y+o^L2=oOHgrw*G1(Bozq~ z&VEXi1Xow`iFpp^P8>h}991l0KDe8T6!>=9e~&_*`Wpv^iAnankZ{~g$=_v)u^_b@ zF$Fip2Fc7g2E&?8zxYWZsie!*5Ps(kS!So7VX0%qr$NCPVXD&}ZGiAs{V39Folme9 zS|Um8RlelD;K3EG>3z^=(LyL$^mZukSkly%u;ZsWL=}1AAM$BK-JaY*m5@LG>VQ!m zG%(X~#c8T7elL-~Uec;KMC38{eMaqjiJUL<1U*9vD12+FnCBJK>bJLej+D5c5)iAX zIJ2Jrq(~^_NYj`Cf77-jt5=Q&$z&LR3;k`8R2|#;j_0@ia81lR3d4jN?dam$JJb(e z-u6p_XqjVggQ|U;t7++ZEsT+p{qNrVm#?s4Bq0iHP zPHxOGxBN5s7D!`|Ii=nmal7TZ_xDsTn4UO}rI63ttCGH#@;m!Pc{B&vyEt*^dj~}J zwpSe{DD9Ho($X^>zebaPclV6=7-yYz_+1sIs&9Sa$8CUdLJ)IIL-cb2npZ_AV;z@8h>`+{>Sqad^$#;slSEyJuoD>BgAa;i%9{UH`_YPh9GBKdiQW zy0V^Cu;;da!M<8%=dIM3Acz?pZcBIwL|FoAVKUrmICKtRQrK^I2BKK(rgA~#zxPgz zI7B-F$@ODI+5`{h^MiPAuLbfN=7X1J)3d%Ox{ME2?z-9MxOvva|7Asbj`Bv6+dq}d z&5VVChSO(D8=ufSx-c`94-9VPl}O1q`HEVeTb^ZEU*%dd*8I2nnSz?M`j>_Gn^!j= zd(jfG?m~mHjVPobCPcK1674zk&xYq$PB=OJmq5QpWo#NUC560qWDc{HTX`KKQ`1Ye zR<^4Ee*cWDK;(U6L#|3OCC7LSQ_DmaiP!vHmi}dnU+lJ17SbX=(XJ;zsvsCgJ$}q# zEM+qN^aroim&?ZgD?yAVAb(fZB?OF24JKdY*!F@Z}k5`*6kX0w7IzlWxMxwi`HSegD$-bbGf!9(sS;*cO5^Y!s5DF zh;}DIpyVZ(7EpS?U8>#~SXZTck30NFWMiVtUk=Tyrx;jrM`a+++4W+An&JB6D~E|< zEiBoBCB~ik0ca1TH`ucdo+#N=zLh0(OnuAWU3ytBWo4>p8F@(tM zWsd}@0;83n8PJC0fG83Ue`J;VOk@%dqeW zp#ps(buG3jVNJ%P!4#QC$a0W(?KDsRq?l7`di|^D?YNiG@hY$1WS*asN8K6Rt}O)j z5Iw;Q7oXK9D0pMOh(DUVANihNAq{V`cUJ*T*xGj%>@{`j0kDE=jTR|D{C`C(HiR-d5T=rXbSFFtt*2`_QJV4NGl#(*kEDp{2;5TIlO28hWb z@ET3>EC%p23t~bESIf@?BD`uz*LLGQgGsx%>(S2j$|E{5m}&>DD8@4qs6K+f0PjwE zBfYtTu*vvnn0|S5XwtzJ8#z$RpOn#%FzQXY`x0(;V)oWKg|wIWkO7&E7)ei`)|V+g zn_QGyWcQZO5kzd#%U7@HvNxf|SVJ#ID|uF|b?#JI%V3x^o6&lU>6mIn69|Z}8mKO` z2kySa&7Je74*?u>4L=~nLtZq{wuvuL15I2}mn$(F5aJ>ta_}bmqn}(LC@o#@ki3wT zpDYfH{&75`>F-1GK%Dfj+QamKKIf03$Y(JF)b}DEn$2~$t>vW$C@9Ji9Y6>ka_pDW z6#kvPU+leaDLCn_(cc$U_5gjrnis>HQ;bQUV$S9j8hxeuC-zZ5`7P zFn{7`uviITI@LPwn#OeShq3>lNlb3On6Vg29<=Cg(;XNY83{%zF^5q)Sv45@60hj4 zVrydRMSP4%09Sx3g0S_z*5_#hB?3u@^ynPm&t2d0AkHA-z`pM8sqYpeeg5!*8#mC8Vr!B5V{zGXbl`H#)^FjUroUX(wZR*ARxvO zkIC)5@**v`bL6cAYBz4CnkHp~W?jhnmJL-gW*wk5FM zK-t#DwS?gD&;lQNgZVRMXG!nqufB!;@vuV{)Dify9Z@74W14=A9{BQ?Fk#XD#mFog zvM#9pLpC0Ofd``R7Px?(#%>@k7Fs27GqW^>TXhgBwxCi%V)K2A`lT~g2m$0Eh9B;_ ziZGu8KH$izCKQ~|-w#3DO>^W10jvN3`gwW^ta=L*JiK2nJM=B_jqrt^+IsJnXZ6jk zetX#6?om6_uqH)>u^eL?rerB5+wt~wcETgMJ9|HT(ab&nfq`g*E&#oVdSMNn5fCW6<>ob9HDI?% zA0%Q1ftjQeH3fPXs@@OeawsvSzO1}l3ewy;=m-6;O<<2fJ>nBtzNP!dLi2okdATS$ zgN;KFP>9^WFAc8p+jkDY!^;#pIu!9F043O3VD}Y2LbTN4@DJsV9TF%zzpaP|EYbxS zrYm5;6#XlR!d`I+L6?{A$VH$l_=IbrgK?B;O4q(YL6SRo@SyDQLrIe9%R);|&`jdM ztWf}~$!BBiEvVc%)oJ<5@H?hGA$Y!8bY_L!pReZ|MI7#Lv#3+&${GeijX+}7cnS57 z8tmgar_DttTa13J#}~o))_?9i6DjTlB8-2jo1AZxJ5d-li@ zDZQ?PfJ(c%VZ321NQ!r4WC&0PJK&%!c z!rn-bfvyj3h|>Xt>eWEYt@jb7i$_Gs$iuC#F8RNH_iw@!%A3<)ZbMfWS%*m&w1T z>hC+tIJP)o)tqKTIr(FV(}vBbzv)nJJK*bs`2CSU0;uF$*9_8^jbbcYif%jf z3>H(}KlXcs@>q$%qw@_lgIv zy5bpcVW?djA^w!kvow5w5!FzW8pm0kxn{xi0i%Qx719Oq??5703*}9)jSXp!)?{#* z;XIm=XRlq8$FMi9{uQ~Oj0_aoZ4lZ(l8}@)kvsa`v{AV05_sP_i-9E$gEFXe#|_F8;;;P%`7Z50<@ojQ2S&V>5+DH;_|o-F^2)OuiEvl z7Kk#qprE1rQ0T`FEap1Y=ZM_Im&e2}^V~_2@>Mq~UWqfWw(Z3XiW8y|s)ReiusP)> z(m1?i`P8$?B$Ep;0$&zFb3+N?XeHvOYB&N*d(tKjLW^zLfvYZ@!&K2w#+GjN#9+aJ1Ae(uJB6mRFQU2{w z34V5{IA);xJwM*oR1-}yNm*L5j!|aj=2n0}|9o1njI695;w2)2R%u}GbN}Gu6NPaD z>3{yFdu5>aU@_MG@UqDXCsX1G$NwRP-+$MAeMn$4bz)R~bg@-|IM9NIkdD#|IOfBQ z9)+yziI&zEG}thez!U#G9J9NBkZ#$~3LXgJQ{Q&obt%{91hk(tjEqV3_4T*(S;$$= zojiFPccMugbuNE=QiVOm2NMErfUL{LS&^NF6~lJrO8xLyifky zme5j#ik6lY%&DQA4=}~O`$ah?4G}~n1~t&q(C8os3j|6P$H-TWF3mru=6bIfwKtzG z+D>Z2wV7A>R?HulK})NH2_3`rrxHVA6CB!iyzseiE|Eyo8NgA!XXI+>FVn4GPX? zo8>XC+^EaM)qprb(0>cbgish(hVUsNoXuM1dwPS^tb+JL#2_#CEz%aKi!B?6z%`RH zFh~f$>RYU_)2G7U?@$)Ym$XoN)xK7h4={NU*9TslG>xE@0NbPOQKzVRr=B4)l^eT6 zwu6*Mh3gbI;CuGSJJ?^g!{M(e*JV1Zs>GqZVmFe>OH#Sd-(od3Zx?%#HNKn-u9J7{ zOe3O78}cQS4fD?76F_85+lCAs~nuHDig8^EA#eObtFpTRp*&nA8dFg z%|~A1t&dV)uiI3fFN+B03VxX9#Cuw5!0PeLWEk$1FNhum{T1#(jEH4kA$#iV!Mx}Ljl$lYg+ZEzw0Ir{1x-wP1qcWYdx~u zcO&S-5|Y@nyu9thk|gOX2fe2~C_m$TDBcJu>~rT4$){*~VtLEz$=J(1%E73a0=1x9 z_LqGnyi0*iuB<=(?0Yf7p5bQ|ldd^_!GCSR89hP_w&=c}Kxeua9J^_D)VF zBR7`B^qz|e+eoxk(N%gDT9usk%yW?(pJxJ6cO^|T^OG18;ghfhT|6-_>bg>9tTNxF zahO59X3VqL)(x1VgC`;mXiwAz{i55X)gr?(t**#TF92{R*Hgcad zDkVll{1n~ASyT+oj$kV~I8=nI44L7e;8>DH*4y$simjj@|Rh*%A;+TFJk6qGe)Ac3K}*D;AsB zPO|nxbwC!4h+@Xs*;yivu^3JKst3w>u{+KZlR!jWL`JO$KO>=~MB2|YrieT`7t6B& zlUr!}86)!9C$kU?msq`Q{Ei28LQ7O26 z`!)*R7l^|WM=*=!ec2U_fhYloyFGnom>d^RJXFLL@-QaIDVs}#33ILW8UJf@%7EL8^}9} z38W|DFANS1VaqB*c+bYdB608DYqW3QKAqorjPuwtlDmIMND{vE2vX)62qQ%Dzs{MV zqJ|98kGPbOwv<*?CD%{K#cX_5N{WkII~q4=rWR0_{}w}grKu#!1C#x1)*%BkY|oZ$ zD{PPI?@t%0`Vdt+Wbkq;9ZS;Z!d9!{FOFRArNH0|XiANNa?%0SWFp>2onjsZh*ASi z|CJErt_{g*Y6t~oi0&u%j_(6|Zv+u}6Cx%**hn8j)q+QaAXHLM?+XHvXoQZVaCWiI zI2tumJc>mY;{ab!Yl`{{XfUOc7C$4u#*KO%qd74aF${t1RU}T$Z`uyJ-4!^RAG?+y zurX+6Z=Gb3=~Z4-Vz{p>E{Rp{py>1apL>VYKUQiveFP7Gt%I?>2 z{kn&-tV#TpK;4hf3m_9a;+F8u&kss(^#enPNK!kZ`OlseMF1osCMFBt5Q-!NqoZdb z55!$Sd?ChlQJQD3F4=O;P|j$tLxUy(L1zrEcUhf1e=uy3C|#C5zO0LpQ^;s;rB23> zYmi?*_H2D%U|@t;aQG`@xyE;~t*^qf(P2`w+r|0MWJ_so;&`D?X5o~c{PFd5>G6jb z^p{>!FKPa?e6)08nPNlbOtMI0DpKW@N3+)v(<_&VHydkMK{0X#jyr^Yi(k%!lHa)d zWc(Q~r&8xO%Nvww>ArI>hpcX#(nX$uEcdzNQqT5)N-g45K_J%zIOb_#oHM5_m;Y}; zEm$CRs|*!T!}s5lCy4BJuKNWw;ueuYZRXLqP{!It!wSg_HOKydD8;k(Ppw8L6LAKw zJ@_%h6>vKA_vO3iYEutz+b#r*tn`$a?}^VrtR2W}lZNq5M=f`grtUP7W@4$feqcT; zNXnsacc%ERJ2Nvghgp+E1cxPVGMtImABm8CxRJ+IN2q;Uut4w00Xp*sZckS_$%-e> zw%1H$_KTjmK-oc= zaO|s1sk@gcMEuSPdllOEqf!&3>>Xko{^i^9-!9#&Ljwc4P|RQ~YBI)`C6UNCy|$BX zn2H5m3rC7FifZZ?sTg;Z5q%MLV+uJIaa@JW{$P&LeK%bEyu66@!hO|Vd7{^A=j z$90aH__xVl-YwRd4+-fOjc_&SemAG|*tn^_!2l8xi_-8TyB@Kkj$Vmy$~ zE^BQ)xXEP;DeMYDhz7_;AL?`^!f%Lyn@>QjN996Uh6D z{|;1CRr!}bX0zm8E8lm6bgcrBZKl6i<5_L>xbrSAW}U#r`Wl;J)K^aR zQtmsA^YSS-uo#?pS(k)M#3^((yxep9e(NN41 zk%1u*ryUzRyBGva^{DWa*$bE>jt*`yXoMFvp0NLkvNpnLn+b32ZpJzBg7rpqhm}&2 z%PXxovGL&Rfn&`B&y%HXZF7lwLuC+mdPO5AiR4am_;4I5+aq|P^#~^)bAD=o?#}{8 zNX5h}tm30RxDBh3M~m`K{8vfb?AT@j*$^TFy2EgiorcEk+T)EP2sScpiWD#zW@LhA zo%TqMqQ_s4bMt)u;#q*D2jQ%9dk0g89K62RmT!;dDI)pwg_9QsjE1s_p=~6OM{^?5 zw2$}vfq2?3ykfjjFtfPWP!XVg+Lu?YxV*ev(fsMt3>c~eHq_DRz$*)!&gwx`*|RVnn5 zDQ$idP;kXS@BLVSHK9ufR0q6BuaQ5d0R! zdHGH5)2HtWtj|e>w^fW48*u8QSxOXmJF0e*ZV2PD(fVqRUC{i%(eWGq=9+n42nQ#p zEW}*!jZ3`Igy}{GO-N)(qhJtlZn_A1@q^nQ9o?cm5RZ)6<<+Zr7&TD;3+TkO`u!!S z%_v~BE{e)^_%=_my3HEw@#r`XGmzf){ZQE5dAOIP&gc0cx-^y^L;y3#o zT;?+U*0`#Ps1U#TEb0zO?=Y)Q29wRv>5bgnSS);^+K21L@>72&>L*0i9YJ3W+>B3A zR6L=%G40``g8&y^)<8_4IbE9jvBy@0n9l|Y>@k&{D<4WVrF}fdAcdoc)StMN zFlC^5Wd+r7109uT%xvN$7+|v;bv$rT8yO|x1)jce;R4Z=Dyyn$LLVm4&NwP6N`AvLcHs3TWhh;J|KktiT;1}t*2rNpXgib6ReCb3KZ~j38{MOB_?g3Ya zbgVfCViOeg{}n8Dri)fCP}-5Yh2<&A`K;|pHsFHefcpO$`|_|H+wR@Ffg&nH2~9{U z4TLC7LP?<#4VpxTq=BMAdJJVKQW_+sRGKuI8YM$Y8JZJOZ%NNvXizBBKG);@?S1V1 z*LHlz;d?#zaNXCiuC>ndT@uwV%&NiQJ34f$c6F7|=nY+kH)r%9_>)ro|kK$dZ`u1Uj!;>+Yd*Ec& zJ{IUHy2aZqN&aL+*-&%kfFr6 zhoth6U%xVe?>S>#pX)=?ZdSu_d*0U8mc7D$Y}sU{f6*sa!GzH3JWwNMBqz%NOOjJk+62Vh3|Q|F z0`=&h@tDVQ2-ioEHS6X4l2v?2-=M>+QvTqn1s0uWuYP&(M1x^obqq*c!ipx}8JSeK zC!T|Ga2{gU0+MyfE1t9^Ms+>XM-zs9Kq=4T%{>7(_el;NfQ&wpla+n;PxI~Q-@lK= zY5LS<>lj=ccrcMEo2FUHQ-_#}*sdCtF+8!#MXeWfLU}0?EA1gi36x~2L}$+Y*na?y zHZfixRx{unpX;>AT04l@O+F+1Fa-}|A7{ZSQ|@kcV%pV}H|eb$JaOCS7()qf@Q_UR zm0uy_09<@4u-vIxQ~TkPGFxE&96kbnRao>0DCvju!Gl4AJ zhyDyN!B}HY14GnxL@{Az+wosnW5YQC>R)_eIE%(cdmAC?-3FVCok7EY^e*kdc*?u% z;%o1MvGRcYC&P9ssH&P_RcIXk6oP0f6$J#UK0WV3WeHP|UgCBtOu;E2s6AV*D!Gl{ zi1XMhU-`T#ac?SNDw1tng_Qo6qWnOhy+{2QkB6OIJW1sAejSXkKp-C(7WU6wr-RrA zG5kli#mxt3O|W;i7Z=MQfu}=M^SB^C(>+N*U@INMqMT%dttSD?Nz7Ki5G0VkwzkNp zJ_CTOYq4`!V04!iojwFA-9%3hZc{{Xaiak9%5iA2<*k!WbH`3kEX$^^0*JWwh=NKE zWE|-jmfMz!w2y$|u3Z=@FDt80C=q~BCRDrn%9P(ODC2SJ$QNUZd)pp91g(jNn!^b6;LzCN5!lQ$oTak%fPxXwXQJTlt>Jqr3+F@7 zhurW}9ub0zaS+?yw0!DO2D~x9n7nS?Fzsp~@#Ft}=8?!)zYVFcE;QxU zuVnYW?yEhmwl(EWX-`X$TY4Oy0j)7AWC7gd^`{>o+HJ6huW+e53ZwoBPGh_j!-QgD zxHlg9c9H$#Zs11k#%&d^Y;snDjOBZYHDy&nrvvB?J zNU!2}i&V0@f6isax|j7AGx`du!jlOjChq{*-WgaD>UXs<*Z&J5Bl7cqh+GFYtYKZ^ zornEa0%zsu!I&S(`gX|9&aS8{YR7Vv33*bqo@sv-63_oi#`7KKk4@M&`TB^c0pGCZ z@j2SACBII;h%)XS0LD&$7kuX?q`#!XIJG>u53i($CKGB%*uFxougrI@#hZ}w(g4>s zg5x&WWy8<$#pV{%$Hnw}W6pGKci6nm`q_^4b}GupHrP!b>a*GH0waL?y4I1{D@~_2kawi6Reip<>#K|-3o><5;eMs_%?}Y@C1ktLX=zt zfs};VGR9m^e+w^Aj2Ybgti=vd=08sz9r$PM0DV2%Pmo zL)F-qr~q~a02THU`L2&2<#crHVOSApSb)7iFXRB)Ut2s8lGjEQB%<-NQWV7&Xa)zy2?kTn08@L-BxaDN6gDvk@oJ}6&4)3Vw{K$G5h+> z&&NkzS^1Ug;Z@fj?N%jeMTTio5Lh{;y$+FDRk=%P+U4$`#Vh-Y&7Pc*nZWn`(({jQ zmRStzeECrKlgi#CmsUQeY)|xKgUw&FRXLZ)ikU5970|g>UmX0m92F0~yf3yu zaA^+TX8HcQWW8OemzV@#c=Kz`Zz0fJEC*r(^vVKjs%uW?27Kd8J#cabD}>_DEXAQ( zUVR_lkN%F@;aW@P8rC!&YcxC=d%iJfWE|+7GgDYN0UoX;geMI<+#aL=m3;qc>BV(? zyeyG_co?SH%jf5%WWc%`!cm6H+5aG-xjD#JMm#8E2#<9;*2_J}>JDA-kbzk}*N-*E zL~nnjIylb|z-yo+&Y=_>@kQMwa+44I=!CeZ zYV27`L&uPu1%tdN%!4L365cmzHKUde3gg_HpCg4XMYWg)piZ~2?`;T2brU(m$wERZ z%hl%3f9(4rYUxFNhD%}9V?KuY9(nEBEgTKhdpICq+_3^cA`VO`Za8eExPH++lnUDb z-@F+S55?ZSy^z_}U6;60opST0b!dy~vs!*>-3j{WQtz3wtb$f5D&8_- zD`_O#1B^w3jYT`(3hUdwi>u+{YUK<~!2)jn_8?leWwssyqV0R=|3oN5AUCehtEQ`1yiQ~g3CjI{)=A4#0TNt8=NNz9oB8-LDMEo zL(^EPH*hcKLoCjc{lR5=oLAK26*in#WIhoW{()|F=R&_QCZ=fV6nbdc<}2_Z@x2r0 zqw84b@d^iF&P=b+oYHK-$Ge2Hj?B%`ibd4B?b4#vQbG%ILRInXYiFsG6g2R$GW1*q zBYurKj@9|!C#@2rnc5zJHwdny_nmulwnhnW7e7t6n#{yUa8X-VU4Q<&f@5^?rq!Hr zj0izv4CuL2o{9_SqxHEnsA;+_c-j#f{4(#)JROn>=6p{b^Y#IQvqq9#ZA#fG8ZgGi zB9Xfi8#n3a-a{gzAI&X98iTSxOT}k8CO0R~&?SHyFxGz52l=008M%j(r|H(!*Lzhf z<+I_8nC;%3T-)_`61Zzce`1M^=(Z@VV`f8X15=d(I_vFn?L~_WI0mY0A+?vaxO*Ve zf$ETrLhf|W?}uw_8{9r|n7iskuSZ%mYVJGHc2UhDp75}+M4UM)H*ek=5MA}8&jR!c zyRrl46lRmg%du@G^wMNSq!93K&XLGIL!IY7jJq9yK<2yIFI>0~$4(iB4|Rs>K$U5L zCv7!04&hMm{!qJP$6cA=SfD`tm;IXUBldzT?}7o}rJ5R(2gq#?w2Otr6ZER(N3Vpx zL-}ify(5>E$yqnKDxqIlGgAQokmL^Jyeo?aId-YYmb+EmGH?^uCN`7O3$T_Qa)U@Siu}>#6dB6f^WllqZf2~izMBQHxgAtM zwNQM(nMy@CLLy02(L2N0crm9C_9J&S_*UPyA3sz))*A119UUkqRP<{ly=KN6?~N46BuUKJ{k43w7deV zd$TJPB=GCe-`J`x$mNF|hM4ds*XQ;;rVb7cVVln<;XQ*K+Z{*h8B&I>D-BbDO;gqb~XHxhS6pAj-7@dPPlU^xuKQRP6<5Ps3IL=W%+Tj4=e z{eJryZfP`UAGxn;HRdhm3*@8BUO8$nX4*lK)!}XCC`@e}M*P21-V2XWF)nnU4JA729rb{P_LSHv`FV zgRB)rzqH&*eX|RQ#rgB+Z)>Z_$<;vTIa5^hCY#Nk{@Mp8_X7Uhh&U(j!;P*fp1SR3 zG>pvp7~`8}D`%Bl%g;ZWw|MWLZP-pg3VboK9l=nm(lzbQS6=+JYtLjn3wUY%>Xu`- z3*zj8#r^Gu?D*4y{8KolIL#7Dx&;VfSClF`){w8q)3>ocYgtxqSZR z6W^AEl-ysP$itmVyE|jg?jhldr1)iZgM@J}39 zhKWw%;XcDLs(T$p6v>GYq-_+;Dq8ZDGgpO0Pg&f!!R0tZLppacy`R~*mXG(yTDmOA zQHry7AK~1@QsS2`aHb{z{@9W0zKwIg)0KrWQ%X5@-6Dj{7HjYZ&&kE)kTKao7x>@9 z*NK=*4P-3N3-VXdw!+wmR`(Z8z#C`({Q(x=g>#2;D119F#hH7g# zWO8wEIZ^@xP+5#kf>Fc_r1$~Y75h3aGBT<7s&>NMKK1O2`J5hg_u`j!?Lm|=3if>n z>0-UGp-vaa5!+{ti;IY)fOWFNn%hPog@4;^!5e zm4tO$&z3vZ0wlZV(W&nb$Xzuy$0a`&egT^tVaVzmQDg!5a~i}OgM$j13o8+!zTSRp zkAJC?;WZgfzh;YbJ>7H-d=-x1xQ65xr~Jb-H{af)vgBrCWW;_V|N`!#%A z3!+}H8jr>qH$S^YLYuZe8(7a7wureB!n2~_vkJ&@L9{8~~yu`mmL|C{x;wpyDrF=8{>j|dg21a5992$&`#-F!mj;r;?sCz|T z?sJ+dW%og}d_{Gw*6R;BQMPXGzMF7c{}f)~SrO3JP-F>)AgIxOG~!`H&yB~SBl}<6 zIn$8qFMJrgFzdiB5ykv6ap74wq$`LSK+|;- zIYe`8gBqXD;IjT{(FK4gd)x{9eN~DKr{-#aT>51<%4ad?+GGg+PV0pl~G)I z2T-u+^7VZZRERe+Dryfg+Kl^Qw3CXa#;x*r%vRkvL_&8eAqq_=V{+T*a?OQf3C6hQ zQeOoE^RKw#mdAOcVaCu*}4cvFi#Yv#M4(7kV z31}Mx$m*>7)zI3q5wkA;_!bvCE#ttRqP)VVfS+X9KP-LWL1GwaocI0I3;|M*nUGLc zGlxE+lwW${F9^JW`9I| z7WLk2t?^Up(rWWqVlGfnr%3)79IV5F7zTkBQJ~j!d5d;BiibydUj%bX7`}yV??R`> zDR^td(+W2CwS^G$Krv>*0dTrB3K!$Z#Kl1;J1uY0{&khAYtxIMAsVw`|4tLHC~t z8$ZW-2da9$f*`jCwI)ARR&)o9U!_BXXk@Zb-j9S#1%XzK+>sEsX)_j%iYD|i?vmZRP0L9fKJTxBYZS4J|El!@z@w$0{CK#W%0i_^~3sz zWSpUSjp6#Zk@E!#=8RQ=dm;(v;YuxrP)f?rz)YF;x(;6K9jV&O1uwZ+1%V*Js|^>kt|yK zYDW}EpN+st&!0P2*l`#I(%;>aMfYUx8B%5=*g99icge!eXFW!!X6qI$D!z+RK3<1v z<4HUoU=ELb&jDAMJI{{Uji0MK6F zGXXE@?*F+XmnI#gI0rzOTi*k!;Eb0jou1u33%+=I#8&2QYD&`~5!|N6$(*BW#;F8Z6`M z+7CF(S7Fc^>^1Uc6KVPX@f|5 zgB#;G53>e85Q26=8SP8(-gD=#3Fjt;?}6V@Xp(3_nWMxtaW)KV?gCc9SyXnbzofOs zg(M0%B4DoVM0hjLL8&|v7mmdau?~@o?B;9xJZCQ~0zOIz*WbHiarY%K5a|exz$&eS z@}vTDLJ>HgNWQuPF z3zG>HJjn=OAQ#)>_?yRRKC2)BLjnC?TaC~d_({$kshcI9IMYXT;~i>Op0w=G`;>6oZ-pA`tkLdJrmW8{5&)VuAsp-Sp-oskLwre zgZqdj2{nxE;g>5QC@n>CQm>aQnk&KevsK7-6cOfn`jTh_r0~)OL_l?6zwO+!IlaPg$>p`*fWYsC!a(aRWD2ZTIGf4@cud`QTYmq^UO zT5Cis?<#Qzk~A7mspCI6%0Q&4lVE~!?V805RIRSPKkTvg|3J8y=^@Hw=c57Pevw*} zUs>^SucgFDl#PGstf3h)d`Y#62q(S9k3`L2i{1ijw*=M>(B{#4wfV*{rbD+M zJ`Bk7%Z2DXT0N!&9WppD(q{0TZ~{PF=tqcF8cCjuxYMu>l06I^<;CiCqeg23bRsU2 zo%=wnVNfnQ?%E}wb$#isAgFku|f@q`?4Rr@KIbHBr4q5@e)v1>GF(G{{P69BGnGGD(J+I@lP}9J^ zHU&2#)iWEM*d`pWXn{uo^N^L2l8V#zFRFQiKB0un@ZI%d2D?DK1LZN`=r9&exHPEX z`XvnzjvQ#-@Q+Z`fQ{>cS0q0aPnv6jAACZRfPej+KQglmXB6!!Rw0Iw=m+dx@>*K9 zuqyRX5RzAASz#Qjwh7o8I{h+7nngJQhK98`z@cizvoHXm_~YsT$Ox$jbmUM9QI?n; zZwn8nLI>a=Q4hg9L43Xtku^f&B%yw29iWeUo6YmRLKfr+ot^rIj~9LIWjlJSsd4Y6 zW5%UHjbU!j>zjTz9^0dc$ctXF8Tc{&@}3yn(ylH&(eB*^V7T~)_T_+U@z*rPJ;90- zzw$h8aDMkczi`G7cPd%pivB6adPfC#h3DE7T~|?3dWqB*Mt1^ExL3IRe7EOp*G2X| z;V0^s3`Xv4Eq~9C1ONyF!%3yfv5O+i+?L2t7^xdcNy7oD+DnRNLIjSXea%+2nX@|a zT^VFC@I+mQo6q883gqxAsH?|FIS4-e(W3rSd$my8f$sKSpT)oa_CJ#PT0EPacw}Vj zN6&+t98Ry8ZIDqC)Zt*25Il+5J`;hQ;&8E4(buzmcMkXaACW9=e)Wj+EQ=}dzK-=D zopI|VwqB-eKbSoHxfaB9B>w*MX9bokJoLG?=M6gX!eiIt&h*`*CkU3lW*u;x4y6#o zq#`88U;o#=HajIgpP#RyvIQ&T*lUSfusLw~^rQb7K+)+7%8xp2MrZF-i!~D8m1h}o z`EqANk>-UKm+f#_1_w8OI9G&YKN|vsm}{q)jx~Uz=RW?8^t5jmNnad%4N;n%}H!LD2Rwx8gWF@&-e2vr@b^CrTxYb(omkD4s^ zQTb;WRReHz#F~_gD5!4+z08N>zYbz&Y2Ckq`zMyU&=1hH>F5s3IS(A$L6q@>--Ff1 z0wjoDA>Au-hmB=t{HR!6gLo#J99}Sib&ydH0~+BdV^OyO19TVRwE`>|M&>>TZ+-aZ zi`yvR&M8?h>xq*T4Gz5C##+NKElGhSNxcdtRC9r*O@iU;1;w}=9To{i9^zdDx@jP3 zF#onf3A6%4w3Cz5Y}QpWrE$`l z_zQEp2DQ@&4}@B~k$s3Y`8h(;b}`f-FeSKsDHlDVGm`CIxA?g!KY5&BPn3o*Q^OltC&Ph||+pm9iL%RxPb zRN8V$8(Jij@OVDU`wDW%GT;Y8wDN#v5(4MBw&4{qE8XHTc_wSY7T$As#O;r52d`d= zT@~kJ+wA^ofC@pG7h9|d@BX6$4Kv&}nBC)>R&7Kp$u0IrNr|RrtUxj!a5tV~-q#{W z0LlPo`i*>;+Ac<9PQHWBCB#k`&uxIr8YvGALuMTcRlS(?T=#{f`UUTh0rN9T)do;` zo3bLVsydy=B#nTAfpUY0*+5sO0>=9nJVK*VeybxaoDx_xtfi*w<=Ba^<(fh;1s|3& z>)3$> zV+MKA@b?z{^H>6x7|Y39s}l9AHrnKm<0FA{AMxEJvL4cVN~#8~Fx&Qg#R$QVkb|)y z{X~FS3q$M)N!+0Wi4qX*_F~>OqXMiaQcK`xZlYQz@F!gUFlPq+KE>=Ef}~y4=MPHA z*Fesu@W*FI4MFJ?j>2#|zq_9Wg;32)`GOc_amLdC1G8Rbm5mSVTtmn7=>i z2#GFH*G5SgfKXIZBB+56j4EEviu()!XE=`9NTW&lrW3g>&PWU8YUE*vU1)Z`}UGT zFd#-ZvAtY)m%}jVud>GK7cUxsFqrQS%rwg1NgP_8Q~q8q#v}~yYgeGf87P}zUsvky zM=S~C!ckXPf(#4gaafu8Nb13=p7pQ$6=PYf{0%S$a0DoH+PQ)ox5JE=J9PvPEJM~3xfy)1qB7``Lm}AC@5F%p`ct=MZX5WiFbTs z4gce@7ge=av@*1J(zP`}k=C`hHn*}jH+gl>(ZJTu#LAMDiJ6({F~dD$dwXj;o=1-? z{_hGVD_f&SQ7su(aF^@W&(!QtP_T88KbJlWW|^R%bTU1EDx~C`xH{qFtT;g4vgH(> z>2{fsQ7$v`;XSvuNjG%#UrK}+srLeI;HTbubBZhX#1Ea)ZKEdaA&WXkq-CYb=z}`J zk73>RPgqBfJoshFI%;VCdJ=#9mXhe!DZjYq$}fyg;e#WLu8S(6fqxJAiNfb#;{yui z#gBzV*YEvzMNZiNeu;&8?b=tbGf!b*VRNnbFP@>?I=`g;nu4O@(qs+q-txd~&ELs1 z_rq=X-5&8WrnZ??b1m=ld*hsm_GL=X_Gc?-^$sE%u+ z22tu38FJS?92_|F@$m%&2RBVjObpIlObPw-=g&WB5~>I{lyY#_<>b&`zkXe8OyKa( zolKb|(-KB%>TBMVqVEYT9;uhm_Vn~9f9`k0F!*mW&ZLQg{kp9g%VlGlCORs27@L|_ zXcZUmoHi!ek8U5gPGY0Dxw)Z)M??gd(NIwl?%!3u{p5W7Pe08rXMP{(s4SmZadsAP za{5cMQU6f8noCATX1vC2$oOB4+h1CZvRu)X681PhmH!5-n5|S|(&x9gGDKWPMMYI) zF~-4Tzxc9mltJ3{e>YAWSm{=G$ydqK{;RYmcy??@#A(^SQcx$;7R{(u`0^4N8Ceh+ z|L80Bd9>au|Lp**{#><)J2WyM6|z;o*-{~Ed$2X@?Cd;T$rcz+hI77q$JW(krjlcJ3+9bcMYwnt~S>y!$I{sA24N# zq>PN=#$=88WOba`Q2yNTX>%|!iGcg?X0`dqSNrAucd)IeXJ%eao8HKT2g8nUiDuNO zu$_|#S+g3i_|cOlj@2a@MJJjilVm(q%fG(9j+d|e$4~ie^ZXSb?jF^1>ZodJlEBy+ zo11?-!Nipib zc`6W*oZR^m;hAge@>J zO+1tglb8dOhK44PL?<@dhSa%J>{5F4)ej`C49KcJ6|mizmu?OrZ40N8WVkJWV$VaG zqn!7u|FitJ%8Ac~-`xH(ZB*~vgu_tWRFC%kXm5p(+x7uIlV;&Cw-0T=gY%tq*a(wM z$nVM~BqXHFJ(a}kM8IiDLa&_r5oZ!dw>Mv_iU2+o!=&}~*Wvn9U6;@GI|qA1I%ljK zHlCkEUJw4lCdJS=8%BMDDU1(;GM6eCDt14#jb>1LwP&|t&x6OP{?y!@!K!-e8iwd} zjkkK0Bct6yXX%j(1n9c6Q(k6f<{(mDyeJ8SJtCiFk*+HqPf|!6t5Ir?vALE+@{&D| zVMn~Egv9$i$<{w(R(0%cqfElMPcMQW@xe});LaLuh12@D?ow|?8Pol)GV_u8Z*~jj zT7J)Ub#)n33%?H<;F|Vc3HN$_9&2+M*x1;nbbg;5E~JcCyYvkj@D(pE8hf4|8fnCY z|rVnj%bLRcDsx6&L!$D{x?aD zCo0)HJ3AA3ok9%SqSe;QNRwn*ki8-3S^c8Z$Wo)+5@M_`ME}PxzoR63ox0q#WP(|w3{UNn3!&Qw?@#U^(~=PIIQ3W6S1dSPE=}ESijEG zC@0###GqO6p`iBY*O$`F^z=frAtu-TRg;08`2l!=fPes$m&^Uxet);%r1a-$#8f)0 z*scyUi~O5z@GrKR6+?2-o_eV|BeKbUe}AnkSdLRhc@g#R8o0A|rHv($sboqK0;rH$ zr`ITB`1I+M@|SI$&>;;u2zDczXCpN&C@;P!QQW)teUW{z%%BZ#*H!ID=eRzO>nYVG zB)t@d_xJZR3=J<16_8{2zTtP<*B@P2TkH7!<1H(eW(ubj*;u)i(R95pb*LIVs?1`n z8R8=$n{hYmfcw9Fi&w8+B`=kh!R9@Lqb0q*(wlKZG!V}K#=L2q*im6KdoXo&8e@PG z%WX%E-0E<9jy5XpQ9^Z1%?PYM{AwYXbJ968{yrsTkZ>4|Z&JtQp9486BYmwg3 zK9iEV`q65tR=))Gz%ft$A;D$?$R2 zBavO9cA_;}VsfV=finwsa*6p!`0%i5+KG*gO%Nfg9|Y3vQL};`Kx1E23ObkivhuXP zK$_Q8&SYX4D>Z9@*^Xl~QOMND<>Tj%W7fL{heB`Q%M0pIm%r;;FnsAM$F-m``X~wY za?7NLC47P3zklZ=Z%~)2X@Rpj*TFfZ|10w0_&2+j!WzhCY?kA(a0-jeM_7JEGq!C` zH$aF^?^z+|bN-$o8N*W3!gsXuub`$y_)pXT+9$MY*R~-PL?k9kwSJJ z>f__{`}glBuC6>Hewd#iZ@~R&WT$>3NTF=^Pm>K`AVL9mt_W)Bne~Y(v47*^;|E78 z1>CN?#vx{YtD~iXrzih*`eX$OUFC?_jJ>n6XdoG;Ta1;(Y4?2;x}xo|_u}~EDin(VbdVzfF@ zHDnz)IP17R-n!V6X5-+%-j2C{ywj!lRsVVIzjfY-4V$&mQbHDebeIh)I=c5!^eW+r ziS4k|1dy9J;pl(040CcNZkNc2Q7g1(&DWQXO$kEL3CJlBF6#Qb#~F4->3v-$`W5Kp5sU=e1wNfyBrUjUv6=KX7B-8*njRpBCWP^`PMtuC=g~trHM7NC0wM)NeFZv#?{Oc# z+IGyNS?TOb&UI*yWgZ?I+nM$!Cn`%4@Q5ENHZmd_3r|j#(bP=TjsDsKc_&mpO|0ju zfh44?tD%-QRh}n2L-|?|ULk?FAI`aj!{9>zhyWowzxE3C{h4!_8EXRqnT?}k z=F@k#ssCnWW`@Vdn>t%AajY$cYp{YZC#zk)ec=^!`#R_}>4FBS zxnyn2%&)}*Djqea-Pp*;Mu1u-L;0i$92WIGJz+5FBIm7F5o?fNBve%iSdBW_g8sz` zdI?N<{ME`|#&asy~sy8$+In?Mx%cZMhQj+l2Z89%=Gp3Gygu$QL7>2bAD-y;^qekN8y{TfkX_G z^v-;Te9i!DPEJK$adB}vmHc*?TvllwIf6+&ifuX_v=0DwA-q2+(5{K)bFqzHoAf&K zc%`R@6-u*_b{F>6_LWj~iy}R8e%Hvx#;2oY7LpJVxScmYwg#GDV`HPFrlqm2v6f=p z7_zX8&fVKx>htmU@5|TXMb-hb3yXB-mEX(D?_6cl57nK=rQ}<~2CE$V28k5{m7Y zdZqqaV!#tneppSPe={j8ivG&woxBt5f3|1&PjxTjoJSLEY&uniTi?pJDeA_=fVRX7@HW8QTB9(Hk^! zPvB%%QQLh>R9Hmhp-Mi9cTb5Air~p^L~E2b6!Zaaz7yfcWh$$C^}@+GoC$nHz~}s! z-*xvMA7A2JTg;u?w}k<>uwVr+J;QGqM3?;L5(@CY0~u|hZi8ykD^z)T`CQeaH!wa3 zhC&!FsJ`uQqP!mNa(hTCpfoi#!3hyEH_zRTg@E>xlZ^-qLKh7`{{%xz8v%J-A8L_8 zcKa5wo40O*-&U{Wqn`eT zQY|wltgWpz%s#ARn&q*c^~I>DQ2Wbq+UU$UVX7Hp)=l!KjTxz5pX%ycS;>}~4zxS+ zCCS9(Sk1ycL-3mci--ji+3YR9NZXXJbw9l9K#`$Dm#tQuITB*j`Iq41^9X7Ly3)EI z933fCJ8$s~(LEKSxWF{2Oj?!0l~+kfN#nR|DDToKJ;_s^U07&oe0OK-@81Q;HLRuy zfihAHk^PGEI}iStf@J1L)YR0-P0?;ub@JO zwH_-8fu$*S`@3#F2DHUBBO{}n0evQkjBqHXw%Z=n4VQ$xMZ=EQ3_i7aRC|!BYx7K3 z8#`;d)UqpFsv&{5SM~vrC8}yrb6MNlLlHBgkgWu@Xaj=&fl`8SVYm{z&gDA?tKX9}zQ~sj#&<~UF)e4JG;q?pJ z42w2Of?6u}!-i!Oj87_&>lSa-8$l_hPjU!opM^4gMIi{dE4aq{?c29`k`MbK0US$C zQX!{TOd^u@2Y^l}eZs=-iz|E*Mn&qcruTRCW*Xo5p`z}*{qYtp!GWKE0wex-r$8Qd z{QJ^Axic3FM3qh-!97WY$n1z!{KF2SIC0@IYaJ*clLU--V=*yCit`y z!}AOQaPr?9AEex4n#1kfj~d~o3AwX#`f1WEnA>6YbB8Gr995`gN=6PlEQU^+j_-Pe z-1BM&%0sI$DT=48J0Y{?_Pc2h)z1?QGufc`T4VYDIMJG&qm!@nX|{G zOP8c#AHN33q;{+sZA*X3N565}KJiDj#831$+3DZ)wrt}!yR?B%iffVqhR3s;iDgJc z#j=~>Wyz+%=jVP!Aq&JZk&hF4L7J*QvELSA@~`t%PKh;{nw_3)D*E)mm`SlcgOrab zR={pv3Mt&`eQz-K5~nKXxXeYVI4@!{NVZMa=>hpkUF}cnk20e?LE6Ivh1OKC^&~H?b z?TO~sqj_iP@uzXXfg|I0?JhA<3M{pxTSM4sOZ3o#3`BcsuU zSK{8FQP=weIOHDsDrSL;fttkQkO~+Lcqd<|LvaWR;}+sIH8qU^^GsAaq$y=9xCkWU z_=cS`SM`?_N`J(a#bJ<}8Zh&b5XbR}6}@UA05l8R>JMZigwYDbf0R04YNzE7%nwXI z4U4D|;xw1zDgmtE3@jZrBO~LG0~|So zTtn!sk*`!hnz|eo`NS>mO4uuF$B1ObkbM}xptn`Mt3>!;DcmGZPQV~XskJ<@BZ? z+MM1HxGmd4O|gO{`YF`r^ob zIA@h9L*atCnoPM~z1ZL!hGF=d0m+1O-KcCClj5KIJdumJ$68gTT`F>|=i&L!Yai^k zh)s&8(-*WtBWw7kuFGwK#^T=PDC4|poKOGnwR~5ulSk7`iv-j^KWAeCvK~w~Y(H=h zsP6sr#J|+&N4QC;oydRxbnpD1(B&&G*xxY8+X4)-_5P3Xk;%STHCv&2|GDP}IFxQH zLj^`qii?fC$7B4JmEs9H0VU-d0H`)+rygIFvg@Iu0F+p0TdEcjOAV9x=gGxK=QBl3 zBK)aH1>9p{gCOX;Ax+p9L(Bpxn1PHLF0&v8?ARX94r+<|2PkNIMw9(680wJ^=Wpus zvj$Mw&U}KE;kUB}Y{AB_8cb&Xm!QRzZ znk?E8NDyl2_(psk_aDjpZbAD?d#(_fo}HbZ$Y(2|92^{U*Lt{dm=C|)8nu~?!jic9InIJ-UIT7Xb^i*t2@Iq^e&pt`@(3Anu6m4ac7!m6=-?TSqle zrr@d3oC7yY=fe7Wa?XuYh*W*mE<1cltnBPjySw%%AXNEg$kQ*%dGT30 zu@OP%QpN*!RbL-$ifuz+Da5*v$`;6TVB~9bHR?Q15X=dB6AGwgzA%<FOl-Z z5OQUbco2^Ao7b5D0QFQTzVY%_OwNzMRtnX{m~^#)QSGqd^Hk!(f7(#JyJ5%KX7>gq&}j*eVBJTnUmMxV!@GR^=fe#}?q23>-eihfX zM%!wIvYinqXb2NP9oRTIl{;|5>wh+3Bf3e#^&QUEH`_T3o+PHBf*09JN_py008Rk6 z^pQ0Dq`xGBUK9PSVS1X&HNDttu-G>g4*6G;KI;9ADOq~}rYoqMySwQ?vb$F1IYTo?k81LRPd2^_4P$S zP10RzrsD4I&ax)xuq>X*Hf&XrcUXa=9@M6F0J;_lup_{J+U&26@D1IN%TZ>mbX=1F zHWC4W-1D=Pl$68OF06?1Kut{z`kS3yn#aF=`;|c~LBTqye@5hqKcn%=gUTQcp$1?5 za4c*212)i>5>UKer-w9fq^TGgJIq^x-@VfXgo@~BPzFOKj@=;YVLh(kn5+6)cqvf( z@5Y*J{MEaz{7SUp9tRar4I#)F5{qFD{%;^n5m5wGI#%8KtHpZ(i}pN&1v*`+qJape zX=A^P>_im3zQt@f?+prQ1+~ zq!fI-IE3Gj{A1W2`vZt?M$dfHfiKMP6x?;UZ(F}vJi%ni zI`q?ksTzo7fE&fqdQ?laOVtswA2?~*WLJ?lZ{Hq5nT2rq9qK6$VbkgZEMJv4^JTSh zs^C-=Sgwv`BLbjHUv(yOBR77l8&(dRr-tN zTlI|4o*;BGH6?25u66dZ3 zsW*Z~b{?2)<=p*Gu=vcL$IggC6rrc~^{eBW`g~`SSga_cN#%GD7Ls29I@GNVpyB9)}M+dpa5%J7-Bw52^6+R3|$UrDXW2nkz3 z@I=3Uy~s6*5a!(F?}XFgdesIkl-eO{7Iy{6vUX%%|8hOfte8<63Hd6s&N458YwTKc zJ881g%yK2qz4nd7dBv+XT49sc(ID;z8@QIZ5Unjw{nBkX6`Z4Z(T^ zeYFbfPts<;T7l!YUHP%l8rPoui3VnTKqj4R+Mj@%0$%S9 zB>465Zw*jL$ru}dZZhi!fpWCu9SC@k0sy4&q5vrbr=ad_7Kpwbpgv%BL3Kj-_$3M` zmiL&M!w|h{x*j!f=tiO2UrRqMVm}Z`U`aT}UFU$AgYrCEAp@hRsK|W0A`HL*p*B*& zf-Lz^?dyY~0v#hzpSf?EbE4%bw?Y1LS;;GB@MNN35HfnJR+#JYzio02V4m14Es_^t ziMTwD*r+5TADe1`PLe5|&^+aJ*3l(+79{-X<<7lD4=@h^=}J7qslqT!9ax-!Lf8^GaCe^d24Hnf`OrZrnDKj;>B(X z&_MJ{fJ$E3TqHhj;pXA#1^G?e>%;-7gAU&t_y~akgj)Hil#)i7IU@0a1l~{vOg-`C zen7d%>tPYG{e~^kpQD1UqM~Bhl^iUSH9J~rmaAU+9)52(+l&=BlmNN~ApgbD(wwF) zDxYslavzJgbCm`KbcCqRV<9FG1&J$Vuv#r+V+o*ue@}aI`|jN)VCxuEKNZ2Qn0M{K z#>dBxl*s6Lxe3Z4-HR{!KQMxQ{rtXy3nk5haQgmRD4@f_!ch4Bj@tpkMNL|tme>Ti z3+crlaEW@}eAXc^P+;HAInb+ol@%WGaRn^R_x1TE-8T3UjGK02`EX~U*m8mg*y)6& zJ)pyLHOfOgPmcKQI%JFI#g&wB!7l(5 zfPE9Rt3iY}wzn}*%K3uY3#)Jlma4BwM#lh^H7o6(&r^cwgWh@6#3={rKSUknbz)*Q zY<~#?nN%DLDsZ17#PA)&-&*NNOFi?$)HskiFyMMhkyWt z-5}jMAbFucadL73<|}z=FC-*H?Dd@5;$G&$lKWN@z6-E?hno%9&t+u%#B1(@3og#o zneUH5bqgq#9sLPuaNWM$*kP4c?L=hMO%wp(#aLyjex`mB^$Rv}<^#g)Lh5I23azKDtg1tpt zipX~F-n|PVV6Jb!D_8>}24b0@mQ8MlbN?bK){gQ%d|7Rhnwru&bAeh1rub_xW#sL!RJ2=da^cZk`fzZopHOVIf+6y>j>LHGQhVTJ)r+ajC7=ZZ)p;m?WWF<9f z@WZm-m`obdb_<4}s;`EeYsjn=-~`*K{TK4#1CHrnZY!cG!#~u4k`yA?0&>n9_#1E; zLByOPpgJHi8}zdPz@?|hhX5$y{DEO8q_t@u45eyc^{?Ndmih?ACfMA#+IE5onBTyA ze}$<*VpvTLKe$rp1dlhb=rsqm+Gs_>wS*Lbgq50_8p~>QGsR<{5IhX< zb~_-Z8W2@m=ZAa@|`dEc;ebA(yAl4wz1_Zxjl($8D+v8#eflwDn;ti;cmq z`rT8$u9ztWDkLdXIj}!~@@95f1*X9BWDl$_al+tC8?JIHXmy0Oxcn08`Ulk1mkYt2 z1v5g(YKTb;c1@f2Q-~#nNG1H%Wke)~c(S#(M+F|JF=jtF6l|K^Ahh=XLG|#(xQiHJ z02|MPjPuw$g~I|#P%}WswCs6>mj0dcgwL61-H(^I^Z#= zeqTuOl7ZY0?v}t-N8~_3oN?d$f#x^%5mdtfn0+WwUO{FOD}NoHlacTn_kag8f!PN9i&m-};JP~w?fU{L|~ku9D--i^%1l~0K4IhukB3H_f2ZA0&2SAUrv{v<|)5@XQcs_-Qq--KRE@p zGXU{RB|M-^RUH{oJH0;*lQj?eSq9|tIN<<)e>9LYfJzI46GW8vIhlDa&)?s_$;^E` zTQQ5vZXWaPH7pixLW$-W17!R1#XHcwO-oA~Q1jGv#Mm6Ub1SS{eqQ>(YW=zCy@qd#Qwj%3mz^8WXCV|H!LV%QTnM{s57 zZL=d=7krK((=K4_1a3|FGXz15&}x~1cwz*~K-|P6c@ZJzSJxFWalVGtFciZXUl-|cRV4usU0yDTR@J>hjYY8T+5`d?`yGg=j z?G5p%_0NiQP0L^+of^9Q!Ccj+BM7Le&%!9h{^no1b`4x_&%mt+>iCZzmmrU&fjc80 zYj$PDENTbpB@}pRZO=o4v^9v~h=&PGJYhgAfJrOUpV1N(%3~s!=nRzt?Kn$p0f%K= z6n3*gHZ>~+h46uuxgIV8u)1giKbW=#BSNZHSf1pPk`m3jmTyTtk^#q0vs8xvP}myo zq1ZxxI6Yc<)L zIUqQ+c<*C&K5DUlhN8 z0S`4PDWIQDwzYhPY__YJG)7CV)xqEZaCFu271kXrq5yFSyt09{EkKZDwf#Vc@@BVl9QDCBPiK)%}oPhaZ?G83{~ zd*GCw@(kdJ5Xe>LTJ?%cW95$o1Oz}<9s*CH^kj2Xio^Q&$RHJ*R>E^l8568|5hj{q zo^$i_VvsN(-UWh{wiLi-A9z7DC&s~Mn-5$Y*phjnkZfe_;a5j%90h21@p(j{>&pzz zYx^062<703gUFxzHQ<$Ywi1SEb$0+^-6|Dz2S>3Be;y#-bCH_G2gf()ocXY~T3nn426Pl>7Z-zXGD@B^^RtbMvO`}T&IHp({-w!%G1pQk13eO{N}#$95T^C= zs)si%tOWk88~l)nIafv71?d54*Z~B=sDm9jNZ&s$Ywj(R^>O-!!J*5MwI4RI>B`ry zdtla(&)4KWf1e1%rGNe|EQDOv_dr{L@|_yaB0`d~l|Nm7+`s)^{c= z?n-$TpuV6#>dBHN2M3e+O0N_hq~gpM{k}N$n&-}dpN-(y1GCY5l}6F(Y9t82m!jx) z)+E7OodyY)Bb%PLQ&iK%X~wfTX!uE!twg`0=yXr~eZVG9Ok(OL^)j}n-OR15Cid?5 zJmy@w)LOSaWW^6P%%K?g{J}j2vmoYILn53#(^5QsHmG4GpZfHA&R`^|(<8WEgZ9b0H`1S}3^C|f-4OA=*-_5V3Pj8~2N1xpw>B2DK+jPK@;>I`-RD^x zMaHjaBBDz!*D$>+X`D-^I({QVd^r?P(R_I2MTuib856!!7hAJbrEg9Go;QnVU6TyC zq-lLuI+c}SYhDUBkpoWXwN6^$ZE&`TM}4=QYWqz0P}UIGKWr5}FnFySPQSOnXE7ZLoy%`ir=} zV8pOZdcR2^6(Y~R9LyTo>N@8vxzd+~jbIN9U(F}iDHtwTZiU_roTL)p&4a0K^B&c8oGaxj= zng8@EknB3_3{qtCZjnc2V$rbJU}1-sg{L2m8S9807;_&`PH1~^QGsjMBU?W08p6E7 z8N@3n04Wd&u4gl2&jM3k*Cy+7UTJNrNY)GzlwlKf+nctK;wRS9wQnhh1mS*m z@)xm6K_x_*r)<^(BQc&DNXF;Y`q6pwy(qQ5X+)~xo$%F5t-rUH`Eli2f2U{elA)TG zh96lhcc=BCAOwk=+y~JWR9dY{HlV#CnSp1^2}g`hTjaP2)hTrw<@4I@L%`BS7id#H z+?zT9k$MI=5`8en;3ZH*!Q(*OjrH%soJv zJjG-xV*1MWrcasj#L!X#xJ(QX2$IS`FrWrYf0qMdbOK{Egt?Hqy1Jg)tG?J+HTgw5 zueX}EXQxG82)s@X4tZs@5V16jC?SA}?gI)z_t5*iXbE!Ldb0X=49*yOp4@6|~~uA|8|tHi%D23e-%`|B$%05gD~`>(@hV^##x zmkHbi0%(lrHD4T#`-r*#FSFQfykRhEN#{PCb8PMK*J>5|Q>IsL>(w^S`KZbi^Ry%x;kM@RtJ)k70~zDe|C-0PRCdgZK=2trFvH z-w2i{?3~Wl?HZ&~fx=J^Ou4z*HSunLSuLGEhM1iqdn;Pfb@43j_AKL zf?}^pJC{wx#-x0)QOJi@RT^ZZr1U`(H6JdVj)T4&$oEM15v)?@wuUFo3wd0O&nq^> zQa;!NcF#%PUB4$VaY4-2X96E_XQmeP@c&S*{v?RfMWd}^zWV(=_&i^ zY$>6P-c%*NYOIy5&0EE(xF&SsuM|n0d)BBIBZ~QS0K&TMujL9fy{w~&vC=ewD=RS4$EkSmGqyTAQUp^_iBI(5 znPOas$Ns7sfM6yeAfgNdub~c5}-}>$- zj!YTkYrdU7?@^f%q-OB6$*=b>u8eQpv{~+dsO`4K4r-6p;O39Cz;!^|n_!T)TOa2} z=`F>s*nf$^^Ls{cE~wePy8jPO)9TrY*qQbhn%M&O-$KiEW8vZ92kTV@&Kos<+sOn_ z-n@AOc3~DMIjEVLZ+R2OG+V38qSJmnyCQP%?4-|shU}eK!5M!pHT{Mku?4T!DId}w z1&D{m4A%Aeb7X<4_eaeV`CNK)TkwPf#?O5t2iVsGb=s2_v(K$8b6aGdWNBDkckbLl zoYug&6|2{1RhFc=lqW5|P#Li~LRBU+zVxI9pQ$ION8X)u_FaF);}vC%)ZWt*j=Jg` zY`c}v-$zq42abbIPes$!GqlOc$&deie)llRQdNI*nupwUyo^h+o&By+l;1Ee4O4UE zW7oBVUrCEg8vcMAiabwTbNX)}wh5rwsq{piehRZ89d_?C29b$m^(X?FZG_!F7Uz>b zkb5}(dA*$2t!f74si-Kk%eH<_?%7s)xPb!g(67K!8jZ`{c|UAi*#w$r&E`c-HDf(; z7;lC8;!L$or<>QI4wB)1@qRTi?y?zIOyRCCRl4%IU#_0wrZ;_&z%i-f_EZd2mb|VR zS6KOmM){=p9So@yfh3?j)K12QV-xD?7~T`(VM0u&O|R6(5kc&~A$p z{ek&LbSXKd5ewo~#kJ-3#rEn7-E<%i(Jl~|CBjgm#ic`>JvaO$!bchL47JtMb|Q23YJt6tKegEp`-Mg$?95wa;JCPv!qmN2g6xiP?3 z)e^i>!k?aG7jpVwgJuEs*><~PUA%^EN%Y+vdbv--7^`c?D9?t(3LXD)=1vi!d$TaI zc=?2ir*hJ~bYcvKCu4*v-&3L2l6y$LKMtIWCBsxG9p#FNbKcVF$v>oh+PG9*BZkt4 zwh@7;Pbv1;rW+zbf{bX3d8CmyIgVbLtN(9MF+Ico_VMpKH#HX<$EmQd+&N-fjbIwB zY?MkJr2nevrUwNfm@J!@*$oze(*6`bc*@^=5jyz^ZhiZ0&mmtFf_Isdqs^`p^LpSLW~IvkCI~SbAn6gGO0U z0%wPyK@pDdxfG6(QtgM#3p7onm_%8db*C>M%nqd}VMNeO6is(l8|BOT0Cj*2Z6iiWO?@wlCW`g#4d3Y3{ z41rp%LqJjubX!oC(m=I0|KHIOi*ffoFoSKk3no0Ad!IDFM?viJ?H^GjPoEwGnM#JlU7!@3h^?xBz@M-5Zs0LIUOj_t0Q{;h zr0uTVVuQKSyG9a+&>Z(c`#V|-eL+m2;JahQjj`xY^=r2BD$?`612piEW+7{V}L zoUVZR9Vs*x_m22TTY%QR_&S5DPe2I-Mn4@WYr`+QI=we2F}~Du-53-n_t0Ow)cOl3 zK_R#iA@mR?I~(gJoi3qSo45{# zC0_$QjFbC>7qnp#UdMLhd46AEA;61Bdr|(F>bXUZ_G3GtfHT`OK4#{gTz2Jb1yo3x zAlAMtsR8Z-*`(kWwg#t1ng>wGKlipG!o%AYvOtUk`LD!u;5`s$(`#!7s-4I8b1A{KgX`8%4@F2C(4OC;MZ^K&l}f6Lp>*X>o1f`uzzz6!c*G%&66d`g&WB z{6By6fnXDdhK6m;a-2c^U}nP1&g=T|kL!VRL_#LU7H z&TTh8Tr!9WxF!<{1CVorHaD#YbJav3u&|bn)q3y(J=@jy4LCL`Z}cr((4K;my|!Cv zq>^~p6{|u8jsngbne^7izeNCZIKN!YlXUZ5pAW8S>FDD;N6XRwruikqEdgiyFcX>o zSY|ll^|>vjS7El-Cu__Wg#toCsCjteA?Per4g6+>hC4(qg?bY0J8*JsVEtjV&4=bK zXkai4)4QSjuuL_MZ`K{Yq5}CEj6(jL$x!eqaQ5Z8%hEx2U4EAi^iF{989gEx@Du^NBn;dk2!zv6c_5rT)cNty_!bAWpnR4LDKtA__RWt<0CNmly)e{?nbXLT z2Tpi*eS#SLK0wQwOjdIP?Sn`Bn2A;Q`j-9p#6MlHin#PZ;cf6#C4XMNBpQy69znn>)OLTT~Lr7L2NPqWyTxhAA<;Nv^aUg>&QS0@Oz$~WRuyYQVDfzV2Cy*A3uq+R_p{doisY*?Tyg7U}= zyGm+S9-2uJqOPYbAOJmZLTnHs&3pVui1P=8v@D4BaA_Dw??B`(0@(rn^WWeCKvLnK z$e*QVLm>4I7;9Lfbr?C1))5Q;L31Szx>V#C8u$=IFWuhs=kO&7v0x7Y+pEvtm}rG}kv1z2`_qp-d?jJ3!g4=4dMZ z`RHx89laoya2KN;))Jol^N0SZg- z9URKH@D`|HH&HQit8WHGfsDj%ydMUhK6Z|4&^5F`r_M5(unK$v(DxOjW(sz{^RIdMNp4OmfTBcq z7m!KmB6oWpw3pFFp)L@ML$HpZ-ZR%~Rx}wc$?mxvA&iS#DSqRY`acTW^SEcuAm|f{ znN(^2^_NR~hDz1_{+zg%D=fBomTQ!|=EbAXUKIs-Wwi1tK+*d;CP3(7snNSH?h*Bt z=u(%h$kRsBM%9u8aQ&)`Wc+-*+T&-u?JgskBS(Q{wJ~OInm6C5hOZG5K_C1@t63;U zB4hiZX3ezmimj~@us;y(4553KpBp zM3Xw@g5T~64{x@h;pBKY3#}?mCHY{5x$qRQlWgURBuQ(pG8q)1k4W>7^$`E!>veery3s87F$SQjfAwo%#%6P=MZ-B5&yV(pXc z_7w74uD)*yN4px*j^gjuNf%#x$Ce*sxzhU;PZv$s6c>ZPNy7NRy@|cK1}`M(*Pw4) zrW|eTW8KT(?I>dsMVCjP>ypI>OK^HF|L<{`C9H4gWFZ(>jN|#NS%Yk@QOoT&26R3` zN2Os-Ln4{d7w_f{s0BA3TcQvSy?H#onP9^J{Pq(eFRr!oV^g{#-DjaEus@$&NW z!)#6Y@eEy_>l}WozAmj7kLL*LUJU)_T6evw!Eswpb=KUKFMm6FLm>W}PQzFRV-tTC z!G4w*xi$U#i)*1ZuWRg155yjIw1$1~D;3Ia6hakraK*yzQjw=6o1|u&?IpNPzp`nX zeU|^*xv3l%UksVC0Bnt`M-S%3UQCO<$B@I}Z@_w= zDMGlC`yn|>W{pfPv-ApmxanhquDf3Zhr-hrIiC%Yh-cHiOZ(UInUu)p&nxu5YdN#2 ze6JOZs^aYP2PPPqfK=L=!K^jc#aM{`4Hv}vXBKPR>0$#m>J}G$rk?5})K-JJvjEc?p z@_1=+VejtEWt5+E?kE#PBw6CK5$PQC4ViNehb#SuMqduq*uHGEnY}HTohFhB^C2iv zr!qxjY;|?x5JfF~NQc7fiznNnUs9vjEl%?`jp&RYYWRsQrln^G&1_(9&QmA|3=ALg zk503xp?7!7nocuuBCm|s49aP3igl|K=;HQQT$SOWaT-ARol(}c)A^C3ao?&HVXMK@ z@Rd8zWdOb&1#ndiLcFXc!i;mA&-kTi402g=KFitJQ9`S~s1LG|r#*M8{BUO0PMMOK zJSbW=Z7{_h2$Ks+-izrReTAw9EWDD)SC&kstyX;Fer(vT0qFT=%|6*X`4ifOZSS#c z?YPm*l^5xI??rFzI3LIw<{ReAn8Ac zGE%=tNS>B|^-|ILl*Rv44qd}&baInXxzrg?*UaD3A3dFKt$xf82-H&yXUnpYQ>mBN zdKV$&blnB#m)$A(hxlZNgU^e_7;e0RDA4>b3*b8r%yLkMh*>quYGx=1fgVo4Zi*@T zo{uCpuW(0vjoaU`X>vN|w_%+2Ec0UmQK{QppKYd=eQIjvbq_vo(W5}IHwQ)ygRW$L z2K5s7rW*8Oc^3{?&N!_nDZ3|F!s&9E}4fkEzeyy}zyN+dS)B|K!e<*MqV;H#S=` ztmB~N7@_5O7K$Y6$d~$D{?nr1znYCK_KY{=v>vN9T$!m8e=IckD&2ei(Pohqk*D5s z9%@&vz&Fmu1Rom4UVRJwo{z&*4l$o}O>yqGV?TQTG^ZPJJ&6B zcOG)h->!LIPW8;Qui8S|5#m8w>AfJy5(Y2Eg`huDj{cyD)1RdhwED3T6Vv-Q=*PoM zPJ0M7-DzHM?>6l`&HCuugk7uUi0c!s!!@QUTvn6f=r?WJi$g)oo& zR$f|CTD?l6y7#id2Fbz^Z;hHjEr~*5PJiocufxr8q6FhT6CV~9_8IL9@!Wy(X*<0h%{v3*H)vvrU2i-P#sbrZ7_p8^TA0qAQ{Xg`1zNqj05I(!L^X3Y-V{Wae7wn|`(9Gw! z4vQT;G$r}vjmO_Em$9}8@IVnPEMFbv^r2$SZ29VMqHG{8MZ@}2YDv;o=U&2=NzHC8 zFYV;+;Tcab=E^?@Sc~{9{ZL8;<6dqLMEVA`j>hlbEY|?R+z9=6jNY zwsxM5%H3@^X|5s?=X7=!R@hnWJU}u#LtZO-(Q-_m0uHIj@1?w`yJTR z{`u6AlI!%FSQ*`C-gf)mmQ0FDP%I0qFO_ryT6_0yZ>xO@_?3Umv+3gi1if7xdo#Bn zxy41#kg56f$>6k-PpkjjI@)6HJlH<8=CNbOqTl7^vdzn(j(7VO8ERFZ|9o@X*0UrA zLJEK=!-kh5pj%k=4LTQ-D@Y8Ty~Q&Xy(AJ+*)Ik~1qS zi(rspnL|5hkNe%Ecm390-*Q<$U!n5eKKpnzE_vmpJ+^KAx4q+cjxFUBiS@5;%ezt{ z9?9aiH20V1{?jj+w7kvwg9jv?UueuuuyqO9C)ke9$HpnvF%Hb+44*qh$9GNI$!W}9 z-;)k}9x@Sf8Tk>dAG}7sDZ0BOb%@9C&sgUQ*YWA`SFs9NCSKlo5~`M2x0}P9-7XoG z|D|KzuN1vZ_~^yZ$+meVpY z937NcVz&$2_KmTzDaSDNM|=b4-^rKVqeqS6eX6)XEc$nwweLc`gxEsfm}&kjZ~aVr&$1|E>qov1!rbw1=>0Eha!+$@I6bGr_3ZobldZO0 zuaY8s5_scNx7(ZMmF>Mgm8GwowZ~HEkX&FQ;H?7D*E`JFsMuEj)5Wa&1@!}H#`mgg zvKzRH=y%IiMm7(MPOkUalfXG@Cf?VrHlnHZr*)&BFyFJ2n`OSAZDseOw3Q5=Y3W+z zXinQ`7#W@PA}YJi&lx?c-nX@<=X74hi&!@o^*Ly4u3uAo*so??tqF^V>vy$p$NiPl zYdcRta9zySHkvN**>0DWw~$Yn;m&5M>^RRym+~HWKYyp|dZU>6*+2DW4ckKm73)=UvG? z5B0hKDCHR@Re0Z%bY(r!Eiq^1Z8kQ3|CMFt`p{jD9JX@D<%AlnvM6yy6>D97?NvKu zwDzo6wufQI#P-UMk~t$!BimFgcW)}&;h*(@wO1kI!}~0rz#*rilldoJadwV;oS5#P z|C9AC&#mPH5$Qls$}HxRHxV6axb{9Fv}#;x z?yhb)`_61{kK@rrqBOQe^A-V~T7_An&R*A)kr~cQe3{9~e>FP?Fmo7wp>FtRP`wohdkX}guK zu3Uqx#uiA#my;#bC84YXdtP%W5$uOn1X@0LmvyJondaTTwRUS>zt`z6H-n1Y%8ox6 zkLgS9>(twv8opb; z8FoE**!e)rP<&xpn!2|5SZ8Rzh}-+(H8swriv>5?wGA;5^I9A&WINnq9<87SDbiC> zXYUl>SG=N{LY^Q^!x@UW>g@1Wkz8@*y|p6(g(F|9{%OqBOmu2HP$+zh7Hzov zhTz74`=>D7be>7Os=Z%X;nksmTWbOsjk=X|HXW=ze7U8mx;g+dn!Pb)t1FALB_{zd zreG{}yB}0k&=Egn%usu@6_o>;7#JOSv5Q4ULAcNe{+$89g{d9DF6pZlU@4D-vCz+# zhoIm(2vY-45K+=wHF*j}YS?|;aJ+Z6FtxFiCi`u@RMnsbDjH}fjuDN1?Q4&}&pYSI zK+dxG8-DauyZdL;^OII6$%)M^gi5eGeLR|}jbZqSEo;kQ#EE=={FgDNjzEe1F{=T+ zl?c@%-0jHjG=;`jIr&}j`LY1VOXC4q= zt#4mq7VN1xIQTi^<%Rua-vie$cLMQV8bCIR;Hp=?5JaMw2q4->{E=)Bi*0b^ z=+`TjO(|51v#da&hZk8~#GZ97t8>u8qb6Y)%re0dRv{}|xS8UWw2sVJL8>>_b`N77 z46R!VBtVqMe6a=9q4Ux^J5rw7Fe1no$``te%nFq$<_j;&$>(tb+e{%EoQoeb>- zGN9);1`sZ^`;&^A8krZcf%xBI4xZGvs1reW1@+XLlC=BA-aU&eh!zjocv&h8-&3r0 z8DA<|aC}4An*(ecj1EakE;hDcn6z>8=0oVwKwjND%8h|3R8(dY9q-XdQUBLS|5)sJ zzb24L^aJE9PBu}0S0ePTonY_#BNdB!f&k#1<#(zLMo(ij`~mX3FJDGdgahy1-4AyV z%t6%i%+DuyW4?C)WFd5{R1RR(Kxy|79JH1S*~4sXIRK0!!nA3X3Z90-hQR4R1CMpG zpWk)AB_|PDQ01Ae?w_stl&xFWpCHxvqif*d5!D!Yo$64OFttiqmyqC!c}4B?uPr## zM4%jx|0g^UjFCHgdqY!9%`E^0KnK@sQ(@g&z>CiQ>+u1};cM{KvvE23GY^`qZ4kiG z@`9e55BChvuJLfH8XWT;NBJGOwL|$oe@Bu-|6>fEdcmz|MD58mg zjp%a~4%D&|qkC4C*~1lS|c3!(Asc zMm+Nbt@KUXxA#N(VAEQ#H9+=B`c%Xeqb~*^=<`2=$7ti^`+pi5OrJhrz6)wQ4m#SR z>c36zDhxpzRCfLS#yyDDXYTsdslJ^oEM%Ap34mp?Zh;5wMttRY*cO03f9A{?2N0;p z2rep2uGT zFJXKTu~v#I2>hih3)Vy-1zZF}W;RUXiB29E1e(Y9kh;fmQl4V0JG+OFp0?75K{1ky z&;k77!@!bZu}df9XqTZRCIeLTG~I)P1ibM8Uo;g_6*udvGwctC@NsBser3bEUO0K{f{AkWn-L`dZC6yIs|^8nEZVb{NHb2?J1t+;NZAR1U$;Fn-841 z?R8ZXkx7*(8ZmB7HGCs{_C9SVzTrz(U73xH{Bjf`kcAwl3reXD{O=u{+G`~jA3|ux z@JlI1d>=F&gr~5LRq`RsFj5-+0??a6mjGMqIiSD1{2eDwV8Zzl?_WF{B4=`7p~kul zodX_nd4l6sObC1MdQvb(CPsB!Gca6@g%M@KgAtg_7#OS=?uWZ$u%PX)5M{~vTX1IG zMN9h;!{(m|+(dzfN*xtb+t9cp2JWzP(M}#EE_7&aj*fTmd)z`l z4u&Cysq8=|zJ51H5J7WU?$>h!q4&S86b5`2EQJ$-fvi%2@Yz8fv^EYP2+?jIYkZ0S zf``|KX)n9>1{gA!W2%Nf3PZ5adHZ|I@87@i+m!_2SciV6 zWoAAPfN5*z`>LwVc>Pe=Q-bV-U=w--_l`K0MG!6^vA*Ddd>uXYw?@(GzvIdq5AgTA z(a*tYfDuR%WbU_(dobfJuc--y7QP-58~t#OTRGRk4(LrY#IT&a1w_W5EiEWqe2Iw< zWJgEJGn9fJJa{0`w%HhSaF16$=d_4K>2xbf1F3FhQyZ{zJUl%w+1uAb_67$LgxIj0 zoMW(0na7Zl;+oquQ z)D7X$-Gypea%ti;nk!FgU6}wLY#{MIl1ZafTpmuA_v26GT(NI0`0i$u#k|D_9*b&S}5h6 zXMQ1uG+z0ti`VLBb5s!43h;k`%>86|X#WT{np6qa@E+pH)Xlq%li4va@YM2q&YL$U z0XrbRU%s~VFt!5!@K9lw1Bbf3G^~s}R|{b>j?_;ynoz~wy5&oMiAVMMTJgxOT-;Fk zLtnn{S7bS&E9f<{tt{IUq1HWi^}yJ`z+HT6?JR@Je{=f;R3e7QKY{5WP*SmPJV7?$ zcpKM1Z|_+Tk0Mpd%+%CPxx#X@vk7%jM4MfSdeXMCxci_K*=CXLMKA5)vfT}iQlv@% z4G45XRI)H;NU8h>TOipoCf3#cv@*2Y(Am7Un(Z0CIU?R-{iv0yy00{}Qls|UlgZq@ z2C^l63^~lZcR%S?x`^MJy?J-#Myi%f^VpZGmG2(Wi+b}tjXXuexbo~S6y3zEtKj@+ zy#vagk+UL&n;rZ9{fWhFT(*>P&Et@eGf<3fX%M-6=T08Pxt`Ml!M%caNRkJI2zP$x7Z<@Cp~6N(B*`rxoDoZuml9v9=~>9SZiZ|H5*h{NBOH zXua3QUJ+8mJ50a3G4<|(Tf>#8-PTKs@QQHnc|+;y?4$}ZpZ73;xv9yYC-_Ai@bNr> z$Aw3i_MW&y=q8gr@?!2|N(gHLqq7qe9lhbkmAMDg^||NneUJ_I~rIoaAJs`Q(__; zH8r(I|1BO14GF_ms5^1THX!!rE(#V7f!7yHfYt!b<-57EMq!zBC zsw&VZu+jCL9V0G)uq59vDoX79b3y7a&orCA2LuHUnk3zW9|B*%`%j+ih7T!8ck^9t zFONW!b6?VXfjCNm5QS`e0HqOPrxSvvet7sjgh(_){P-`Qp-g}tANmXt2;0$oT}#WC zD4pwiU}Jxt_Mj9@ucl*XHz}mF@fKL}75C7N1ukh2apci8=ZpZ5J|_+yosiZ;j;DM! zRf8dOBcBp%sz~C44an6p9^$Bnx*i!Sc2M{w$~!b1X2HLpm)o>|-njG)SNyWL_qtP6F3EmeZ@pjrqY+BAh$4q%3f3K_K))flr<~f)p2b}q zU9BrUJJyu@WxJSQneuS4zN2fwvW@O*6PQ6Gy~8eeNA2fd)_zMHny6s~YKr#CW%Sn` zBuTsw;yZz`44;zg==*{p^X_*157&7}%-a*?cS9%1jbjSx8zHUehd<_qNDDvRc~y1` z%g_zSVVwl_zanA-mdyvZCFN4QhPXQ}S!o(AW*$jelX1;>A zNaYa;+M3MF()B{uCI>7>PsxSOg-lV|^^9jvhV0O44c{|vhJ>wMhhQQwO)^;_6 z<)6+8Tok(>pU%3{W(xcMk!*tb7^qqw^YYFHosnG0kI*J^DvWrEvl)By8MFmEz@zNL zjL-`NNkE+R@I`r2LEOU5TvsdcbR}y=h?6rI!3po%;IQ?%?)a)tw{42X#BA8@TkQ`l z>NBW#eu;&mrfn(Cu-RkZ>-S5p`uE2>Yl`n|yZf>6@apfTMD<_61BRa_mhy$e_kQPX zN*3x(gyBl=3e4#)f~ZSutS`@b7~mIcDYQ3+^(qGTcW+!l4LI*6n*lKzDTWhl5oO8v zK{%cB2#X%;?K0nxAUeCmt0`$OG!%$2^ploIr}8@Od-hRxuJakCtdBdl^Qde|n6G`U z;za8G3(F2R=T|-H_x_lmUS4c^?lr%wfUi0cl-y$=N)t<{-vfIJt}fkyucZSzu9TQh zD*qi)!nsBh0O)OZzTPLyX3uX68HWo3n$}!-!GNJ+kJH$Sey<#p`vh1FO z!MKp)5eUrTsVVQ9ZkICMkFDMFWD&3!w6kBdhdDj2rA+qSvgXkAd`HDP4*hGatKJQ5 zZu+Q33kCQQi-dcMc)g5NbhHX@x&Ex`7%j~amjw^cEn-0y!GikXmT_*mhu+U#C4M&F zCuee4L_BNd;5fVpc6CK1(|^%Ds5tsrEbk%YZd>|b6NFZBV3BrK_ z%-O31WV18ZXCP{VoR3jIoJxAtDEO8Aj9<@&gma25_l#n1uv_v*CQ5xDX8ApAj6NN{ zPcft3FPpjsLqDG!Z~xFZ(^<4B_TZGt;O;uMl?$FjJHrfP-vvM2@%C4d%;l9i_O|}B z8@%+y-v(6vNu|EY^-VV3Lnlg$zM}eW_)B+5<@SHu23Tf#em=ev6_(BJ-`O#p6Q*oD z7+7X}Q)!go9w_8&R7}j#*_eNMbbzdC%KJWSJ2iKdbi!b(rl6ST2wnYr4=ukV4k#17 zL?|);TBjwOP5lo2v8|R|8B6f=Al=M>E<@#Z+2<;r&zmI-Vh^7EyN>TSqe@FC+4Vs( z*joUkC{J4we;+(6^f1-|+ay^2(TY4j!+0X}jN!&Oi}N;EC@{Z<#?E#9!IAh#7B6)h zwWEIS&Kne59M6FDnc-xn(&Dbl$>MX%>{ig_YSC>mX*Iu=M^)(VRd9E5SaK?t6&H)r z{yk^$OU{hL*j0G*@`K$^p2~D{ndRC@!IcG@i=g+)wR#pb-1b_)zGOx#aE+4xj)VOC z^~YMic9#i2d=S{VhL~#7x^Oj?JJJ^vF)OCt>b&{EBh`ZTbFM%`+bRxB;w} z(|GZEuYd7+O-1@zVXujSHB0%;My9wMvVYk1sxaTj_ArA|#-M{|V!p`SqEkm^MvqRT zy!H`nr%{hEkJp4 zW~LXPpgMdv8}@-@6KDl|4+p>zSkgd3Jlb@0))hOHaudGmFPzBTN{qMux6L7=gX^QO z65woNb_)Q3P85sb2&RZCat8=BM%hOW|4T6N-ys*2o#VdmspTTvgUFkPl8i3(wTq=O z>jL;`0vz(1$xxlZ-Z>RE=(@VqA@uETRx``|Qo*?@YvEG9p52$f>zUIW+ zJ8%xt-Z>GTv=tML7*=H%XXuSj+ z>=1Ce5xU{hN}yokd5C%=xZ4^Mfde#2@bJln%E@5s?W(O{Spz^h3px`gmO$1?J`)bR zHL(zQAa$C; zx&VeI(4kIY{Z19v%>oD<2!03P$0yl{3BUqr*)JMunPEZ_XB+iBLEhPzg>6!!v7YqDtl`SReF%%nW*H0 zUUHi*NqPH8inVZfX*g_5DC^gpUT~qMX<(%XE)Xr^c*Afpme-5&QR2J9(txGc{m?`} zi?Ss`L5ddw`rbvr+dAvvL|w7!Sowya^-4`1rCVyl-H*7Q6FFgTE#lo0V3^`vM4xeE zT9DS0*-e4juEvsf>Rf`?zO7Vys&=S&@83iHtFxnHLP=^k&&k~#EsG?X4Se}>4)8eH zoO$fnBWSn)9HM4M53vov{L<3W#*G{I|DSs?@^3`D!bTHEP+FjZ;_(f#AkO|AE<|ZO zTKETapa&+dO>ae@9VQk~a2|rsPQ%^4pa*=~Ge?uB7|GJ=7mKg+E7e=rt0Ka>oRonY=X$n z*}F0ah()LRFA|@KH4#?AtlzR1E4P^c)s(25bUhvA8S*NGH}QzQTy{{+v|hgYhVs=| ziEEGS%buOmd1^*K*D&Y;{F2)#XpjXP#Ofm83_OG1XH_u+% zPOG4%)>)AxCz8{j@u{r$4d|cyAIr|+&(mvnWO|LW)YSQ9I?U7A?NL0ThF`}_#`IMm~qgJE6~ zfqtLDD-AVNo+C`H9Ru^bJ-xSBH~D(VZ&^KJ9aa{A@M{xWh&PCH#}+5!t^7}b6>tSb>->wVe%y9LYmAqf`XT6;aEOBdUO zCH8kqJ;u_c|4JO`%^+UDiOxK#_@Cu7Y=T3y6R`ayNai7&2JtzkM}IQqn>tfo=`m0E zJuS-C$us9o*P^>t)Zw3RdB8?@i-`69#yyLhKK)I1jfxCCIAA15ecp2~mznDQH>J0{ zyJWJg#amd0D&DUS%5Td1=1D91dS8!{jRBX!S^k(9OP4D?_ty(`U5)=x?_1$D(D1$D zAxt0GJYaFcZYs?)1owO5wMce7M&9?v-hq}2P5)BlyIQ-J&X@~9aRBYa<;iO>V)tEmpGkC?-aiIRt zYX-5q%bP-9@9S6k-nN!}!|fk5G&lu!7#Na#%yw^HZV@$?J{{ujhQd0ioLBQEeKb$(KbW-zu?}599?~NT!WNz_%789koOMcT! z+qo|ev&p;5mJMRE%N80ryaslKOV^kC?>g+U@xYeE4IeL&U131?$OcH{GPCzL)}b4O zSs<$eMh#3UT(w7HZ^1prWo52=dzQg#a5^52!1fDeO8qNKp-bKUPNPGy-&Wu9#>r$W zS=1glqLS2F{LR<$fX8`NHT@(feP@5e`1GP@v>V0WT8MSsy?twV{)JIT{Z*kwH{*EI z3a3@OhpWQw@7KID6HzFXFW@vn@pKP}Ckp7be()*;`c+h1Jc-|^V{{aSW3Aih0n*D; z6Bkl~kb-oSDC%6Ad{=o#;5PYhi!THQEfu7%*KmvY`UlAo)NpRxxIEu5x9;DMbG);K z>=yH4`j|zs;HDAR-R~P_b>AjjsCj?rW{s2jhRp{i_YG3L#4vDI#TG^JJZ^^!9ubN>yT6&&1dpY&DOL;Sgl zlzsapxLi>Kb$fkviXAp6wSuip%ZsxZ!<_hK4veZXEuvZVKE$Gs!V*p9$jFjXK4z3R zfsj7KRywjv9Gh$+ZRdzn#q+oph`F%|S$9kuPW)L0EfY&n9wsL4&CUycsiWrNB3M@! z(LD4ey}|ct91ZV%>UF^Q?_ZX>00f*Xgm=+F=``HQk?)0DYHDkPP|P}lDuNYsrg3%U z%hi<{Orz_iM?MMevb&OJlcm9B`KPp`a~>qcyZ7eZ|D|G1q>`KXS9%fEU_`c2$M{tL z-Fs?J`nt|%I$d~M=dov|>UR~t2c_dXOSET1{x-W;op3;)=A4YEq zPnbA>bV^aeycNxggdWC0g#T`3fK(63KBUB%3%YMiVFa`Z@1@QUE%fBhq zY;E5kGd=%QseJaM>iGg&O|Cuoda5|o*QhNjIQ+=&Cg4UyV_h!nykQ5$`21eh3oP=> z6yNEE_m6V-(O%#Pv17l_7xba#&xjB@vX?SNJ38ThMs{}+tQ-Y_Zh(1v zB@VLFhGX+pI5Pa0@?kg%Ox6@5OoHZg;4t+OE^sdQiK^75~bRH%{do6NVZ})C$=0DmqTLc|8$Oh}A^URaAkNm;5N4Po(yskA+ zJ2a;Dxtzsc=DJMh+8S?OPf47He5A-Vd%Xuu?`x$W=HS?fnWvYxx4Y8Ja#;sKfsaK2oNJ_0eF z$Ia`&nfJ-xTl<1pM}C(?fxJZCIUEA1caLiBYl|FV%CaXHx7aQEhUSu zbnQkx;rTd^dvZ=ef&Xsr?0zZ3D?i1r)fie8T_(8P{; z%}t0m^W56eM@w%Z-W>y1$jbcVSR;T%x?le3V0yv-u<%O&*`Ek52yUt}0w>_>c;M2+ z)DtlUUh3k>R{77CcS=cAAY=iIPS#0S6M+q4q3Gfwp2UT#P zR66o0)>RjtJ70axo?03Q+p;lj4+8Z?=yloH*!KQw%r=gN)MU-EtCKxS-Ny+Ahsx4< zkF?X!!CLZbbz)&C(B(Xv24KV3aw~%vuvgNnsBVi12AXddhSIMHMl!A07?iB_EgiFa z#!_2nC#NpV)t_Tj2!kssmUWLXc;4fO<*4QVww#X?j0b4&nr1)no-?wtY8bzXH}l@& zxNIY`HM^|r@6$ZO55Z8(+^Q5ik+rf6B1R9aBBjD;J!E(nCPlV$zOeEFHd%vkPPTC% z?^D5yY=47=6%2Syj4vSeoW^s=emi-;av6sgSqyvQFsHF7{&`+rz7ya^HxA>#Ou?`^E7rLouqT7AGBHq|h};1_ z6Sfu$oqmG}5X4QVz(3=a{MTg(GM+Ow?IyJ7@Pk6fkFpz_Kg%NCFvRcv!&@QPt1j1Rj>#0}U`alqUlxd0)9EZlkp=%cp3 z`T@iMT|+}SU79aI=Yg9!z%>*NwmE>-q!(Zu<4vW`UPd9H?Ybf1k!Ta8EnRZF~qkkdcR>k@t^NR?OS3+15X$p z)|Pgkvs$JomB&tktMd^Wd(tix7d4l7|k!Sbo4WgiY4S;U2@ zqbSx!!_a}OXpV-hJAMV2=qQ4dcm6`G7tX>zY_P|^E@a^+ouxe~WIxwmz$z8Q&rc8}oNSE?^!2MPVspj?n9+|NQyWppY3pqR7}} zJp##{*k6eSq6!KMG{oB$&*eD`9I<#=!0an6AtWh>^5{x`rRdVwijYRoV!%S>2dxAaV)X z{Coteb<`3QDnWD9>tq~_?T%)P&X+|uhrvVx2QLX93jV|oU;%*jO35h<{zq}fCk5Ah zms%J|;F(>wVZ#(C6#YXYAp8)D6c}i+2(JvKj{JqdSDud49qUEp`|7red`KJ*$vSgH z<74Xn5fUu|Q$;{75olu5yFsVO!Bt%O^V|E5oNAUmQoh{#R8DEE{j~n)PM)9dS)c!We|o2iI9;Rz&;A>JGAh#dcic^U6w|)E96xd( z*>?Y%yf^bcS=L#@Bi}~8m9wy2>yMcA&Mx_<$E%xr2F5JeF1(sTqEr-*Vwg=BU>s@s zx*wG2lTB7!$}pD3KhdSLz!dT?zNg08Qgx88HNdT<-M#zJlgdQIy+IVsn#dzUASt%H zwc7S>yK>Z>`4N!2OoP{IV5q+)T@s8^vcFmGr+OFqkYS@FF#C1u)(zffv^&1t%!nr7+wTf+=U7XIb!*wUmjADcUmbvwaEQ%=3_hl8`Y5QJpn2 zySK#yWD;SS|Ak#TxN7OB>a;|nwETztKt!}g2~a$gmOdT3x+I743g~D$7gPH-ie}{t z%lDY3zd+5#Eh^fQU>?p@i!2@owCoD{5>MRb0KOENmX;Pz82BNpi$E4oP(N-_AWLyz z#b?KTOUHM#@ZOrDC9|D|rXH865pz+z{tH;X%_(dzNhyj9E}QlMw-6X>kI?4dy*)hx z&)k2jVoKf^e|kegmE%|Ztr?u-XifT$1G;4t4~{pd7`ZeK`i0Esf5x$f+E59|Sp%#) zf8d*kOKjgtS=IO@wrdQW*DM@hZs0lJ#kfpS7>Rk!<$(2T=fZh`lZ&e!>v2M!K7E04 zxAsuU@5vYYC>=)+Q-3)*{x$)2KB1mY7ca(z@#sEBYO}_3U#Rt6=?-L|l141M{d+Yb zNU|Q-gl4vp#OYy&utuv!cyq<08QE)izX32|0*Gze#pVgCc9aPf7wI-W2?;~3^!yJ~ z3JAayo=8O$5V3j4GxpU&^QDwMllXDgl z9^N0O7oCrt@z0R_KCa-*SOZ(9*|x0-F?vgCrXXzU)9LsOUf|e;iu`MHu1&@L3@wg% zvtmb~C@3f@Hh|m=inapoCHIjdav;RU8+mm4^HSuUWLl#W&T*eEISv(S#~c(C)Bxg;>Ck9M zX{;C=zrK~#*Pu_0uHNmizER9SsR`-)g>85N4!}u@c zZ3EZ&&dg#WQq;NL%*-tGwZoV$njD8hyg5cgnWQ#{@~wpQP-iBRX`Lcg{BQCo`3}JK zF1l=@sAR(D)eH|T!;}*#i4~8isk*FAZ_f5OC3MpN10#%xS|0%Q2<{#CwXcR z{+A4Go-}*ro_5M6i{T?3gW-L3@PlOOS)^O`-WsC=SgZzqfDlIYn4rCY8=IIzhaYM) z-M(vF26uN*#Qi^AQgw35?W>Kocj4TFX?Yl%>-cX&#GXjPljKV^aJzOlxwcf}u{=NP z@Hc?c)Fj3Y4~GRoqAZ#9g^uc3aIj`E4nt7XGgv#=toLg@nBhLC=r z)*aUTVrM(8J@+W&=Xd3qArCitQiToGCETeqqfA_Ok>29kZ0J6SQBxAjA$(9S49SXz zv)M&@R340a+E+&kemyQJP-1^G)bzE!VY^T28@ZHyhFTGb zJnYIb27Mo1Qz)~QwYA!y+TF7SMuzO9@xR9?hB-Cr$P#>ajT3DSH*sAwY+_q%2(6cP z@7^mqhGs8Ym(2><75FPJ6<97L3ef}%B@4IzZos(<;LFxPXQ+io`;c#q-yMOLfR?l< zfJJGrW4eFu9%liwxJS;n*&Wgpk0hv58oOCOSvi%)-rn*$?T0B?5mwHcyoJpg!J8xf zD=$xmv$YG08E#@W3KzA?Qd-Frg39I7=g$m=myUy=6=PRC$evI|p+uV?7%3<#A1x4q z#`oLQru~$+YT#M2TpKy=f9n=*J6oz-rcAp)Cw;HklA_zS%Fy~h^RBrUUU6%9q+C2b z#9f_peK1ncE&H1}CueHRdIKqa_SIDhE;_tLIhLy*P3antVVe#GiGN7YrbL^b*q5g% zfLPBnV?k=2s-=0yChqua{8};_(t>aduOK;pt>T_f`eXR~;AWxjl|P!)btE@pmE3@TAPj zN|;)0J9Zn5fz8Sv+v|DrbC$L-$FtaUMUeiixk*<;#is!{V7JMm@pE*u+ZV zx}%#TPB)B0>500%8FrO|&>fHdE@`!$9sTjr|8rZBR878s)6fYSsueTuc zC!i#%#Hya8S(?q88^9l({@God?(<~!GJojEmJoW$rKN9H`{)uy3wi6UvrCdu!56(U zk{|kBnrgIK=3c|)6^#oafoHB?*zOipWid_SImy}>TJMsiMDH zbGQ>Ut7M0yIy`}VRVU@iqPtdx)b2aMW_Rg+%NK&5ds zkTRKbimGSlpY8jRQkx;<$Ocfir`1?PBM||LLqI@XD_s+D5&4g|KqPxF9&k8<`asRe zaSd>VrXl+n!r#(XRSj+!-@avw2HFf4Kqu)qL1u0{?oXDgs0L5BPnNC!5X*EaoMzgaOo4FVIDKUh7=7EWhpg^~<;L9)tc5Y@GaD2H*|U0dE`+yFL$? zr=FY)zz^1VqOj?UQd3g{8!dj)S|~yTu7_9!nuZ@*JYBE2hiODqopuf7D;+IuB6++Z z#U3qK#hRMOpDqO>kD~Dh1gv;#`%Y=fT-vv9O5V73dM_{e1C0;LE0*=~DMbsOiW(;! z7!AX*i++G@Rl6SKRvM@auvm|K7`__MKGnOrh4qBosG3icz~puVjV>d%H-;cj{-~&u zs=u9mBK5_9i}SDfisX^U7h=9a>+s+eX!|n*b*BM1YhSw5rMo=OeTa?i40+$+GO@{{ zp!|iMM-bLz+_*u#hmP*+pFhU1NxA>vfjXY6xcOFkisaY3$M;Fj8mJDA;l$#xD4=}S z22tknOPyD)!&=p`QpWh&$Ca1s(IRGp9TT$P!}6ZGLw&^UjpXvQdNpc3QBhG%u;2%- zv?Bu+4?KUswD@~vhOeaI?+cs3Pj9%xZm(Ds{p{L^z{Y=;Tihn`vc!IMX>HCqtE8l7 zKR_nS94~Fv>zz?h3u2KF#D1w2iM1-cA}sGc2R7-pEo}@FI;vbIF|-(TQNA8p`DtKJ zR#*#@+hU`jr1S%Y7^w{g$BoZm5nkAW5%oq&EY{hiS;SoZe0WX5YAQ;G;+ZD>eDRr` znG%jV8;V0D_t^LNo0qKoWv{S)LQQM8lFn>fsJJ@c$6xI|<(KOm?JGE91BA#5^E0&A zQHtYhD6-CLA8pu5vp+~Ph~mWOv39ec@*F75f)+JQ;Vu#iQ|McVhsT>ZhKe1`d>J@W zrzvU;YF-!r4c;ldU=}4fm9MujR$<((k{N<>8cyyn&^(g*z(6v9kMgdt#YWg0OicLo z-a$2o0w@{OIuW5gl2mK`nqiL+K{oaj{yA|X;oMdG=#b?K6?u!Ln~axL+ZCy2er?F+ z5Se>4>HPaq$%Mr^y0OPNmY%nDXKT~ajkg!sxuxY2&_K+w>lVw^o}HgBQYbZFgAd95 z0I-H3Jkk8&EZ4zygYbb#JB72)JG;ztX5+hb#Iui&CLAM6&Z$+|q`Jl5;M@HDsx|eG z)jP*ZrUvzC(syzxN~^ECvqdvU=&X63?mk`f^FH-YCmeCDS_Ki{oFj$lDdI8hahVKH z1uY*#b(VxPYYn9woGHV}`NS6vVQ)v~#PZr56rPi)l71`nqhP_~l{>Eeq;(F0Li> zBBV2^XdMk9|9I4Bg-=C(#^AJ7f6NCXwj}RI@lmF+ygnVZ!-ubhu~{~??Hz6D7d1WV zGuOGH1Ogn{a4HI)NiJia<_7jBsXrd6YG|-MsnqBz)=j~E_h3$MOar;>TATg&RGy9J zU{W|!w(Z#pwqc*qcGk?3DXvY)yr11ASBL;Y8!;NiBIWHDYzj+7EEog>-g)FCx+w^* z;~|OrYQraWiIiQ>&~Oc-r#)W$Pz?=?EQrJTY?kBpx{)hN+uJ>jjYogSn!8vg;S%7i zgjM*9QvCYKzp}>PjbXeOiwm2_NqDX5X?J1IU-GCZ}ViX6sT(8Wh1fIrmsG7c*=RwkEj>1>Y zznz3Uk0>bW!WLT>VCM}cns;C`dGvuS5yY(kOl;j+kKd-3C=OZ=pN4*Q_HFLjMOsCiEAC}UM1kz!sHk+%QQx*X)6meo zLboPg4`l%@1H+I=A9^FSAE(gPH3D>K1OdDRv7X_iTSjhfZrZD+FE6BAKZR!I!}fEJ zR?e4s*gq#?(t;*9^<�nq_F*5?+DG(%ai>3Ar)}MF?fuNi*i==2mEMFxAlxHKM0< zFvfWQ)7?W$E8;qa;{2=Oqem3#ch=-S?#Xg7($RTgU&dR~eKB882%*o+!b0&e+Jh9J zglT{t@Zh~en>?{?-nPBCap&!?&JeKyRFj4zO9SZKeP+y&VoC6>7zR;d2po*eNy4HM>O zW|ii7`wZ7pZjQF(r6^=KBcK^Ne%ga*;Cav26cH%B@VBQTP?EY6f4maHjXdSC>)B|Nsn>i{OG!Ovl_kh-P~D4 zGAG(yo{;hwS1IG?OW^+27#S=ed(3=4y?xKH%ShX6b-3N%!}3*qvwV?q^E}bd`B)b$ z57`I`xoE^o9(g>WXp~k-c!EVg=fbhXV+hM&viV;3?9%0-OBwt0{1(M)ecr{ZJV8ss zWhfN3vWV+owxeopo=iUchYvCUBla3HP;P28(s!fuy@K;xJp22aD~h09753=auzqd` zpepyw@$`%gp71S{ql&1}XjxdsJf1y$%JHT>3rN1gV`##DVCfV=S-!oW1=imHKq0#L z51wymM1=0y#x)d`#}%&9C>Y4c#*#@HKzku8K5xkqVcGEY@1!?uXK`6*L#$PX#}t2r zQt@a(Ysix)3CQ5GsDki&*Foqf1SNLGJcbTrjjx$-RO4%B3vBWX8F(0-n#Q_$6p9i6 z5pfuYpr0DXMZo!Mh0Q-}YEF&{2?PB6{5}2sDadfu5dsy*MM?m()#>wo3^2LUx zEjpU1W%Qq#Z-gW6r@WemMhE~X7XY2Y5r;^@y7~LD51TMR6Qt!!&iKo7Ludv)KHy6?}UX6Yy{&;Dm{YD z^gp*Nv9MCSf&}s|JS)Jj&L0#y^YrmbjIDyEh)0_)2I0-XzN^GZh(RO?_54;lp6&ZN z-O0?wfq*o0oyV)Anb>Cj()T zT!Lio2ewW;hZo#=G}YwHG3Q;Pdf~Hc_wIJ5ScKmJ0$gH#oxx~V6#w(6Brbvr0Nf#% zkGUxF)_7tSgeD$6a%C#IsK8~EMo3T14~~`&?9DI=#xpJA9igJ69SQRK?hf;e$*HLZ zgu#%ouw)=lnMNhQ5`2a?zAM3k(>AwkECsManZp2J=Jqz`G?;sQsjXFp4DUOsval|o zu(9hQ!tZI)`~sWJy2Ijmj_$$Pef#zS6w$hHArN}A&ED7`f5DLZz=8M2>9$keGTi(w z5hk~OhdhIXr_0N$3sf5RV_WtwyxC3o901Na#l-Xwy@7Y8{}9448F8Ck62#m4j->n? zo-Swc#x$_Y3g$TgRkc%xixv?JHKbS=r70asFkK*c3`DDgO^bcKz0YQfi4lWlvE-dR zF2;}=jfj^ADIIkKejYqQjBBVVNkDT+qg-dE@fAd;s%Y`@-2f5f(0raKMp+j`U^NDS zilHqd%&RtM&zvD>Ad$b+C5dEWkYuN8zmC#&9biYe`x4s*zcSy`zIA8m_Zi++CrvbD zjWf{g52!_V_4oI?GP6_s+z%3@4!2OS_!bQ!C)!!X$LL1I4FTrLhHJzt^1V(}&{p3- zDR0^OOXUEmD#-djL$?+)0udrCr9&4I*o@L(cA)W7d3iZT3400LrLmjTnf;(X&Hnt; z1Q&Z90(lf*384{EQJ#sAW)J>M8|`NR-x^999rKQ$vq-6~pwS3o!jVwL@&3}wE3kx^ zoZ=QOpBHL2NC4!qS55mW_Hz#XWj;*tvnPP60(x?iMl4+ReS#mH0uUL#nV*9WyAY`V z6@OKOyZZTPk>Jo;syR0E_mc+Xx3Y#viKa5!1O;{?##;lwth0G%qw!6K?;VLz0q?$b zh)WSL5?J`D=<5;`sVEu(APs9b3P;mPu9xrfuyLs8!&KbZNQr9&2ior-#7khmxfpzZ+I{RP z6t>i!bMll4im-lIuCr8KYTKT#)%r(MzdMf9akmb9uQj>bFScX75aBvhV5&gMj%%IdSUsh(#Os zQ^YUW{bo;Extg9)@MBlS3Jq%~`2i`Vs~66ml~TCA^)M)7^2HrDHlw0EicMp#e5uu! z`7Nhxj@quCAo?koV{^epe=wpI~Ga2yZ$&MK2PyraukN0$KZP*PrxEz zNjihWPnFmS$VE^Jln=la4AhQNJj4&J_ivzbq(O};cRZ@x?B&O=RuWx5we{v6B{G;K zaJ@A`se=+I9bKvwbfyaO@~Z!@u`iFOI{W{BD`5($Mp|rz86iSM)+lXLc1oy7ibk>} zOWpQO7}QN!Ls_C!vW97r5kiQv&Zz7nYb4+2>o%Xif4?3xkGkA@?m6du&g;Bh&*$^? zI*6Xe`rakL&6U&B+q-GgrZ3~;)}WR^AzTj)jf2r7)CP=`%I%hQdoRYu#uC{R5s?Tf zz~*%Luakg((3e#>v&#>ttdf+}N3UJpBwkKv#fL*|T)7$6DO#ekznHTO&Q8jyPR%5G zJijP?p66GsKsyxDK$XUgkdc_;@?cw2zw1|ng1o#ua9(fZec`Aqpu~iPU7tR!^0;%m z@VOBEnWtaI9mVD$-V+cLV#KB7r)G=koyeB<&;7?R%)pRmiRCX$@w}VgTbl!oErJC3 zm=Kf5!Tl=dd-HzsrF^HyAOCjIQoNdbx8l z?$TP23%QOw!r*RC+wBm=58kW#(b5^TRGh1+8nDF-=cUY6#Iv4#Q{zQ5=~%(?va(yk z>K^Vl#8+&W2pln`?}t%mOQHYG{UZvy23n<8sj5D1yb&AwIZUquI2*zvv6c{u{Z_Bu z0m`!EHSTe)LyY_Hh-Su1%)advd}Xp5mf_WBF;H_t9%TP-0Wz_E!yS=m|K)5;|~NPpI*2O()(BMY~i$l6w&k;8DfacIGS$*~gWvLY=kkgwGr%y}9$> zC#oVs_pKkqz@XkGL`6xVPqbu!^SQ0Tf|vhbX; zB=dSH?F^D@PYqI1{8X??zYrG|^k{Vi^zV&Wcku^0_`d?{vi)hnOQrap;=|NA_Y8c*eJ+}A-*IzJxhL8(S%KD>WH~Q=CgLjQ zXAsQx&@Os)8LybsWiTH}w8IJ_%iP#y1FbjC<$vx>M?12o=?%8$nOSj5s10`+0%!F> z=T7kR#QQ5?Ye{o{z6k%K4#)mwa4zPmAfHL)0`!cfg>O$)rm;CI^Sp4RSF7m#Yi5ZF z#Vw<+3=nhF*A~I6TPyI2k)pROz+2+p@56bHQCTdaQMLbs-qbU+Zd=yyyr5A9h|=`= zE?h6knol#5y80zNJ-iB`b{XT1yxfBu=(9`0|4G58b;$-W+DpZRiZ9Z%P26tz-tcL_ z|BeA>LSh5P#I(X7PB7HL!NuBV=J;yTKV>q7;yck1Um6E9sE&6lZNj_bL=`r6WujsG zOVn_IFd8nWhLdlWjd2=wptl-u8V(lZYnP!3vY3VO-Y7k;kAM$h34noXigVV`hGZt@ zh6qX`9tE0U3Lgp8`Sy8fvQ}_D)!OZ?-~24zL0n9qd>)_|IEUdk@pJlJ_|mbIMa3rl zP|WKIPz+#0Rb3uTHqDE>VBc7g`ti0!!e9Ot++t*O0Sb(}KtfV*z#6e<=ZJB>TP~!J z1@MZFY`Q7J93E_^yq;d$(0WzX+Vk~X88qbf=B3KNoK=>5J(MH(H^R3khp0+H5Yzs@~_Gx`;D5PiUh;Z=Eg>Fzv=zynN4Dz=?f zk3WQS!V4Cd9+_S66Ai^eL|l`HJ9#JPlR8)viXpwMh+kltPo6v=Ga*h-G1;x)-#ybX z13`*hKMatG*a^7D0Rq&5h~o-_kdMOH?}g_$8$=bWYB?=v_xV`$igTwpTwHS0Lh;niKA*^D?bR9o*@usu=W4Nfy`=t98lJCmQ`_zQ&zI-oJI!c{ zSogldijIQF=;?h>1mQ&gdrQQY78^I7>i|#usSBcI#j!$o+<}N^OU8b0&M^fYT0`VP z!3j^D!Q$C2jSu7Zd>7>wYM0=Ah2CD#*`Oyy1eU67q^2N+fx0RlrTDuDqr%ZGy%mTL zIpdJb%qgA1`nYP>NxuUx77zIPFj6G^P}_#={qJpscJMnrx??wR3&m-0wzvfZa}Why z>hJ~v>IDg-D|~E19L1)jR<5jr!=UnjQk{tYgrYZ5It3y@s8A^OP6qXoGhzIvq*pQ7 zPS*U)HdK45fW+W|icUd$<6XWwn;0JgLd8#g zI|c>fmbSq0XpEg|YylpYRabx7m<7fn3-S}W2bpWRg)IDOaRr3_u!Gw$0;Q+^aDO=H zX03DOErMzuHg7KkZU_8XA@dY&yt}1!JOeKV%|Vrubg(`yz)HvXJ4Ui#}9qVW6uimrHau*tY@8e)VGa~i_?c@)#T8jWO7)+?q~&L z_R4B1ktSgQ1tMUtbX3D4Zwabga%?-k`48l7M!JCM)y1ocKb}UxIZ|I-6*zcYCcI@} zV8+>23H&zz8xxp#^L`}@3C_c9f-A)KI$?71}(dHH{JC)&WurL^f!j{FVcjB^4q?P4OBJ-u05n>a+oi_eB17*F!`^JG{hU zmG`Inr@$jTCG2QUy`>-*cRkq*R!_-+DOb;N9aCkV_`f>I4l>%jVnP#ZInxjkB498s z@$nzR7>Qt!hsV*Xb&b z?eW!JFFE)V4b_C7@Myg9qgTx54ZPg;*RVX8ZBFbD1J}zAvosJ&6fCB;il?f%PFs_o z!1}TVU@WZV14DY?gZAi^C1;qcd}bd^y2JJF&uDVlk0v*xNsdP(civlH8<2{xHjRh% zS&~(pz!_w~ypVl=I?_LjcR${$veez!;*ubrHpk``uS2g($<1MTmi%y&v^gUy&c-il zJv=?Lj(@fX?ge5Q~=K^B6+|JHVpL);UyRr3A zZ}m}uC$4tVoO#*2K;OiGv>MPwB5(Q-y!GoRPubhYkir0(upSb9BB5vPzG4PubK5WG zW!<&R)U`KP!@uMf(rE1W2?R3h2X~mTdYJ|Vs5wE(X8H8n04*>B z^=}4sPKU467_ZIvKLbTGaxsFx`gn_b1<`|RKfC0d;8rsmn_JM1-G$7?YWKv%J@mo_ zaHdUxZzh;*AU)OpNFA47SNq__#+KNs^arE!E^y}mon{NyvGEIYF}DyVKR|IidjJcH zMb-!=Ai%i?CHdhOT@Oaz4PX1dK({Zr;Z&bn`xieff_8iEP!~5)TBMzAIoZ~dZ$3J* z=vqYK`Y%Dxe7^F&ubT|Jl{Z{pYVp9-F1rDdbO1MmUkbCfsEvUSI1H`lg%~i`gypwm4CH;L1UK+ z*4G1$`@p0eB-thix1#_PQ$hLlK$}E_Ga6XQvXCM!*8lS}KzmMd3JP_olCo}oJZrCf8=om z2*<1=eO^gP3ItbfDQRn|gmzym-sQd;6O@Ui2?YIy|4s*oJLvsgkRQ)~_r8uSy+Ttc zUE)DcFiNG8UO+2Tc;F;MW@b5{32+-{ecg7YX9p&h@H_Wl&Iw$#0JJJv4JxQyr}LI; zMh()OvTzETg^c$$7^9NwUC6<9^$bBNY>w+G{jS%g73E9f3!JMi4Zs{Z3+bnxeq>N` z7^qDR%DapJTaP%g6N*=yK0gZyne+^yi*oAfV^OX;{g^vBS=r=Ay_mmZRbN{sv#H-E z&npELISIvt>D>apJ^%Z+VdI4D!!`hfK8hDXu7ZZ*P|4X9;1apkC=U`3opkf>YTv`_ zT}B&6w_z+I6zzOb&10QH_!v8aC)SJ8#R6=OH@I0MwNT^s4LTE~SS4@yv%b1pb21<= zEqhAaTaS}-1O*FXho5PA_aq{cP6J9sPZZMbQM4l~CG}TI-fcBkpVu_K#h&PVE>M>z zDC1b#i_4dF#u^!e5qcWHst2v9&5RI_?jQK2wCjg_T!Z;C8>#lhm6{EJt5T`8Rt`X(_csqBcl zyn;eSmsvq@i<>pdQ75$y!>z}~n>&)kk%48CQu`G(Jw*JYfw_VD*nkq^vQH-`pn)(bTAdvXuwq+1=pd%5bBGJolt=N#$uN;qvI7e zVIxpHZw~{nf&WIv9lc3a?*H}ciIKg==yueckm(C-NC+Ur>4M702F2P}N=cP#9|wh% z2ewk|fvT#iu!O|tyW4bbLkb2M;>wjP&3~-ES5tAS=~i9Z zor0KumH1M9#Fk$5me$>e3wI!t$}`-fkbfSc(}75d^l0TJ&|-*0m-hBZ9PKugc0yasJV2Cs*{j>yiag=v%vuxQISn-)+&KEcv(T zx>^oxI*GJ__Ye1#kQb3#MJ$FH>>P+71xbr%+*Q|7LyTPIQ#AaNsM>F@+NrriTm#!w@qOkv$WS9V>D zZUkH`y~een9)%FB;r?8MQk_!xpj3ygQyJP)|j!7%w7dA9~ry-+nP1An$D)=bIkkc<#nIqYfK-Ynuh*2yUG+?*FM`L2js=8*i zYhtyH;Oufmo|H{tKrS3y8>fbW>iDxH_@Ts@R~dMICX4f1e#vin*6Wcob+YvebH;%t z2_a(-oigwqvK&h01_E$-6k8IP3MH%^%BT}tf&V{;`H}Bp$0sR!9WptH9qHjmYaBB` z4&GH_7*JGzygVtXgctrl$c6SsIto$mz_5qHgs2vl^3sYkAAg?3CkGYIYVf-|5Q2tF zzw7tGicUrVf#6^+AD;>K^S5sky*RR2UxuzNxPDM267u{l$1yv;iura6#e|GsDD1-U z0f95*I28X5X(9eDEIk;>Kmhp3;7YVf%Y9rFnlqH;@nD;|e-gEpWYNdQ z8~a}#QG9}e0%QeYKg=NP^M;Iyyd9a>FxXPGwg80G8F0m6ttIZ!q#*51hGT5=JiqppxABl9OMa^%X6kEG;r9p_!*v)~Q z4)~4;tAXgQdxm7*U{91OPe+Q?Aw;n|V>`AXvZmgd0{AA*M@D87*%;_5)*`8Os~LI< zr?-2T_T&?kgXJ*Wu^lcIXRr~OHpg~@a}<#Ku(Md6R#sN$&z3=dAfs0_6X?{I=bc7O z1!$qKQ&X-mKQ7gAr=?c`-Uqsesgv`$1}9ivO|2gE#x>4kv4}_Fq{D-I@N?lRur)ZR z3+dPgvMB2e&hnd~JSeD0<_4t;CmRRJGUS!PZ#ke6nONjpw%!~^9g;w#H8JK1i`0kRItcbVMp^5(`q`cVO@(QFO?jf;xxbHNT$QM|$MjtEfI`%e*1gpMg zWGAgsSGNj_T3=cZEj8M+h(~2{hdsNw5+7~5tw*Q2kyk2EOX-c60H0xmDWQw!egTM`f5M8kAKUs$8+?YF+NPDwbaoGZB^u9-D}8 zMqeiB?%h;?v(BTfEEZGp;zd_)LafCJyVsW>y9BDWVtj0|ZtlXo%7eA=ck5A>9>_}Q zby+)U0078s4S1>e!nw~c;AKXsbDwy?Yx>LYo?ZvmBbbto`wzm|?0X0a<pIh`XP$xI;00e2YX9@*95N)V zrXRaJ=UNp{C@dIlV4U1W?0+9m1lfgDHIDxHOJ^eLzgKCzv7+Z_3m2OV4tF-zqm4IcZPNi8PRK@cz z*SQA`7R;AhT3N$~j~`dTv^IMN**HJ9h6f|BqtntoJa^u1r)KL3TV|E4Y&FzKsUWlv zK;cRWpZ5hP9@jX1<%eL3IBp!*W)LSpVHXh{zLNl6(Jx`WIkco_ucAo>VbTF}`JWaurfNBCJ-I0;IN z2*1|^a^5qRKpOzdcEO!*fP>v^pO!rdXP$%T;qVStD|t;~HNZsjNWj6Fh@<`uBwlj- z@)NPpVVYu_T7q{+yOsmFn7SU^SC6jZvJ|=OdcKA)xr_?(y3%)L8lbk670@9FJW`R# z&;<{{i2Z31)HP3VoIL};NxKcWl_Ii25k(B&mK52AFdG#K?|{I@>}wWHkKIO5j0^P#qCMm$c`e$icpkzU3t;=KRre@x!N2?+pzN`;`g?&p5UL?(c)FYYg;WP4)YL zchCEI8N`K znY7LfB=Rs2dd3U&ALL^KzHIfUJeX-5g^#vBni>3SesCbN9kRDSItpoRrKMjsT~Z*v zY*|lTF69pD$jbihmStmS&sI7CPon>0pzt&h;eHI{v4n0wqheX1SGQUATi%AD6v4k? zkt4v6W5a8WArB!H-JL{~D3D&sp2lhkOGHZjQY=haAS@8IlGu}E)JE(MPn;JBqLaX= zK$W0uU$F_7JEfC&0*7NQR@@WlHcC5IyI-T3MSMemqhlK^vH}zdCk6AWu_7`MBt};1 zj%K|w!JWQu0ilk<`Ikk>(Jl{@l7OC~2mqET5lYVyNgoq6tbg_D)f+6YdMGzJ-mOQ# z%h~g_=>m~%AgOA3KgUM=@dusf2xQ=OS<$kFmJ601kJ#1ggl@-;J#IB|8_s$WCk!wb z5LhU3-|UII?|Kt}q!^dWv8Q3Mz|nu`jJrzrP25s-4t^OTfh<+FY zKI*0E&ZU8#^6cS zLybV{MBpEJKtm2;Zda(NnBh6oW`ik^<4B2c39u|tFh=aoMKCZUz+-yg5}N^~k)}jj z$O$9t{rlAt%7^KUK&r>aOd&J4P7vvS@qBm%cL8qE@f$J0ni>Tz^ku?QcoHHfl3hka z5JV)7Vov+4t#7b&)O-i`C6pTq52no6APh%mWeFw>4#e)QgL6$Do1yEl3~X5*9Jee~ zLZuu9+zMsH{$TEgYQm_ICej4|J_GQ(mfGI+a`1cWpi*AwsE5G!M}lhM3x`ZuNy)eu zlM=Wn7AS@KeZ{>EX!_%)PcASi!GYv}9#LPe$D39S?M6LnnyVdcwS{cs4~Sud6wB@v z0QN6A$s-Oud>AKrj6l0QZ40hgKkjnKBQf^3=EgcnNW)G>x&`T*g+)Z}fgoCD7h^07 z00t{~1O%8XmMwbV6R=89K;Sy!^%|L3J9AN{neyz3MuKuYh0H7xNuE`7?=aQ;C7csf zQTiqVP6HUAH?V7KQE))KXgx0iQ@}eGz-6(yJKEZCU`JLS%sO0aghy2mPAvlgHzmUn zXofzBM$1MhA&(rWa`4bT_yP!7Kp>0h_*t;+d?FEqsG(&f^~>T-q!?|^d~wL! zQgSM>AFBG*EP1ggEm8TlJc=#u+zHKZ4b-h<#8QA%A%k&`SJUs=Lv!w2`S9VxA!KV( z3I+;@(rn_<^ag7UgqAoc=V?D6-#i_J!;9}Yb3id0g(X4(LW&o}^OQ$MFkYRx@lbO? zI3>M6Qp9d7BD@(^2J+b$xBUL6W^MUcmy|#%0JGfWmcIkPvA;ZxYGVpn=4@D|;n!Lr zpO@;s=!AF&f2uy3JL=OveAR#aAp3s~%m4GGFBja3J9k#TJMz>lWKa5Al@KnbeJjK> z?Q;~7@QDZ^4Tz;oFik$>#<=uGIZ++n;#tH6;xM~gfB~Ar$tDaNC%v#%AutbU1?WvI_&O7v@lkf-DMKA*y6i1jo9lCAJ2fV?8KOaD&N>Lpb98 zM%saht^4T>!n2rmZH&Y>2l=}=B*-a(64?E6=|hyGzK_#m)tWWc)$8$XJe+TXX`_k^ zSa!HzWs6UK%g~ayI9{LlkGqK%&0>57sIi9_HF*L+)!5RA3cK%IReS>hwaiw%Z-Zw6 z?RID&EDxq}_96N+Ll%0bU@58+rD4$^Ir%wJJX9&VHgk&T#kP4sH^JT{dd;fGC92EyWQ%a$tu>eBg ywl0seK #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) -{ + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates(const tf_t& tfactors, T& rate_eval) + { - amrex::ignore_unused(tfactors); - amrex::ignore_unused(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; + } } - } - { - // 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..9373203e5 100644 --- a/networks/CNO_extras/modified_rates.H +++ b/networks/CNO_extras/modified_rates.H @@ -12,11 +12,12 @@ namespace modified_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..f1cd9a44d 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-22-g7128998de 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..b3987706f --- /dev/null +++ b/networks/CNO_extras/tabular_weak_rates.H @@ -0,0 +1,99 @@ +#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, const amrex::Real rhoy, + 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..94a7e0bcb 100644 --- a/networks/CNO_extras/temperature_table_rates.H +++ b/networks/CNO_extras/temperature_table_rates.H @@ -16,7 +16,7 @@ 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) { 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..f0c34c357 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 @@ -164,7 +159,7 @@ void evaluate_rates(const burn_t& state, // 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 +171,7 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -189,54 +184,22 @@ void evaluate_rates(const burn_t& state, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. - fill_derived_rates(tfactors, rate_eval); - - - // Fill approximate rates - - fill_approx_rates(tfactors, state.rho, Y, rate_eval); - - // Calculate tabular weak rates + derived_rates::fill_rates(tfactors, rate_eval); - [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; - - rate_eval.enuc_weak = 0.0_rt; + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + // We do this after DerivedRate in case the branching depends + // on a derived rate. + branched_rates::fill_rates(tfactors, rate_eval); - 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); + // Fill approximate rates - 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); + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); } @@ -288,29 +251,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 +262,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; @@ -354,65 +295,65 @@ void rhs_nuc(const burn_t& state, 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; } @@ -473,10 +414,10 @@ void jac_nuc(const burn_t& state, 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 +429,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 +504,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 +528,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 +549,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 +573,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 +585,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 +600,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 +614,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 +626,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 +641,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 +672,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 +701,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..6a8556dfc --- /dev/null +++ b/networks/ECSN/branched_rates.H @@ -0,0 +1,31 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_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..a5d72f80f 100644 --- a/networks/ECSN/derived_rates.H +++ b/networks/ECSN/derived_rates.H @@ -7,21 +7,25 @@ #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(const tf_t& tfactors, T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + amrex::ignore_unused(tfactors); + amrex::ignore_unused(rate_eval); + [[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..9373203e5 100644 --- a/networks/ECSN/modified_rates.H +++ b/networks/ECSN/modified_rates.H @@ -12,11 +12,12 @@ namespace modified_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..f1cd9a44d 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-22-g7128998de 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..3a719c7ed --- /dev/null +++ b/networks/ECSN/tabular_weak_rates.H @@ -0,0 +1,67 @@ +#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, const amrex::Real rhoy, + 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..94a7e0bcb 100644 --- a/networks/ECSN/temperature_table_rates.H +++ b/networks/ECSN/temperature_table_rates.H @@ -16,7 +16,7 @@ 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) { 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..6a8556dfc --- /dev/null +++ b/networks/he-burn/ase-iron-starlib/branched_rates.H @@ -0,0 +1,31 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_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/partition_functions.H b/networks/he-burn/ase-iron-starlib/partition_functions.H index 9fd59d303..88d94029b 100644 --- a/networks/he-burn/ase-iron-starlib/partition_functions.H +++ b/networks/he-burn/ase-iron-starlib/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-starlib/tabular_weak_rates.H b/networks/he-burn/ase-iron-starlib/tabular_weak_rates.H new file mode 100644 index 000000000..0416f23be --- /dev/null +++ b/networks/he-burn/ase-iron-starlib/tabular_weak_rates.H @@ -0,0 +1,83 @@ +#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, const amrex::Real rhoy, + 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 9734c4de7..5dbc0705a 100644 --- a/networks/he-burn/ase-iron-starlib/temperature_table_rates.H +++ b/networks/he-burn/ase-iron-starlib/temperature_table_rates.H @@ -1089,7 +1089,7 @@ namespace Al27_p_to_Si28_starlib_data { 0.15956456967133845, 0.131028262406404 , 0.11867152971749854, 0.10885440491208208, 0.10074990310014315, 0.09349034308733897, 0.08801087732271337, 0.08342160813907236, 0.07881118042428985, - 0.071389996086673 , 0.06485097231961627, 0.04879016416943205, + 0.071389996086673 , 0.06485097231961627, 0.04879016416943204, 0.03729578474369693, 0.03149866705937102, 0.02955880224154443, 0.02858745685191247, 0.02955880224154443, 0.03149866705937102, 0.03246719013750141, 0.03343477608623742, 0.03440142671733232, @@ -3047,7 +3047,7 @@ namespace Cl35_p_to_Ar36_starlib_data { 0.16041672140590466, 0.15100287353652742, 0.1319050708799386 , 0.11511280710050467, 0.09984533496971612, 0.08709470685093373, 0.0769610411361284 , 0.0620353909194527 , 0.05638033343610769, - 0.05354076692802976, 0.05164323315183839, 0.04879016416943205, + 0.05354076692802976, 0.05164323315183839, 0.04879016416943204, 0.04592893188839973, 0.04401688541677426, 0.04210117601863533, 0.04018178963283176, 0.04018178963283176, 0.04018178963283176, 0.04018178963283176, 0.04018178963283176, 0.04018178963283176 @@ -3096,7 +3096,7 @@ namespace Cl35_p_to_He4_S32_starlib_data { -1.3758185491345005e+01, -1.0808343906784620e+01, -8.4794158270822066e+00, -6.5712830423609239e+00, -4.9917154092437448e+00, -3.6726124816500643e+00, - -1.5871873034992807e+00, -1.3008457330480696e-03, + -1.5871873034992807e+00, -1.3008457330480694e-03, 1.2377943528014466e+00, 2.2406033006381643e+00, 3.0661907372025525e+00, 4.6279096729575810e+00, 5.7670702138921195e+00, 6.6780905106776620e+00, 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..6913239a7 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_Ar36_reaclib = 49, + k_Cl35_p_to_He4_S32_reaclib = 50, + k_Ar36_He4_to_Ca40_reaclib = 51, + k_K39_p_to_Ca40_reaclib = 52, + k_K39_p_to_He4_Ar36_reaclib = 53, + k_Ca40_He4_to_Ti44_reaclib = 54, + k_Sc43_p_to_Ti44_reaclib = 55, + k_Sc43_p_to_He4_Ca40_reaclib = 56, + k_Ti44_He4_to_Cr48_reaclib = 57, + k_Ti44_He4_to_p_V47_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,24 +393,24 @@ 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_V47_p_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, @@ -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_Ar36_reaclib", // 49, + "Cl35_p_to_He4_S32_reaclib", // 50, + "Ar36_He4_to_Ca40_reaclib", // 51, + "K39_p_to_Ca40_reaclib", // 52, + "K39_p_to_He4_Ar36_reaclib", // 53, + "Ca40_He4_to_Ti44_reaclib", // 54, + "Sc43_p_to_Ti44_reaclib", // 55, + "Sc43_p_to_He4_Ca40_reaclib", // 56, + "Ti44_He4_to_Cr48_reaclib", // 57, + "Ti44_He4_to_p_V47_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,24 +600,24 @@ 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, + "V47_p_to_He4_Ti44_derived", // 147, "Fe54_to_n_Fe53_derived", // 148, "Fe53_to_n_Fe52_derived", // 149, "Fe56_to_n_Fe55_derived", // 150, @@ -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..a8ac5a859 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 @@ -474,7 +469,7 @@ void evaluate_rates(const burn_t& state, // 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 +481,7 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -499,70 +494,22 @@ void evaluate_rates(const burn_t& state, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. - fill_derived_rates(tfactors, rate_eval); - - - // Fill approximate rates - - fill_approx_rates(tfactors, state.rho, Y, rate_eval); + derived_rates::fill_rates(tfactors, 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); + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + // We do this after DerivedRate in case the branching depends + // on a derived rate. + branched_rates::fill_rates(tfactors, rate_eval); - 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); + // Fill approximate rates - 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); + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); } @@ -614,47 +561,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 +608,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; @@ -726,143 +641,143 @@ void rhs_nuc(const burn_t& state, 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 +794,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)); } @@ -1020,13 +935,13 @@ void jac_nuc(const burn_t& state, 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 +974,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 +1048,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 +1132,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 +1169,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 +1235,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 +1296,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 +1316,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 +1363,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 +1374,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 +1426,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 +1439,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 +1488,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 +1553,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 +1616,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 +1681,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 +1702,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 +1743,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 +1764,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 +1986,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 +2019,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 +2048,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 +2080,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 +2109,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 +2144,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 +2158,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 +2174,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 +2211,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 +2228,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 +2240,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 +2280,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 +2302,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 +2339,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 +2361,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 +2369,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 +2412,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 +2475,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 +2498,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 +2537,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 +2605,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 +2629,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 +2674,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 +2696,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 +2744,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 87a853fd62d58fed5ce222dc4be4e8d867414778..7c0a46368d7a303b4ceea994300c1f54ea8747f1 100644 GIT binary patch literal 90718 zcmc$`by$>L)IK_Zg3{eBB`MutAdPfOBS?3bbc2WpNP~0>L+4N;lF}U_U6PV#&-eRO z-gBLEoj(uPn>h2#^X$F$TKBr|dri2~3n>g#Qd9^8f*~Upio>$0!)POp=DjfJ-eOY+W_)Jm6X6hD#p_tQ^ny8{XP_p^Ifz77xP z?+;14XokIJ@z~p5Q^Qqq+P^%RfE=&GES#dqt+EWk1oDi5QmmtPW@;ZWGNMEhvIXSk=Js~eWar`3 zxo|HQQ{u${g$Z@^FxlY!AFhtHs+R zGFnO^#OPm?6p;M-^{c{q>N6pg+tzq#SVV;7fkU{o_^nX+2m*VhxV+`*^XJctqi$9c z4YEIf{;b~3Kx=dBS$T)2s>~gBX9bOBMn-VK&fs6mgnkXSDHxWL}#R>MPrch z5toXCT`5FZ`x^vtn7TFA!;`yX#Y8^`Gh)FGLE5sPN4|}VL%_nq@;(}ts;H`Z=HVfj z?zJmepvIijSz*$HDROLa{7nXx0i(Dy!g zPA=qp&+qaeba;h{iK(qnHUE+Gx>C-mf<$!3JFY)(mQbj0+tV)?vn;*(`SYi}i%YOH z9U>%5f;K2P*y!+Q|N2l?pp5Yp)GATtoIbm|zSyj;6~w`0r3uOhR_y>ODxYd-2hIPU zw`|w#U#opO7tAayoUezdqeyvCQG*ffTCeybA|sXc^Y&IWI>hkn`-e$lK0?>0tvBuS^OPK|mt3f*sQX`8$_@7y+b3)7 zs5*@~%U;$8fY5E$K6sy)_<)-mZ+?Ehe={`f<64=^G;ku(kF7Eqst^WS~`yhs(pZPNE%gf5TO=3kuV#UtyJ$dq^ zlmhclmcRia>b#r5^$JxoiWs5(Wz6KH)+M+%$Q!$s-^gHRIz|gs9WKut(jrUe3*GkS zwJHn|#4fhEJG;BHoz@22_nJ@Nrldrkow=7DIypH-?|%y`5S;dg`7FVL_m7VWY`ZL^ z)zt}#ii(14lI6`{>wg}#K(wf=Y`p%acEPs;>|GwTwXTjh!}q*!fN!qRt!H}(M!zWe!~5Zp=OBw~z?jvgymD$^)NfTX9Vug^8|n+>EEI$Upj&v!X_ zKo}WKh=;?gkn*C=ZtC-0u4MFPuT#R4hY7Mx$K$$MwYC&stux2Wz@sIJ`?XZC#rFNO{ZeA}=xOZX>jG-OHG zUrf2u@RWUgd=x10aK_5Pv+KQlxwyQX?If=GlHt!G8DCyszsJwdAJ4AlxjFh!I#)&H zV!LX6vhsl`7fB4cV1TIC$-0QRfWV|_C3c+AwDYaRRf>v@B+6WuxR()3Bx0&V%>ncq#P7(9*ERIo>aJf~HEwjM~E>-qWT0svkPIe;W9!S+p zpGkZQzn#I|m%|ws*VZPMS9ElBSD+L6fzouA2bJN{{I@f7`|K<^I13D{tgJfDvxx@2 zBw!WTgcxwfVsBpzqyX5(UMp6i+BEG-e=;{pj#R8|TxHl7`&)^eMZ= z4rN^2(asE!f!`G`A|hhceC<=q=x=Qol|tVstX||2 zH~Z0Aiv53n}haBv{4s2EySotlzD77!Td(A0+7`x8Ow zqxOTze&mavu@H#J{?&bnIi_*J?luTfNzxcf4Ix{VJqwP7$*sT)R##Iq?CT}=uJ}!x zsj*UdeeHgH?F(Y^4x~gRJqWATfMCGSLk;_9ELzt{^Td8@V7TXn-eI{fG2!ww?Vx{H z^?@VNpJi4?tE#Dy^sXd!)U|`O9kB9V?`eFdfCvfByiUE@X_xr%Uc<<=AZ1>xqlsc@ zaA7J)8Bh7y?I63W%Wj7776K_FQqO7njLN4$2zm290JZdRBBRm28gb5Lv7e6i@}#__ zf+s#nz>>BowhoH)=K#=J+PS7RM!-Hc{HQ}UW}WlanS8-E`l1f0t#B*&Z5WhDvQ)W< z)63;kcs4!lv)g9__F=a^8*1kxkMotK7y{AmO7NUvR_9MNJ#wk(p2b0cT^CdvdsnV~ zlv$>y?RfMLUX2FuQHDP?POcxnc1$2?nfD}wyw%lFx1(AZTo1oG3|;BJulJ}%PEYT2 z50ie`S;hZ;HUsUm|6Jg@iS@gewUak}5x(quwefY4`LXYmUIt_#y`oKq?9Iv37YDub z`xUj=10LrSRZN8id{2HzjAGw9P#)<5j-5I!w@`}G2?m^F_QN7*vY zm#LIJ2VE-odN%!z2?%xj*-ByD#Se6;WoeE79iw&jeZ%qwoo)UI<}K0Mj8-WuFcNU3mcMVqtc*=tMw=$%}zvT?8LVw0ys6N567*Y;lI%Up8ug#WkKzLm|j zud2eX@e`Zhk2+q+pnyoRa6{hcV2GT5xA;;_zz`i@AbRUSud^R?b%+M_B=9o-`1%8M z8teon9cV~2E$TzfYGrLX;%R&?NfJARx6+DRxDk!*(_iF}pCuOVoTJok!rmfm@{=t| z`T_Kfn;cTl{*y|F^-K*jBlpjY8;p3T%#TjH&TMyKCs_un>=?-w9=C@KGG;?{` z7~u80mI*qOiD~iCSYl_8o)`+NimO=ei+izS5I(6~GM-&5#iM}yz}$+fZ=2Hi37Y&u zzO*B^ivgjUx_a>X`fGAQN3BUsZSDIICT3>KissT>{2D@Bql=rGE)t$HE!OUzL?|8d zj#Uf_2~UGjKBT?TDV2;?2|g?gE-2C9TOz?xX1le^I&T{rg#!WtAYnWwGt<+?zkc*0 zAH%cwl7qu@41CmJBa<23khX5JK#iwa4`MTH= zCXIJ%H`u=Q^`Q+6xI|{i(%~L$PgN=VfFq0=d)l?iSG04X+5qdFmS3yvOa3f*{QSQq z`tJ4hHOz!jN-EI2cH(@acOGUEEE^qZfidBS0!fgKUK^LlF36T#JD7}mC)xEx!sSyb z1>|q;_EJ?=Mj%t>_5PHLjj&(g{8&cjKEOvbxZ&vQ2>V-xXink8W3mL0#f7bG`|W;Z zjG8{Cvd%0k56@VG0c(LJeJ!mpfVID@Is&MorKQ!@(SZaCJ93YrGsmr?@}(0r&dbZo zZ$EyF*xt7OV#?oFBVXC*@|2{)`!~Iows!m69EF&e*gZ6~z~*M3<}0z;9+cJ$86?Oo zQxOjnp`8?q$nb*ZYqxw=nY%g{0D7J5EyRM@prfOs78f@#*Oiizx`P5o3zWpduBh(EM*hv!(g1gC6qQLXk4|)-=Lh&khj2YD2Oz)kx2;tLEo=8he zxBcu-aX8yIQq$DrXZ8)32%vcuVz@b42%g7EO*gxd;MQJC<|#4RZ%=Zj3cF!;OSc9G z1sTrPIaE|u4hxOne82h%!-Pkf-4SqvT$vt0&m*Q6=^}-dc1lVpOAhjq-`}mGU{Q8v zuw0|W>5Od?ZyjEpE|{!zM>9|a7C>)ZXH*_^){~!KMJjJX$(GL!R_dHL-c?+E$7>Gm zv4oHfF1%Lr8y+4$17w3P>ot|{8G=*{xdp(MI=Hu%uU|=3H4rRclDFAK8a&8AE`z** z{!hwTnhc#OC!SRVjsEq;!cC3)<%0Ji27s(O&hoUXxAJiTNeq>^?YoaV7=VarFVkxb z(%wMp4!zeC!D6MPSNfxXFXwzFEFeIPC9?mf!fvcc{mbBB4`^(Wsi>$Rk1Z{k zug|wQa=NfdNWyLB8lKSM(sXuUPJEU_fS{EB%Csq#AAm1KL*949?gWv&QvLre0omNS$0Pg;qy0K9_bj%xAP`b;ecGCJ{_qa$bQnHmfN z0s^H%wIpFTc6`*kFEYfUzkHE~JkAjF83J5Hv=|^^4rc6Hc?Cc8oc}iLFXVwd_N;tq zmr}sAW7?#~+%;aRtE{0BV&MDxE(#_&b_@n!E0mR$!6iv;JdZbn!|@oiO?qMq%E}~F zRB-vMC*MRxp$D#%Hyb{7uEi^yIpb;r`647I=K(SXY0$4JZR95n0bdVG9dXy0x|h1Ioo?|HBZ8+yH*Z$ixH*vhP)FOEW6iad~j^sf={3Xv|V% zzYPh5_{5YZ$R8D^y|^O3f5gLBud&20v8^V`o_l*Y+0TDV=05oHAlC5e{5UKoMp8im z0}%=7pbZIYF_=hyNOoZB0d9B&XzxJ@;XU`jgVKX-x&T~KwsNZl$a};B_SDA4#@LjU z^F@_^_DK0cO<%u^e~KM9oH|aLhnWX#Cin}q_TZnRCzDbP|eNFKYjXS*#D7NXYfg> z#)F3s?*sB?;`eOWE}@OslJA=F{rdWPI4X17`m zV3B5^q(n_O+v-h6&h0CP26@Y(_T^z=P~)???E?_Pr6+*s(SlkMyqBeSbaJZn{_SYw zdhsRh0sL~&hoR^s0hgEF(WYLdGx0lnEf?&*XG)jKjSRI|0IsB^49<5y)Hpo2eeAgfKzc%5s!w~hh9@Q;)j186^e3BC^rWZ%gN46 zKJ=#b=Bj+YWp-|k(|my3=mHju1}Ig0%e;wkox#4o!2EnhSVsr+-2x<2i7BWjFyJK( zPIzXMy2AMsZ`|a`h|*Hs%QC$gQ5F_7JO=q8k`=&!SD(~3G|&nQ>+T&Qz5zs*2_QTs zp;kl?YEDiZK%K+t99H%R#cy7xdU?HwUAJ}7q?;8L6&-H%^D{Lyr3Sp_&E+B1ZtIP2 z8t*I-hkg`5y_xFEbbpANllG)O+MjD{R-^Xi3L%Ykb!{^3Nl z7BL0LGf*I5{cp#-Y*hh)*)cp^IqxJQDhg$P{Ib=T0&JSjTFpT&LpZu4`1}qS44aS; z8Ir_nMF=46BbQAzk)xq!I%`0Bz&>0XB&vDEl{`PS|K}`AD9|L3a+Kzkhj@V+2I^8s zQWA0W)w$Wk0?GGZB+Wy=Z%!bPQOJ0PTt|+N55nVONiS6iDJhflqYXIaWjkA!b(jk1 zZvjC;i)|-YS4m6DqVf9fuXQxD34;w41p`Bg%LF^wc?n@Fm zIk~)8_iA6_aIPE?IBfVtL^+>6-2s4c|LBN^i9t^8;WpdWyZwyaCR!0!CnqacZ}Y+Q z=O9(jd#q6ae1~=+?7aSl$iN#19J8KSsvZzDSelxekjFRISHn;%O%T~C#o}&mr)E78 zqtnwz=%=7&;u8{rU3fZK>$LU){I_x28-!9)vcI8a0P84lU&*8s)zh|E8rx*j+;d1bXe{j$MpZgv>R~?apuNfjih!>x2VFg^zc* zxw!)ej-3l44{EtBAdpI}D7Y}9zMLpc2gC&b_5-{*jN6SVvaYUf6oqh2R}YZsIKY0O z3moQ^Qx&H4>gOua6xZQG7MGU%*E0O(={U#N!Wq+F7Lw9i<^h%G+CnQi~85Pr`LaBTw3pmHk0nH4jf_1D#vOnD7nBs8INqO!C zB4cp<7HDs8PvUwd8;F*>$;Db1xG%u2${<1*F5$jgzxHTJ>^n#HwB5e_<(l}7h03Lb z4aLIP-^?WmxKX$y2I67f)TI~BMq7N(16YKw@CqyT6qm9Xp+q=^!CF&;rSkbafrnT} zCaz2r?%vKQc2-*s)rs_ZR$VrbH}Rl%X`wo$wma1FG7RzHh7joK=__h$?RM<{&9v6IL)#lfwe?!pGUNxkX(0X z!xd8acz?tE0SwQRPYwX|A7jvGzL-?$nU!+)=71+A=ozq~r!?rs()4$nOf z*^PJiCjOGPT!1RM1G>mAG}_eu-h@`DP|(b4hD?lMQH zacS>xL+9d^<6W_Nhr39KFNfx4va|{b+!-jSYC(JF8IC)YgOxjW$xf24{=7 z1B#MwL&L*}{1L^@lvsxjqca+Gxb0(O1fWvYQM)}iI_W3fTYgN1PDVJtI62o$;mk0L zkQrDi*hF56?n^0Q6L+vD^+#u=%|_1s^yz*q8XDTLN9*Ywq^`!i!>V?f8Ut~|gp_?|(% z_jAl%Cb4st>*XK^Q4LyOu>)UyMZ2q>$WB)AwES}@Zb~+nGcQd;@$E(#2J#&8V<*Xr z_COR}(+^&b`Xuw`jFM}d2If|00=zHBSN%}%s!x2H#ar54$A79E{c=HsXnhRF*)(D# zzpykAp;aY)F^va(b^8W0fl>#0CViHr^t3daU)sBR30l8B*{gf8R+Yw^7NCN*$HH zW+Q1%f6G(_;j=6=8G)u0qZO+U-OI_C!G|4QDJEoND9XC+|7z2)C_8iMJ%jCf25YSQ zj_rpXNC=PzPlfJXl$#}t&%{d5J$19YiY#(ep z^loSY^j1(iW3j}u>~{{D2SpsP^Zh(K-tdJT>``sei)bKec`-k?Gf)X9PFcg~zW&|8 z$p({~6n`{y_d=g61V|Sh)3a|Hc!azUqy;WtmIUt*-PFAyPqvWT#wH=VRoYG~LK8D2 zKy=kXA8qD&1X3rA=iX&w%eAj4l6&XpJ0tI|*J+FsFl)W^+J=3*s_HH6WIkmdNRF zOAGc~%@vHQH1P)|`Hu*X2Z+INR`%>l-mZ++?XUjU6gK9(B zF2z>=1h!&w|2IQ)IgOqCdenZ5OJr3`tsvon;4#O#>?q-XZa^8d`Ze2hmhbr!WuR{( zDm~`0;m`q5Q$$_!>+?d56=&luhPerGeu(P_eyhIX(YB60#Vnn6&)w0Q+lztq`?P_{ zlu#3Oh9!Ly!(8{!a|ZGzKPREW@FAq>T(i2@m?tQ=9)Bx?3UW}Y!%v^Un^d{%T-^O% zt!Ni#Yaq|aT)w8_>hh5vI+_D_-BpQyT2Rl_XXc!q2`xQQii-6XTbQe!N&mstG0a}_!EyD<1WQv&RBo@fes51+c(w$R35OZRmnWFzc z)@1(7yMI7>oJE0}rL&hG7PHlR&%vpS=|_Mc=Pg>W3`V^Yn~PnJAceds4aPTLAi=P5 zvdA$Zznnra#qUFa7~?D&z6yEwl~hD<2+K}kJ*whn1}Rw9PxhcwH)nC@_1L<@R*p*H zBg2CyKR(Q-y4by9Xx|9VSu~upFC@?Y&`I*o%f=?bN|+TNd2L#qpoZ?|)hBr>e3;1n z^s^ov;&m!_rcAFZ#J$>1YN=8d17CggaV|2SzI14AGO_+K-FJ%8{zYSxOS(EBSL6|) zJn<~f^m-MIi^VSf>c}DNW8^IjobX61DQDgUr-t6Xg3GD`Yt@GPTdU~XH&wmCu#?94 zhRnv=XE`e>g=)n68@}H498cC9xWkEQ8Hrs3 z&$#w0^hUbcgC$=70cXl+o{kd4LP_dYJBd%jZ^XD;+E0Kuo_TTMwZFVaWPhf^-ZD+Z zK~6?Ff-s1V@ml32T^VduffmY+HO<7a4um-YV}x?m-|lMx37q9370o0lPAKtdqx?#nBa4 zn;Aq0YxQJrCkiSqrE&3P6M9XkM{b+V2v5G%%~udku%$8wknV}_WVXBBeWm_|H4beC z+Ur_*Z&JVwn+{~D3)faI{3QyP#2km(T5L-3p+2%2LKog;AVbFw+P2Ph*9RIh;8^UG zs}#I_uQ_k*fIW8`HWM<$g>mv!uvhL_(sR9by;zk`9=KxW-M`ABD;Vo9Hen}>tX%D) zA)cF3*h(ta(}T^)({^V*Ha8L;ohy5823K(=T}GK)#3z7cLl_yj{^Iu91@s`hA&)XY zF6|uEZ$XBJ_m5`C>r;6k<(Cs}ip~?aip&wkE@-e&K+0YvT3Rb&9^x;za?JKIt&q}k z)}k*^$&Pq6wM?wPkj=%F%^i8e9ghBhck!RO(=u;#R88XfbHGd>0A60Y(E+I)^)6&l z`aSUhnFuyHdDP;fq4U-_1~5egN`KPkTlJQWo4=mhX2rJGwK@E$b7_c`D#PA(d>N5) zkWUAQdRCfivW<;go3|F(sv??}1JZo0PPOpp~<3MwdD>5Tk5ui=D!W zPx~S}5TMhiPZ8nF9Tinpde~MUITLN9x5uA=eF}6USWz? zh71|w|C@g@2ADV&fgmthV?ze6Njf$@F+rr7C*KZ?ad2`HbfAlFu1~T?xeKgr8=(0F=NTeKR#S&z?Sgn$vyn{{8m%4^j- z&Cvz=xoF@NF*`P~v57WM_dxb|F}FV)Qw*3^xrh4XBteYG&LdiFqgp^*h`G7i^J8MQ z)=wq{eVz!Qo`}VLn}*Gs`mElc3I9TF5q%rh^tqw)q7~T%hCTC=RksG6p1!|$V;9gf z9)~}TKr_dXT&Z|Uc&q7*Dkv#I2WGJcfE2bF^<~)+qHX+6%*0CmsG*9i#V?zPwVzIs z0tq53E4x4Ewy*>wPsyEHyM-3_9q7d3=BDMSFG8kH7OXMFWM9)%h>myFUQQG;^KMI$ z!sN?a8u#C;iAz65_m^u%eQ!TJ9bhcn5BvG!5)xj$yG}56I`Y`}@D^M1jX%l&dSNgc z5ucYvix}wJ&wj)!4gu;Y{^(|*71Ly`sGM3|E$NdVBO{~t$&~rMd-op6+&G`&{nvyF znDD0a&0+?*8l*Q8>d}+^eK;f}7Dp}d@$m=eTjeRNQRa|+pv!xNxk>mQR*C5BZkkv_4c;w z+BJ`Dd#;7N?OSzUOLMcoYB-Q>0sTA@++PVemgw<(F<=VTsuLawbB50ei78jI zvN5*=P;tSl0F5+dY%(%;%YmJ3HreVYK9DN-eR;*~)hnabuL=FT=5SkWcsQr5e01Eq zcL582H_cO5B?hgOfT)%XFXSxKZ;k-I*y^*o|DcmmkS3mM)mUp6N4J8IG8=m~2%a3= zw()2Z=?b7qCBR{epUKb7HQJemN=6rQYLx5uk8pi@@?Sx!#%>`7@YF_)Ksrbg^#UlR zi^zZ)FtL;AKrR7tP$eMvbGj;guRKA!*(_rNWTiXxFWIdJfj{iUix-eLfW_RNt;d4^ zSpo&HDI|dE7Vti+7&bd9R%3<}%V3?2;-~Ei>^EDI<}`@ep1S(2L%qz+4OlF70snt)p;y#PdNAW(iJBqdSrTUc3H zUGDka1STX908?rTkA_bSrDz1`$t7!9SXeqhcLqIi+n&S$w*osyTD_@V+%D5ta4@8+6NyCh*3Gxe57=?+}5c=E)5{2J)(FB_a?tZtrRi3a&y|3=Bm z%94zJR;mGKxZT0AAsgETCz*+jZEP}MrO0GDp3aix;48OSIVzz8NI6aK{H_xX7?&~PT3y=uof zfgRT8;>2jW+9En4V^_iLIZTv|4FgEA_V)I01*7eNmeBAW}VFzT>B+18H!#Rhp~zxeoQYeLb);MFU7-}8-p$u37Aw@Wh4Dy9kL zLKSJ_7J&&oM4q9e#%4xIN$Cyfcxi#E0z|?<@XPLKGCb#Fz1XXZ zQ>&McNr0&z_zVC|at~B07M5a96JTQ>8khTukB<*`0}zXO3;6zCC4zfVL9S|R@wxa9 zY3fX$U}9o&08*PD|-5zDNpJ|r846mybNJ>s#0`gqzSSaeV5cDTN7oDA*edKrT zy>!{u_PFF_JuaLa1{De$7dOD~=3?Qg?lV20GXUOrQr}C6ph`2XYaxz5Q>mzW01Scv zr^C=R79=h%4(`uZQBm37t{Th+@%M!_RLdsbW5)U_C-hOWEvM1aH6#mJM#s z6D7rgWd97X^azmN-d-U0$IqYP;o@d$6q6mNZp@G7nb&D*Xe=k2r?-Ri%CYUWnxMHq zX%b7r&rbvfEYw#X{4WQbeNy=OGcLdF?9envd~c8=*U8Dr`gkcBfD`bo0BMID{02^< zfkjdhZ!RdfH&bgjAsCaJOD`EsdKa)xKYsi$1P)Ttsy-{=522%{zaN=jq-MF@k{WGy z!nmk2(Epk9qWs5V);y5#48yatX#wA4b*w6E^%AhMppwDk98~dNhliCwQXm(0MTaL6 z`{J4l#tiQOAOS3=*tHBxC!MYjBLQFz2tGnWLbxEDnwADKYwY@t1`2dAT+nSR zm9R53qy~XLxkwBW@Y&B4ySMM(2LaPN{C0rwMXm3?bT>`r^ejl?PN-}9z$7cH@cW>k zS*}v2UtfPz)V^DmZ93Vu2c{i3bit17S|2UMdlw%M7fb?Cu$KEcS|wh;X7cv&37%dD z4yz!rd2mHB8dPMOxSi$YfLyu6Y~Xa4k&%I`m=0jj1wMwMvtkgg_$D-#!!&`npv6YR z%ks%xLhHI9J1n}zU>yIX`R`=+!(}`TYC|bK@A>=t!^324Ag$7{9TA9lZ36?C8GhG- zK%s}P5$+ZMCV*?}1ScpK?l3*ZN(1gZ#2(Q9Kn{J(p7?;5SN)6X7(=G2ii)9?Rb*-^c~&$KEcHEB z34k+as!G6R6F=Q^^I>OC&k8Ww5XSfb)wb^D`r-hTBg^Qk;h#+3#7#8pW>v4<5Fv)T z@81Zkb~x6PgHs9k6kvcs14b(d1fUBzEE@u24?y!m&3y?>&~MYz%c|ZhlxkO*(FhBZ z*)<;%LKfkZ10a+lfFJ<}$)sy7R}&uZ$u-t@wj`D5=cn)^-T1m-VmDl~$EidBj)UU> zl*tvaC`5!IJ_lWJBQOH621F8ZSaw|jDZ~W$-GT6K*nGTnJj}n6KAqUeyyOdXVs8Kd z&vqO4s0p{&#arDEjNzDxjq;xoM}-=^+qu89D(@WEYpR1MvFa%J?%k%D^#uFu6o7s3 zi4MAzwA55=Z0yV`yEvW3@p^rsfrP$Q*!Hn-0=Ow)7x=gmE}>MoNmT{LDoCM&k&%%O z8zc128zawIme^HTT#gLgFQLu}B?xZ-XagRs7j}&Re3a-l5)O)8l#Dy^2DO~tfpWMh zz^=eRQj(Ahv%c33FSxMOo(CEc`>0mk6NdOK;I&}Gr~kLdW@g8Obav=IytBYQ0ER($ z-W`C@B&}MpTU#+kNk||8&Yz>0S2hg(608Bi^&V9#FBBBIfPQXdYa0WQbJ`k^1WQMR znG8bXz`#;F|I(kaC!eZUC92~;QfWUky{oBrtik0W!6 zr#uII3_vIZ8Meb|P&AZY?!%~8S#a=O;N;`I{&SN!BmnTn_x9A;FCl_>tpJ$|K2!#h zV^429qq3UXr^8E+6))=ZD+hs#lh@xUw^7gvT{rEvkw1#$p{8uW=E-4mV6Oiog>vZ4dXsAKbCfIKJ(t9zw0B?lTK(@85bo&O+)oj80F z{4NdUoJZJK5BLatuYa4vg;qX3zG%xW&{n=nTHhV{X{!}w(bE4(r- zw2H%1t>+QQzc2?N>!4GL5DyFtNXyA}0B2D(?iIZG0_g{ca6oz_p%?IJhO9JrzNVYD zI|a}2KwP|a>Hv$34;{pBPF_<+29;ziWi+@A_^c5yr~;HVR3POi?B?bMPFl@W<=iS-*srznv zx$3*`lahebpwn~kJ}T-+vNa0C%}WkMZ8;R6q*12(rvRjqi+ZZ<9gK{ql+Mnl0hkj6 z>WA~G>tnaQbGhoEkPuS(r81V2_wVs9frAa^>gdP?iqP@N@JB&4OI_z{j-y|{o|>64 zfT1q`XQ7xhJUnXVE5O}?2?piLTh5DQ0=7nS(aO>P95Lk-9?MZC>-na7Xa@umMOmtM zI{TInz-(?Ak?66}GsRQ^qj&D4R{t}Rg9ybDB2s`Sclam^E%2f|kc?^r6O+z-ANp3o zoCm*4)L;42<^?EIGZJ&Qa&mnP^xgmr-nX-}i|-sI24Dx&efOLhxFw98ogF#VLI=oH zq-Y%~7kS)Em=G{pMk)6D2cD_9xyg?&alixT*e5CZ=gOlY;S#j)Yy$0Q1EVc)EWYk) zTv?~kDGmZKDJ6x!Ar1J?e)PsG;HsLyn=AOZYey#EQ#%+1WZw6}hE>0b81$*cyq5UJ zCMLS-rO@I0Gabdf- zilWE(=fDMJyz=|(3_bxDAWa9xdcpFDcpj}Ay>CGWpz=+*xGxcz0eMtN`V*+in4urY z7Pw#nj7(%uOUP|EDpB9Fu&X<#F;oLK2h0h8OkV2+0nOZUb)pM*$bfwVW#Xw^=fAnt zJa{%4&VCMV<HuI$)SLXk z?{tfbyK|1vq@j*~G9L=%6}vi8y>kbdR8Ysp|4BQX(lG>B`5E>A zxiKYtWrzicb7kL!^JChNwe`;dFiQ1}G-v3Gya%|5o~r9c&+6zx8A#>jBAyM^LbtU1PXdl-n! zA_X>o0>lyt;Hd)h@*Y2@#X-g-4Jdy%K$*@@KI(!*VamuDBQB8kjxx6aRK#&QrP%&CQGC1YR5rE zLjwK)a6$v;2OJ!Mo{wy_6$ET|3`HbhhcdymFzkAFZ|{kA!qcrw-|GQ)AM1PPD0Mt* z78~!u@NSy0n=#1Jz&yfL5Upa2kSxdlzAnV*xRudRNhuV0=Es*GK%L`}T}8bVYNTrL zoHFSeremG*!9Z1?i?p_2=qn7uSxqjL42*tnVBmoG$=~?SIX0#j$t&3_2IqzPrS*;6zp&u4dgEQ^jho2Otkv z2K@nn51N?=o3glNruc{u#94~rS}O>cU&H~;?DLB%d#+V8M_pFLWieuoZ?bkJu+Nqv z&|m1r+!%5nurPMtETnIgb6>;F?~Se)K$H;hTNT3nY^(qH-ht!OJ$C>96%+u3arw}a z43_u>1Hn4^#8>%%2X;|!Qqo@KWIUJ?uAW~7UDBZFDLLE%y_W8U3Fta_>$*Q6ytnu@ zf#nSFye=(Mf0iX|8Yw|1`W*HBdT}w3Y?c7DGB7ZRq7)^a$+k5-J(q*Lxn8n$KR#%| zh@tqolF7eRrc#_`>3O`4EJKG2Uzx!{EI5p9s4ARnJunMTD13l;@GEElR-f}(;welo z7a5sDFvzDIBebg2Bd5ouhPUS=G1T~~o~NnyH&;=@aboQ-_!w}li;E86tOf?RHh!-a z`!ho>$l?Jf!r5sOJ4QF|{IIeexR}OP(~SQ#(LtIpm`X+j)FLP;NWe?|2>zV}fT=YC zz)7pol`S2Zw9Lj*{}gH3h7|1-xyoM~E%p_oq9!v#pJ~OZBJe2p>Qil$fa=|F@geN_ z*=F25=L73{R4hNKar$d3tMZ8k?!A{v`q4%=qG4or6%2xofxuq3Kd*&;ub@@G87?sS zrN1DgEEjf}%jBCoKC%Jvt*ChH-zaKcTkEEC|MbTX(dBJqXxT{GX1&5?31>!Zp2q(4UD<2r?vtcdTKiUef8=v*W{-`styk^YPOawP%5Rp zT7l;yLAy^qmx;MtQr+3FaQuj48a;%n%g zWGl~((oMc>WhBLgmP9o4AttXfe=;TFn|xug@Qajyy!4|6SLiOA&V4t)RRG>-UBm;_ zKzQl9zP_*nI4)4;uM^YK4Ih<&@@y%n!aeV(2EDFcEoy)ggV8(DTIB9sTgA7L`%^WM z7&TRViL^&G*EZj_&d*L8(7rH_zi>{0arDG1JIyR-Swa>lzjs*6jEdF>LuqulM5l;j;Xvd)|lXG_GTfI zE|T}X$s9I&)wsLBp9vpZfPeo&RXdqolRwZP2*E&o8}O;>&`SPYX1)~zs{xwUZ8MnG zoy9>xq>6KcE4cDQD2|Ox7I|(iM3kUm_&q_T^ol5w4!Pg)X7SpVcx(zILu81eXMy~F zpRUXTX)Y-it1v=B(KYE>zq*=!w1J{!&+oxtXPV(OU7g&VRRz=p(zwFs3Y0fltBlGH zTf2y$X)31*A4;0b&{6VVG9ZWL3$HlWD1Q0UQHj1Yv2Ne+xm|k~uxN6W+x~G`WoNdM zirc=gnCP-o!Y_VV(o_CEFpbY3nj-^G3fjK)@A+6}-;(?zQ0FuQ;25Grs}hkb*@y+{ z?-$$5p=prI!G_PgjV_>-H0vvCQA;#sXR8}6?iIC)fj+GB_K50_zB@<+m7n(TPqt*V zas%fQk>b(b9Y!)Vkh(MMS#>pniN^I`cXC@c8N@K=l*oE9)IQDaJ`J@UaO7Z}5DnD3 zWBA%0B?{feW@K{DF1%}OyCIT5jtaAO?sCMSnUmy>8T){a&!oo8nmmtmO;N(hG<0|Ogb;S1 zmspj;V;dtMQ{Ot#KfCwCI+}xWH_JsIi%Kfh$BQSO@<-^5!D=h*_u;LTD}nfz5U23# zv;JITrjPsQeuuB`2nmhR|1vn+5&0#%3Orf6zQEHmcjh*vCvnSXYUkdL`uD&IEBs#I z>@=NaEoUV}xcG@Bm04^Pf8L<1<=-*k=&)$Xj%m=SZ3G+aBCSIHomHN}-QXq6Q)u7; zMZ6Ldg-n$O3saPQ5;z^0^u+t25SMBYV{+eP(w7s@T-A2m80)yAYsJThlX~d6)$nB9 zH(dGile&s#ziXvC^(5)}s=z<;`3E+aoGn8I+b82xPb;2OyOiECITd}9bbSv({s^8u zVq(%!ga^Wn#;R%z#$2`^Qo{EgI+2>2I0Xuj0%kv+IQ4VHn+z>KE6|uP!P;9f4bDN6 zt+s#EeE26M~mVMy|_;am~ zatCXNNJ_%~EuU2Udo)um9sSPF+$!2tk*B4t-@P@Y7Dp*nwz`~e(hEEJ^ax92e4{ey1C-jw2CH$eV4ggO8Pw!E7Zc8L;T&OVM=GJN>kNC$;sWN zl{dlh4Lla!ic&1wJ~je`a}(+&H9n>95j!{#d4A0G>J9f-+2-BA{EXkGYMNDF7us+$ zEw%XF_%`js(BLeO{NGj!N0|i#3b3*X6yfu4Ii$!)Op4eI>8Zwgb*VNl*=p8mZG3M{ ze=hUfrMT-sg6xv9swVQ!8Kh&z*)!XHAL8OlqJ*^>U4}Q&Y-rFnC zZdiLMi<9T$hu9_Q8GW5DjLlaoJI*v_DSxv>hhIA{=WNHl&MyHJNZ-o?sZ^m?mmd}X zFcuOv{gU*~iBng6v=F%thw=I#E-at8Q) zXRQ~FV>5YdDWe^Du_rrB*5%@ENWvVipgJPWKEUX=rV>#dBbA50yybHrb`qwfDZ<@p zuq9$bhQE$T<`iB*k)awwBZs-Xb#>6c={B(c7#(Am+S;#jjg9 zM(3a7mFAhr|1YM#JCMu2ZCgW2Dw0_#Niwr5MM+YTl`TTZmc3O-Rw_vpvWl!^?_^bW z_TD3VgzWdYy6^XSp1|K;Ad!p6sY)*PAWl+8LmR@TZaK(F8UwL9BHJMXrp`zg0`zUq1% zz-1o=rLFLvt0~7t6l;un@TM+l>eh}}`oE5DTc2>9dm5w9;h1Zrq-CA0SfojQcbMBi zmPMKNq?wV^{}E5*W_-SXdAa&3-&GPitT+chZ=REIB_?ZDw)qLksh0?F(DM&4tg}tFs zBe}#zt*uMOEpLpJh2=n(&#pBjXVpS>ubNXS>QwzY@zO-+ixUft#6`G36G z2es?Pyok@}pFCma7tCdZ+)rT7`gH?OdGfR!F9)r>cJ2uv`K=pCP>EKRdvzR1j{|Eo?kYT=5d8A!XM>^X@D4@8H2zc&DNdoK)m z+>{5$sOze}SCzt#JA+y3tx4y`7A|`|>#q6p76SW=!X?daGg7ARlG(r5;ItOmEn@Lm zu)*mti6;G##MJdtZiCcCsnE~s7Uqndj8k24+4KXyVs8?5?H3_(S!br;?n<>By74bo zi?F}cGVZCU3HJKhRU>wmJ0*S3()#q-;gkTgKPF2MCJsCbx2ZK=_(3&MloYeCi{bxX z_>(IVJo+i;eTmjhO4A*shI;IYu=?A9EVl*Y_g=%Zi;GWSq;gy#PtujSFza!>!qwD- z)zQw9DpR!cs8@C(A2IiBmS64ssRly!S5ZnG*Rq4$2| z+N#C*_)7@^D;zG_JDtPE^`~mr*SA{UWSectVX${>QavnF_sn~W>wh(Ya(Q#VpRu2{ z=G@O{8c_1EY^R*2O`4ytIP*7AtDRzO0;WH!5WWO(xvsqj7t!9{{*AQ>2~M|5XH~kS z-rz-SoW9k&+*30!lW`$`L1wSftA*N5+jPMSlOt)JjAN7T&uYknA2}FU?PW7gulSs= zINsSfF)>k>qE)0Gv|{Xi=I&RL*0#3aCi69e$!FIhC`PS2=Go(K_og2DINLd96_@<6 zs%8>G5y4u9y}s(xshAQa99*y#Uc^~vQ$%6_sq9j(&Jl_0+> zAov394mafvYVT->&7MmN+)UZaD3X7*Trk*Yc8Sd0!kAp9k+tbt>K8Urz*v8T3Wq|D zZ=4BiJehd);pMcB`N~fg(Vyi<)qx=zOyA_VtP==9Z*53 zTe;^Y%MR-$7iCL|**?t)Z-K-MerZYPV3)hrntX?qngmChoQ7Q2Qv)$m|I53Vlrhp$?`Po;+r*iH{ z^FO$T)N#RR@e$V`dV42@y-W&w)H$flr*ld9L9D8qbbgyNx{!6A5@j>2Vxd67&M_`4 zV8;H&es1^n#+If09`0i&i#p%C`W06fOl|eb%X5lu&+SmxSxP9G>1#Bj=UbQ2;ucQ{ zSkk@{W9zb^)-wNd2Jj#2?Og5|+LaZBj+lbnEkF|GP9Q7e#JO{HgveA<@{+Bs;HQKH zl#vT0oD;(5NVeUa(hnR)M z830NM4j_Laxx_(l6bhGRUqJ*YBIxvpFJ*f1wY{C*)z$UeYEN~we@fAdA48VlL{0!T z1bqSNqlZ}JLvf}@K(ir|fjMpq*s6jBmH6M#>v=+}FGK_U2;3m0_jV;ErElYKgl;h& ze`0V!egK#-zyWC17#tiN;y!(PEFTXmrYFEdc$7Vtieh8+jJ=#>{$q=$=-ymjUWRNB zqNd0As-&c(^6}aqzU8s<@lbjEf4B@9Df~QWM~J9LE31PdtJ`<%7;|3N9lNgYBmPjl zHc?l%OiM+DHQ()3O9M|+CKVHjpe5Nv_Z_Z$JB>Scjt7OZ*qoy9K9)RU^`nfT?EDgY z&6%pTMvGRg;N*A;JgiVp zL2!a!@2h|)d4mai73CR`nY37+bEl6BV*-o&Bt!%u1|;9 z)(lEcVm^G_l(t&ZrZn%uO6`3NE^H6Lld;xaDQ@ucLqX)R z+G#xq`AR^R|0k7&!FD_e8Vh2ogn{rV48J?lkKI9%E8%HNQqSrKza`6NQ@b}W5ZvYe z7x*Gtb?`wqB!q{OwThm_#j(PI-PLOg2ka=Q9`Gn8Uk0x_Ar_7TvIzWVxTD>MyYV!R zd4ykdVq#@|sk$%2 zjNY7mz{DaG-We6^^Pg_SCn_ef7qXIawL(<79hy-1TBOl*)quLORSmk?OLeEFeA z-xUAZb$umLtH^anwOaIBJTZt*3268z!?1Q$iw4qb!rY4EOzMIl-uY6*I}oWU&;hY5 z4M1tFUGgLnfg&bOTN0cd z%k_7fm0V?CO1xX?!{T{*9E<-RxX@X>r81bi0zCeE`QI`xg<@nPM2H-cBDD{ym7-wNfasv+KZ0qm%W#Kj7T+AoQ_@_ z5IFdI%Mp|J@(C~GEv&x$O5erpysjc69($;7^@?|^+tqooUq4k{4&3Lg_@Y;7(f4@R zxS2@CfVQg~sv2p_z9;Gb8FzQcu~MlNxn68W9z!Cxa8_DIMj32&XY{LRSv2X71y>T< z4wLrucvY=tvk?ftS~Q)=Avh7b;kNVz#Qqv$g&{_as9*WBxLE#}l&lWVdGvxq3L7V9 z8Q#Lsb-iUG`r-}0A!U(0{d>p(h3%%q9UXJ)S0*4j17Z6;&vfr|ME`=nVdCblz3=km z$rByCarqtPB*^bU2!wJP*PpJ_a03!jG*3^@`jvcTWCZPnfG(++?-K(PrLSC9s;GRJ z(-qFw-{1`nl3BXSC_2z`3!=%VzP=?J>#OA9a$N_|wjx1A8vz6?IqIzEiVj;fi!&Y1 z+AEvTr(sQ}sd`HGWD5U{O?f^(Du?}InO0|yQI<3mQx;W?`6g>F+TUBg{!aSzRzWsGRCS?V)X28@mt)lI`Q@M911j9nwzQ9zd+zMhsw^wod@80Iv@v~)L6ep>f0N7L zb+1;D1k*K^osDev)Dk5;15{KJK0PRmP)n6T{k7axSxO&dq0CAJE&Cowkv-g^CHx5j zNs2*_@81;I=!`3%l73$$%dqYf$`&2%eObl={^|8W@9-6}KHPIM4M>khAuX zm*Era_Y`{sfg3$U6Zm_@*IX9#f(IFfWgdr={J$l!vC*zg%BQNuL$_UfT9oug0QpUgkm0VG7102WpnJCAg&~`r2YPAXF1H z@AiXrCc4a7SX5LLYKH3f(_HYtrfeMYpA7zDeRO)vFu;_XoMNmwp~rl{duq` zgs^BR4TZ=?ER(}?@J-|z!%da9Ez%qIb~hU~1d&WlWVHVKw`xjIJn@a@`QBzLZwZh% z_FZx5$khj`yotgJG{%=NZ?PB_!iCz>3w??Gcv4oVBGa?6k3kka$REqKo!mocpP-{5 z5}O&_*0w;1M_hEA_Z6_A$ZBZ#MMW|F%O?o?j-dMQgQ(9lpb#^^2N&ax^g}ay#(qoP z;xR;3LtXj0JeWd(NHi;ictF2tIKPDubwb~5`hx88TOspu!YncOV2TAnAQi7U)ztBLWr7J|Be0%zjm>=D0AVG2d z7RUvDP*hYTa;Pm9ejbWmh?iOM=O^--;R`slxbAeX>su!2P?LXQullOn&o`n9F7Q1N zIq(dBy7bI7_EFCN*?iaCVM)hBR|WwrVQk_3MXvQKKOSn-&-d$@0;P@a6KoV@k;Kt* z)N%AUA-Y6sgfB-5_x7U>gA{0qqG5$f%(x~lZXJLWEn@taKA*O7Yos=!0$C;MCi$6( z=%@&?a1R-ox=9skfo|n%PEJ8hbtOD4M9R_?JR`pTIq-`>nw?lyZd`efSJn4qhw)@j zQPEYmo(w(oQpB;Dl~7FC&g-KFImC8qnE-NYi(J;4d;q7C{*r>aL}F|hR3cvc8L2bZg&Tu3+vs%d zRf8ZA&?t0n8=Vzk78J}Z{-vRtn@dEP&Q1+-{cXAHCN(kj2y71hNo$Vz;vPGA11)WY`%#h$dKrOfiW!6E+g02h}Iv ztc2{p509^TP%84KK0_aD8}`S?&(9>tgU0OSokGNEE79d8J;gH+amm`LsInI_ z;O{?v7zU+6kl*fN7*XQ2{|ZZB#?Mw_+6ba%JyEaJq&Z=nG`9z8?8y}_2E2ZRVxC2v zFX}iERp-wj%{?IJRR1}nS@#^`OwwHKZo~Efy*s~=ls{qp*nN`9?Oof=))d)zieN-H zdBEQh*t}-`olt-TSB_u&7!bi1euVzvRfXJsuaJV&<+9?Zs}@_CdXBj7%xy1ODDQLZ zc>4>`S|mUR9DSfBTOoqbMnAlM#;o&fU(aMkC>smQ4(MKt zZAI-)0KkNTvDxWaa>NzLnt1RvI8Q&f@f;R$rbXSUo*FTWk&pjVGnby4dKoTINR&NY zpb#B}R4dnRdLL?Mbg9M0nuEXNmq~98F7wZ3UtqF=cJr>Tg3vZOwjj(^yD%wMKkLH^ zjLAhVcO*25UmFkaYK27HzooOjo&x4odbeQzKD?fjwp&L0{QPzp#KY49S*wbD7n~$# z>}T%wMF6}=)45-p))|0)A5UO*Ufuu(0jdoofo&yuLeB66nqSI57HQref8oJ`dcriY zL#xnPRriq%3Ps+UV3u#LKu;qVSoU)_}NVb!p-evzG=5w z`yn2keyE1eCxl{%v2$IC%6CYut*w`*h~O8&WaWoMO2Yp@La6Vg zU=ATlAbU!_&Y!bLF>mK8B64tu=U;7g8xr^c@9Ls55}LR(ki3#y0(?Lu#~eNS4CaDj z6qVjogn@ZRjD!*Y+|S^_63Qz*lth1yE}>D!OZW(B^8FA%S3Ey{g@mNAuyC{sdjx93 zO<$eG5Nh_ybxIJ}5Gy--L;Lja-`-eWL4|OZVg;Ftq`-$r&_i#7;b%V{$LyRO0V56s zRfTDNQDjr}<#^pnT~=P+{B~mB-o2%SkA;|}aL`#;S^{t>gH;cSfX^_TX+scO?GuTL z*;VtUIT!&PyNi+YM)(M|S0C*>dcbvGxrSC!TwL7M@ts*GpLDkMq-cra8jj}IQBYGi zPt8f-;2;kuX_A*p}M@dTNRf`*Zf2pkGBS(uq2+-`(K8=o1@ ztSux&!;9EN!a+quC;3qeo1I*LYv~1G=oi~bs~(pn!?2No0W`%=^~+QuaHDt6_ApMJ zoRB#k=XUW3@S-$kpN}663TTRfu43r+vsE^=wzdwOIsj7yz3;0foP)6P(TMaw?T(B@ z?Y1v^FbZE7t_pF-v;B*er>EwP@s6zf+wC;nx3Vy94;|{;b?tv; zCVbn@efK-%?PvS15>`i&8GOxgAapcb8edUt{II$LPPM*l9>PC{st!-q+xk_rO52In z$oZ079J~2N4b-bGQr;H`HN3Jo(k2w;qB*oJ?w+PAuY;3rr!)~(yNt;vy7IEF?|wq$`{7odH%OO2x*Z;+=aS6lJGy-vjcnX^R}g*> zwTwN0-U!nijFis<1KrX1MQ+R%Z7gsjWA2Np-Z>%x?epg|h_TyNQz!&SXc&zn?g9?6 zSC;V>i>TMpDO`ZTo;ciyEQU zdwt$*kr2lrQnkDg6aNYJas4}U$XzS}j&;9@8NsKpH~V%MI0=2~LO1(7BqTmnCQ^1Z z@gw8GgSubNuL8+Fi)NM3JDzOF8;BsYG2Y`+zyeY=5dE?W&H#%C59%GXzo0X~3BPN1{gIC%sPE0WX=dn%=p$+|aQhKcU|OxnHWI>g zINp*XWVE{m<%QU4fH8w#En+gHcqs)Y7(9YI;a+?c98B}ydGPQB`?_?BZh3ga;APb` zMX(ZYsxS>%LKu&ZzWxrp_o(GWZ05<6q=W_L-8n15chR>7(`OX=D7CB~D^TOLwdJU$ zrtgHW^jD7PxpS(2&m6_(5R5VY14t(myLT_9ruGIZ2a>1m-v;igX3nwnDKs>6hxtft zRh36U!9`#N|DxUo3Q~NLq?&8}`!S^G$5>eo9jOy1%FclhAS4yhc)? z8Anv&anxNLUGV7(K=Ghy`| z5HrCyM3exLV{7l^WV~Jk+|VN-!8ovz8P_U9?Z|vHB_m@`Z&f4Uh~J!TL>?m{t|aN5 zm`GfD>WUI)uZQSagFR*+=S(9tb6)prVT5 z;WK~;^DlNj{mU*Eq2^FI_Ubav?aAPl#VCX=>JGo-LeT9M_^L2rN2R(UFyMR<^UCV# z0J4G0hy#1n9s~$O*Ra{^&`=}Um$1_AzUcS|Nol(7L)3Wbp207*mB4b)49{W^>7C5# z5xhTa?c}s6^rt&3E6WR5Nx4Zn-oO&bQwcl{FPy;3DHxszFZe9s*G2P7yhLXJ(ztVr z2vF4)e6TIoy8`nnM6m4n&6ssy;5`TmP!{hbn(N~sXYYMK5II3<*3=ilqq_rY?bhDJ z3xyj(+_(O&tcTvetPH9`1&H`}%4ZHvPSKbQLFQ0yY@%20eR1t*F|chwB<$ ziw6mpgawWW-OzMdXp$&{J(+vWUyHY3>hVpzj6FQRul`+bwb77lSlf)8-ZWQIq6Xw} z7rY?)q1&w2ywqt}z}xY=w!m~rMqJt6Vt0WRx-)klTFjn0aU!}q=1*8rW$njqzjM(l zOOIn<&>CNmxpnIaUefXa#sK(T>AJhSi9`WBUt8hKAvm!UC$0>n4Pxm0Y}R$&8P;C{ zEBW_lw2}Vd77g7ZPN6R^pVYJd4JHJ6?cS(T0}|F=C{s~bZ$$v^|5?d{^P#aDg~jmX z;W8Z_Jn;_^f1q8Sg!5w1GG}IsGvdby{1^YHt`?1j1q_DTJ(GC0Jjxc}d_xyt?Yb<5 z##vh0Uv_CuQ(0@$qI2ad;Z7o^aQd_!m{5qdO=U5hqS$jb7_ zJ6_v@#x|H+i%6dBL)6125S+74izWr8aB9xL`L&G%rxI4o@pfYQof?gFC}nLyOyTwj zxQ<`Gd`VcFiBbaG9Hi6Ra>t#-o-o9vBKaNNobOIX=L3k6FNQb5W0M=b08zFp;B_Nx)L_)$t_QT5&LL!|VSQ5C+J2QS`yu%X35DOdQ&Hj874}tYAb1lXfLic9&fw z@p2)9<8MwQY$(`c(7?tMbrZ!tdU{X3I)G>YS`^W9Vn1H;8PwcGwgZ8u6u4l@#9_A$ zP0TlgNKg*_IEUzI)-f8q0KyJO9ym-Kb-Re?~pcQ zk4Nw`9Q_g!PiE3`tbbDylOGz)lB%k`M5YSjDQDqQ+OtW6_73mN{uh$WYc)$tOJ2Ud zWPmnol9gqVe~#V+r9j78dH>U^567A#d{>KvcMFg(SnaMU5~6;sPYL_-IOi#a)vVoF zEE(_z>`t)(Y+&>H#ZTDYkoXC!SM01)nv%;&J&SQCX$)zJNl9|5Nu^a0weP=3c%RHm z>3<<|gvb2ef&3#$9`iUJGq`4mc<;X^=Wvj~^h5$TeZb6e17={W;VOy^Gs3V(Si=fe z#@PMyt`a~p4npKn5M9f_EfS2eFqvLv|M(V{HbBqV`$7`tQ)Ijvw)Iod7z3E_AddCE_{N z{=Iv}af!8Ivwtv94v|o{Etcr7gim8&1U5rBjnGsO znEBTv%5CWEzfCUNY2II$oBKvgp%^1~RGtxF33u{N9#NN<--_HKl*ez)&D2O(I3pxf z@&2;AEMoq_X=BFRb^Q+7lEL9&qgNkt_(FJ*9Yqkh2!Y0TCMXakZ(f(#&IH62AcqJTx&!MW!hCK(LFf@2PyNdR#9$CQ`wEfF@4 zi%$x4=P?mioo%z_6Ap2-^~FSRJ^m}%Zgn78m_Pf7-ax3wc^j6cAQZO`BU!U#w&;8n zAAY%q2?^|YS%@5N0Dn6%gS0$74SzWCiM$upj0B#mYV3wd7mwd)en<7cl{Ynr4!NSD zLQABkfE^>wQdr3Gmk4qHSZv4VN6WJn7#_9>JVFh{SH)%h(Slfnc)R7dsh+evKFnDk z(rU|daLLQ5uP2KVnfh8Sxgy5NF~8MC z5#S?oDsr6p=0>lK)?8W0p#%OJ?INtx{q&gqIkn$w6Kx-57>RF)>V+Y`0+60(OHO8D zAF&KVQIQmv3s_4ZsI6a)qQo|t?2H4mNOSPTjoD43iVPxuIzIioFwxPQ{zt>mZRWc9 zMm~*_u#sDvLqt*Et}H7{0tYaMybXR~f=ve4R~{!9O>iB!&kE807`zD=B(wx*hmNRe z-HVQj;-?;YOC%$>EGQD9;T>hxDW9fufUpsP3UMJJuV1q;cLGWz()yc-WFR7R0L9kh z>Q@5ri;0Qk$q4qyOAe8;YcF&WCd}e^D*N%`v?5KzB0*mtr#;R?PYmwF3ujJlbj3gg zVXs%Xg0tRwDlBw;3s9$-MbAw@H5&Q$6hIshBZ5_#p76vWQyACC3jq%pC~+tY8g1z- zFSp|69b7(o!TtaYF+}?VmY<7x5AHQY04J+*3&W73Opp+8P)MpAELEB9#Q2_3Gr~Ya zbBfs#S^Joncf(x|2$f9K3#SnopLGfrloDV9=weA}>8p^kC^4m>)Dx=`(EJk{p_;YL zWK!HLhRjgsJT__B!~JDYEas zQ(lpp$(mT_vU3+nmCA!15MUndm-lPpq07!(Q$h?4tU;$V?zdq_tRr0IK{q^c1l$}j zxRY0YH3@JHI_4-)GB~HdVe_x7rsh7tju!wNe*gZx&Oxa2lzP;I<%q-%`9_=DMo4{R z5xi#btzF~sUBxHO=Q4<8C-2Ti+C-)U5CKC*9j<`k43TH!>xUOg56XN6gNwWz349LN z_hw7>i}qrfgPL24XpiI3`F*$F-%hUU=oyW@c8uElz_HV%y*pkf;4CNxIOREg0>eaV zYN}(86V^VJ0bL*iFsLozted~qVaUur5czA?DOMuByuHCt#pyix;%j+pw!B1}TbQr# z!-#zih)&^{CCXcoqk95|W5!WGs(7;6YGbPD-(G1wyI)2CnAhYESL zSi$_Y3*XV&YEvx>0yQGntSr%Hc}|ab1@XI3->B`pg<}UBtuUED#!Jj|SU{VhFF`+7 z_D3^vy4iI!Tk=7kD02HpHc-k2ptKMZ8^Sz5^vzh_a@Ru2c|GIES&K^vnj3(*7HT>L za7<#g4N-WZw%kri+6Sst=zikZ*qCjgg?Zf3jWDh6IK*leVq)Y^Bay4dQpq3S&SsPw zx6$ZA%EfESyJJ_V86Yphd*ZLT{nvB*sYB$P&ATt1_#G$9%K!6p(+%u8K)J5}uTluW zw-~@}B4`{qMqkujQ+X-$WbeA3*)DFFPdH81(2eDCO*J((9>WeIJi0)Kh-JGt*HRIP z=3ahZCS^0s&1u1<`y5Q|1=q`v^G|G(fNhQlLjo}TX+9q(8=2@lfgUnbW@7^fC#Uq; zQ+aWFJp~usSmMHRG&mJW&Qnfh3}sE-mY0v3PZsaYy{U)J_uC@T1p|%*cSDM^3~6Eq zns>mm>Qz)!RO69{E>KmmWI7V+>z8|O_BvE-;AxJuu9`ICwy_jO^AzSQ(vyrw8=Y(L zOb+jVGRdIq3U1zvWLS=64Qga`ySk7RGBCX7lFYX|JzdN|+yHmhb=V=e0*P%rK)%CL zu3Ryq+Ve_LXl(@^z0U94?&C*RQG-(E*T5jl8EcvTrqLZ1>1Z%;Q^*~moWe^`jw)A2 zEMleT3W|{*aOIB+Gekqn;=hjezZA?oW>Lg_FgedYu(oatT{fP0qvo40;k`er;&@s% zrTf-9XP6qvi_J3WeJ{|@=j_r#8O) zP?!e)!L|=?S(H=b}BveFafLgQ%$Ai1Ut@#D> zLMXt9aT-GdCZB6&X352|j_nQO=2asw^ea_Gh%%y)aisArx)`G3bbO{}>7m*^dnvZ3 zd(T#$Sux6n;(@TehKGm76Dw%K)>#=22F5K9kd8MJ~I|Fku{n({Z7%~H*_h%6s#L>GnQ6t)^*>r>SD z91@e$#_i`fA#M`Rdt&JY}$PdVaiC^ z^`wYQ9vvUqyMHGcGYx}aN&5jr;uBldi7nFp>!NEj+b{r;b4^;LR3&#Ko4UF_M2Jx< zCuC;V=v{Y;NVCx~J+C=7QXR`sp%ZEm9W>IWu(RwX^W8BOSm=d0ks&DspJ0z~c-J|F zM%;n-d31hswOwD)B2Ry_s<7-^-?NF)Ze;KD;-9>V+qD^j#h6`*29`Em{)qq=N!A4|XGhsBA$h1!K{_Sdf6GtkpskI1E|ca_{@{%u`mPQ0l;#IAJIV6Ta2(jb^!sV+O*8uu(=I*7y*9`fxUl}G0Z~hz znwc5kv&Aal&I z)$E=4{3H-=0{Gp_AXxSOrF+)u*sRE|y?e#5(BpwXB6q7A>tFTY*YY2*mC= ziQnT;G+?<-X@iWYKXAcF%-#@nB7N}Eg9oXX$?S4-a_COJ&htd;4md-q*$ugN#QHY^ zctaPSkhNFZ^unY!u;Vm?QwZxhj8_G!z{gT7?m$3x>_18%`&&o|2`BMn-p8I z$5c3NPxUtJnu8x{_tPJ7P65`RvxuB?&G4z}qbbLU#XsnF;CCT5bb!_(KxTZXU#vok zl^vA_Uk}S8Exc7t(sPct`VRLU45Oa`10lIXBdI^-+ayS&kPNy@dQ2> zj&^_+|J=j1;r@hRi3obs;JSu&YD9aAkt~vWc@i4)yV@+paIW@0(iCZRJ$-OlygTWy@D-*KCQ?YQjhd;xTC`m-aV zu7?Q-0*L$rpxcfI_d-uff6{!4<*Htj3QdU573F!vXg_=D^Q7o|Ws-lyU2Kj*!lis* z`;MJE87_urR+W_4YlRXr4V5b1V!5KD6ZLsf9K3pgO}9UBB$kv!ciWr` zjan4eNJ5=RRL|On75A5c0*p&v>Q+79r#aHsS3lvg3P~pRq5ELtC$Z`%Drzg9DjG^l zDD#Ql9YBdMz5>BkTE-WBItC17Amo>RX;B2}68f7LAt8n{=a1hvNGTF$x_s%KfoZf!3MT4E0S=^ojD{OLog(Z;G5ow&G;x@J8ao5Cw zy1wBf4+)L`g9nC-q&GvPSUAQUKDKY>0gosK$xUGF7^TP8-g$L!(fXD#IiJm7$kePV z%}zc_kFgrRyoHTT)8C11DxwVr0_)K;o#DLzLLXi)VoeIc2LJ~EBDx=liVg&FYMb1+ z9rf`Fr?l0XsI`qegmUd$bvs*ZXpGFMUY8ViP&|9~3`|d*O6BZkoACGyOUhz^Ta6cDV)mYe-)0*rR99}H6S}(AoW!Ov0TVeC{Vc*nLV^>!P|J-V{>HYXC4Ke%? z!p@GVor3>+}qUTC&c#1;~&#M2VI&ZsL5?L&-*LPT2G3 z2M~TN2Ckj$P9+EuoZDVgzK>RSH7+D+Hhg!6NF3_${9gl5K5C6U%X=%t<=vuf6hYKn~dUj=gle> zo&-q+sRYfqru6&`KBl2)ZhHF1Q0VbObVGb`vbf&oA^E+*QM^wpIo@ANPF#BZLW<+w z`+!4{}qZA_J9EtcZv(Kn2kmB28Wh5hWB+Y!UP8cT-q?c9oRBIk6D_c9EQD5j>z|7a?c*3%Pf9>>{_a1^M{CpgT-9wZicp*ZnQ+>naBY(7{*7l_@PLb#8^X$wEC^{MSrv}Ey6NDbG zmfWjYm}pZl-@X)D?&f?=Ia7n}G!;Xb>t@!^mKJ6FwHMtc$o6sn-fqyackKF7FHe)& zfyE*&%B3zSnbxdMyy&SBr+oEBA%%7Pbl9C`Tg#pD^0~am&8oLQg_b#(Dhyu)q&7En zI4Ag9d>z$Pslmawa+hwsh}vh+%(!KySyoH)XrqtQ(gpjWLtSK3oa&jSJv~|mlNB)| zsT*Q@KVFgdzEOMPqwHmuMS<-PQ*V3t#`@jjOblsk^WT;g_;;w$rFOCT*)Yf3w%v?7 z`KonsRMwLf7Xb9Cu93fjO9y6wZC!(b!Od+`-$3g$weRj-yLy4?=T7ZGxm2XCcYOyv zLZr=j^TOP6Gc{W3MjIOXBY>50UIK@$w^0rq`b&gZD=W8L%TzSl1yWyO+6wuq=q?)6 z`hKq*pruurw!&rk3Q+F*kN9(BN*#c0p6qAToSfJ4H&3AG+(Lb1SASAul3`2o5ggMg zx0wr40m7$4k=#AvPs>A~mN!Qjl96Q?%G9yr=n?l`GeRGp9>zGh*C@2^791c zo&zL4YE*r5o`FBl@KL5Y>z`W5U_1T1IoHM*<=y7!Z(e9zBxcQ(*@E8fx~^BzbT+v{ z|HZ32lG+c}1)apVem?WM*VJ5MQ)y9ZeC&z4=Y!amLx&RhAFsZuF>@A4K2rY6N6v$o z{Ay~F)fk(~`?aap0=DV-4quz)HQf~&-Fr1&HrlxO4lC6!fL&pWmz5D0CpYpq4@uU* zHb1)59U`uKPOq7%Y1hOTW7hS~06M-WVD?l$uA?`wkDI0O76;7#sNti{+v8&c1JSel zQ}*+Q_(6O0#k4~(=}$s3A*wMp9yf}h@hxk8d;R(k&iKl-;d^Jz$xZ$7b9#Crpw{5m zF=uaplH993F)KAS5@t*YY^B)OKd}Q1yT%qYmcBpW;Ev+1f0v&2zD}oiWxrR+agC=^ zr}&C&N(XHrf&Wtq)$2}dTi(Q^aIZfH$@tL;s*Mwj6O}qRZ=jqw++;`|O$*4NP0!{3xaMzDjlaRcPG!7>C~WhtZxC zcM442bpG%!EVTWzG0eJK^`s|#7{|S}^B>taxR%DNc5UB^WSC-z;=0e6uN+6dr$OEO z%jB+IiCfRTmJq%>G5*{OfR0|m{(H05|=tNJ4^U{&Kqk5)6&rqbv4YVka!#GQ?>Wd3JD}8CK_?- ze==>)G7ks|Q9Yu${I_px?9)8!I3XZ;A!*%Q$Yt2{=@6J>EPWhL+z-s%{7czS#vq`^ zX%HVH1>dIG3rM5rpB&umLA00T^7-@H4pi*9yAQH_28==P>ur26QuaI6Oc=Rz+2JT0 zS@I>JqDqjg<}9s|lE^aa%63`JtcfZ`o*LRGm(h91On!o-vwp1&ZAn%3g8}PbivvEF zErf7t+i^92F!H!?GEu= z_|nQlN%r8&^FDoD4aWj89o{|P*O17=`2ll1j8m~IXC#jv0&s$KiI0$)@;k7v69JbDM1atJ{|G%sdS`+ zEosl=FOlfW^Gper|M`=tC!xIG`7mRbLUusPoum{xY>daT(&EjSAj#Yh#e|vdM#0eO zdEO?^(UU)8KPSi|D(Ej~>eEjK@f<=08iy^n#-5~rsdi@OarFx*P&$GLN z;xYicadgEQqcAe`Dq+r`PuH^1BeW`i|2D4VZZSQ4U{Brl%Bs}?USZ8Ke?+YV(r#Ae ze1dBs@~gcJ7D^y8pTU3Zm{h(K0(uUP$Mc4(56X^ZGY}&*RHg>3BM>! z6f;WLeVXcFbdKL;*TsCn)~p-s{&RcHN2;0vyma)LC72UMe8$=gB8G7EgW?sPPFUe<923@wl!DZ+$r#5-#=K&Jxa-GgZ>0K5X%wMa02H%N2BmH>b z)tf7~9jl`PJ*A|Cm2XOrp5=>-W@q^o`cXN}$$^)vj`XJPb$>aNl>E6p&{ZA-4Ss7n zIuiK!y@IHOAbCWMIfj zt4W!j(kp5EWzuELv&6>)9pNpAYEeVgejC_;1`_?HFHHyIB0s2+6KrgsF0UvmgEgSL z=x80C*>?CqoJ|mWw)@tQ}n^MS5f98Vj6F z988~^yNj`@rtgG^d!)tsJv*u- zH9B~Mk#Y5j(>C%djAFp;w4*adMc-n$_*j_^&V*io zF8<7Bh)H5hvCTR;bZqEr>q1*a` zM4Hk|NoFE^m0U@fNk}L-!?;CI?W>14lQ!PH?Cfm*?+ajz2~{iuXJu7m<13J214BcK zBUYAVhtgNAi-zrg`&}xxW{tlZ6dqpFo?(2Nm9_4M8zTs34{VGOvD7!C1FS{tjq!i2 zr;m;t)Y|>0W-VL)w`$&l2VtneF(L)=$qY&w+8j^5Hs%Ro)^93$9{)N0d32>uso`SbKZz;Bpj0yup zHGaip2Cuy{bXiSiw*1#{8vtk+zmik{MZ+TXrfwqIsWMtV9(&MbqW|XX+`j#c^IwY+ z{cA+{KH5*ySCSQ)1&+iL)TFG2SF9Wy_aNC%s)LF%CGF)D8*vsY$itF54@<0I^*aJmT{JW zsxqvP@>J?DOs3ub-`4&;MXMd(BduFkElwSO>+CRD|C2?YVp4;{K2zrAlPu%b>zySt zHDhks**2t1LAK&{(AQ*XTb(|jejwzvjDBH0x*M@ADj|}y=>o^=x_n%dCVmf@dZjlC z-@!@C#2jR*tdn!##Vt!)Ie*Q5ok)`X>IYX=+WDdrgiYVs2)n_-T(z#xDR-^;_-*4; zzY6MFkIom$1Zprd@fBs)*j~_+EEAikib=Ohy?5KmKqB2njLqeO$IaLq)vuOyDJ)V!TmX?BnAt6K1acN2#V|cpl`Ufd6Nk9rug5EJUCDJ>JnGzU{}695CZonA*;&S@VPkBmOjD2Ty{<^ zr%;|*_iL5%vVHTx{Wcrir%INKF4_rHL~b%D9lvts^l5MOU(bVsTaK-}98geD_;4%i zQ^xn1fX&w0c=DSRr!&$FWjO>!egyaEZalq~^^HeX;D6r1x~(H64Jx)AuM+A*Y`$DT zi()u*zdW$(;+yt1X>*T=tvN51o3;At3htF&RXux^@!Q!vZ3X8vla7~T%``zOO5?`< zrDBJx{O=Flzojh0@Z|5g+lKL00_WZRX>`vrgx)aGzwF;%AWOofRQ|`ru<{j`nYHoY z-p8Te*;w@#xkqxS-+HDWJ2VpKE;&!n)qczWp;X1Kn4CZ2oQYlK;v{eAy)DuNBi{y- zH{@jxOdGY`U9T6CxAb{4H&4gZF!y4pe1Otrm)zx&SQRo4Ci!={fqjjnsgk9?=#J3U zcjpu*_cZ>fsv1P(0rCuvfW3ho-JR7ZlL(-WX(_Av0P)wQ<1ffydU!tsK`XjP;poH{J2p>Y`UQx>Ecfd3h^ba1DZ2W3fwYh4nF`LsE4 z+MW%D?LT!U`fq6mSr%OGVCA(s9$9w4M^Dgt=}TYmxjQ_3SQ(s!4+H_*uio%cEMX@$ zRja58t{s+&ygdtGZYUt_#jZo7trdq$m@dX$?)aYehxv!@t{d@m(H+8R7DhYoyQXkhShZ_(E&_In8xTik32IyJu>D{hxk|TufF+5XlomCMs+p%Vinm z#W%#as*oTJ^xto)Hn9lQI4?YN1aZmRP$^nPpGd^{VtT0N8?}!&lrtYscomhH(WJKhaBN-*5Opjx?t2s4g(F zY0TT>55GaQrY*h%I*$YX;GyzZz=Fh}3ph&PX^IV=J755JA&m_kHI0;wqv%G~3S*A{ zho@>uEd2bhKt?FC!Vj}%4^10V1bR-WSMBl?BU&%yZ@|MEsekY$2XzAkO~lHukdU?$ zMZq7Q%E#)X33a`2SnB@VdUew!yPG28x-}qtwECv!&H$E#i^>02H2btkQLIC!I9va+ zYj@S}A@A7hO;**{;0AaHI6p8fY+bVD#f@0tK@Y!v{kkLK1g2S&BFc(iCC5t*y0Umf z>gqjzm@RXtei?k>(p6nu?a=2*lkK_l=Ce+24r5cMzSu`17uveE9W?9`5()piarXF+ zlbIKFA|KXqUsG~~Zf6+95Mq{5{A+0`DZ)Zv3ZdrAY;7>RiknDi#50eVsAnY-)6VrRa2%b<~7Rf4em1-v9t8=q;A}jOIkb?^^0|^&os>5;d4Ouo?zAGGRT@xaJGw^#zL_NZF%KF%14VpH88B6+oQ+4(F9 z+_e)uMG=^!TPk~QlMkxfzx-YI$k~_rSe)x&=Ob124$t>Tw+josjSC)4cUC&QUw3?n z)+gwYXyYwv-kJhY+8Za_P~9pC3@_s^mA5#0i?_hTC=suJ=~(Yl1BG*L-j{2(@AD3E z@BgFyIpRthMK{)@6B~qH`N$6m2|!Qtqb~B~Mk4IDP%#C;@!gD%!aL*>4gA~eH8u4NZxS1u59n!-Jz_2~R2Ymgl>jEJ+cicMe2$62QI+N?$kN{i zRm-Hxm(>{0a){F3us0gw_)w6tSlm-a87uz-k_6~5XyE*bS7rb#i~vD8k9B3Ax7MkMI#la|UuFa<-n9|cU1mQKK=2&;M^I2A{&wGdpUBa* zU2UN^95MrFWR^_iOrJ|TFezBkeV)l4wjc2=810o?c%uE_0T1+%L%4Vg$>gxiNa1E; z*p_y$CHq3=yF4$&T=dT8*omTk^G~uQky?J@tW;P+_g>X0sONbS89t#N^kR@I?2NyC zL%;Cd*V_F`j$wdiX?EE2W%#aM(K}2VCs{I5^$$MZvMu1aDyik`Bjmb0N!$DR$mE)% zK9iB&1v~{vF<&tIP;&E%76|ToXdIA}QGLfX_mR zi`B1iEXaj$G(=9ZU-ua9|_N3c|$|m<077>&P`1Fd-#E3=5Nnw@rTyJ+Q!1623=cBNg-whmR00&B&|1)Inc<U2oKWGd~ExRynUAQ=hdt>AuxfQ zb9P}NRxv>dhe`uPoHqtUzZ4u4PFC`JQ_Cs;c}<0uflGXT>1KhUc8A65<8U^^;*HQF z$R$ty`zA3lA0FinIw|{;Fc`B}k7P~orTCNoKc3z)pvv|6{>DT>r9nhMQfcW1ML?vb zyF}<#5|D1`?yhI<^Zoyx7w6594Z6Aaboe_*dQ@{UNsC%~ zg9000%c$eIOB84gw`UrVAsocq0LYaecLqD3Og6p12Mc}!sM6qf8v~Bh0nic9E(rXP zG3~67a7&6$2_N_L28Q0n$-7IJbc~@4cGPDsV{v47cSB=tzp1I2rF}Y0sIXuL6)?o0 zU`hvx4}?7ns0ym&=@R?y3DqDJUUi~wtC;HQ>P6m^)Hj_Bdh0Toex12IyLHtu_l0yj zDhP>)Si!IXV?6f_`A=ijaE>1Q8HDvMWh-NFS-?5Z6t1>p*tLDAvY`na^u(R$xIR5LyQKGL&*a`0^G0#uF4*nuV)OH)l$qzLbMSM)LaR z_5ZS3U}<0iqht2=#K*=b=>fl$^3?jW73sS5A&v{?RM}^_1IOc|ql*5Eo5Ka9aN@hp z9}WBkPb0z}G9NDsnwgnF>s4H^u!5%^E9Cc&tz+c_r=;h)-b4Nh?0 z=+ey3*VMkWL8i2S@i)*La-BGw#)R`_6?v~vmj5?KVV84W7Zqjf ziO%+RCTdEW@|U-ccHyozVevrmUQ)_#J{fH^FH58T4HR=bE~?>A``|vHKOY$<;Bj zQc5qGA1vN(xOn^g|0=u}E0l(73tU5AL&&+Z90Rb$(|+9G&vh=W=j8WTH}$Bk3y)TB z2Ei=xu0%_}iloxZ!EaU$>JQ|?Fj3Jdpu$@IXVNso@u0*eKRGC&KEkEc+f7jnx}LE( z=9E%?IBx%pdH-O3wv!yPXs+^zJT+x#-47Kja;&>Tjc8zSAbv%Y|DCoEmj(`uPqH<( z#YKeb5=Slz3C6D(+3(HFBvCSoD%EaVt;vY&(vaBSUMoKfjOnj7Mk?S8~SbVG^oV?oet50ucoFC%8QxfA`KJO!}}VxfOYp~#rVU4wzlAv zNxs!mls^P8ZA9IqEM9Zv!8UVXq9#mhUT;t8y>EQe_KD$Buy4_xb3^53`#9q zNKyq_YI7GI*feWU>pJ%0E23>$4z;TAH+yI)k5#G^T{$iYxswdF?prn{xL_biwo041 z+b}s!1t%5E`tDY0L)WXZ-ISklH(hJCm^iqz4C@9<@lhA@>VhReF zpybVGsnR3@A8Rt$Qz5b22-hDtxHZyBa%2!pF{~8bp0Mkk{r68uQt}=omDS7&&KGB3 zsh}|25U{GK4Mr)D1~JXk^bk&$Lrl|<8E{!ikNH_t^bc+_B)gs0z01Cc1TDavfvkjv z!oyTal>a)E_C7D(PKc)9V^=Fh0I`qSJt4b;(1ZX!t9LW0-ePQ=J-X*FFSa zQNTFG^Z!Pnf6OZ$NA(n?>1z0kKdp{`wz&(lNB4E9xT(RUxJmw1V(t`)-37E@)J$ty z$|$13xaRK!p^CB^7Ll$NBe7zY`?E8zv1>tlD1=dXrjWd!6w?dU*Ix5O!A9$Dc~%kr z98z!%!=)blb17rLuli!{)SNn2uPS1Q<35rn5kpSb4 zi^qUNcj1fo8L=@O1m}N$E>|XnHZ@+ntl`fsRT>{AfP{7vG$Wu6XF^Mb0w|Qy@MPy# zd%zA=@|8T;+nWP3CUn)lurKvpsf7m;TA8TxP?vXlFXx73;WkE)H>$v`UV3z(vL9M^$whmHawVEoXy2Qatb*n#H_<_lZ89o#ilvuH_ITTisMHg)^`i$R9c$QxnA zM|)>t{Cn-AN5$ERwf7aLcWuGJ+=`Z#D??eE!TjD@)}60cd)PPXc*PS!4ri}+Jn?gD z8>{yECIUODi*FZdQe*uyH1^i46f?QDea5Q!aG>FqzMro$>e*knKEkNzHf6W1=k_}` z?t&wo%juaaP6F{iO3rCp9OG1cWl>~~d3UFL&#vps$}viWd>YExXq}f6ezav-+YlA?gBNCQlIi4ABtvRB zM=8n0+^;T(nPdE1oP>#tj%r9pcaKWB%C!CRcFr?`VYvRUi1nE`0UwKBXcE&wh8?;Y zeGpaG=0eusq1)L=Uq=%fkvz?`G@6ceCEHHu8>NpDr*ohB3X5mpfv2wi&TS1z z7@=3MV2+U{lYB-luW4q(hqlnB{S0>(DA_l*0ZQ=Bqxdc9@t!&5mrZK3U~Q7+ZlYIe zx<-^n8Y$=`9MozSUY>$hpd-TEyhvBe>9_Y-F*+V!+ z0M`~WzkVI&g^giuG?az}O5#`^n5ig<42FEOTkUio-3!@s5?<%!gEFTPD88g3%c87b zbVsIxfT(Iw3tATtzEK^N-wb~(-BsG+IqW6j~;KQBY*t- zZBPBqSr&2ZNXPwE=F9spPs&8kt-Y($eM;bdem%81{k?YA>|doIqms(DRs8hFO$LjX zujdNnvX)Nh9@*Xs_w0bbdgdLW<{Sr*< z@j=2;;3_Y4*)tj|v*-k%0g0L51!x?|w-+X#jZ)S!!6ot=s{ot_sPyR&@rMReWq7jh zkrPf4Vd?yLqq?b%CjSkl!`s9?9+!MX9ni0teRXq52~jHUf}5ZXsUwuun-xVmYI8`kc+9`tMN{GEH*(RI1;ZPD5OJ*yzUD!J>L>3RK#-Iu|q6l}d7tXcd6RYQ5c zhh6MTT*PYFDNj(y>qr#WxV^3}IAO58^l2jExuKtr_Ip*5q$npu1=|=iDG2VV+I#E% zb1r((`K6cD6yaMvpR}AEughME^?JMMf7Tllmis%UR*{~3!Tc;&I>yxLAqD&e_YWHedU9Kb*TTEpxxZ{uB6ZpL&Sr_QN?aF){T%hOXEy~if5zs;=#M(lh4Jo;mLB#h z&^AuDczid%6mupb=RJTnsyNo|dKp7t-CUsk6YsmO}o*G-cQ3QxL?C)gh6U8~xR zRvLlSDX0(zFb^*=k*^mr9-{=s5GI@dW@dhY!#-tg^Ig!i*Hsc=y%BOWxEUQLiSI)a z86oDu)r`PVG@V}40dqE*Nn2V}^fpAPehm#N4QuuzsRXbDBIKxttVV(P)oFN;zlHC{ z58`Nywr8afmbRwd?))2&tQsNm4Pm%~{OW-j+~0WiXS+XJrJIGQE!ogx#+&0bsTKT{xu>#{x^8TN2APJ zI%2~EzrIP*Q2ou85f-cv0mXH?z!;PXa)Nbp3 z>)8Izz2iR|RaYFW|MQKl`U<7a9~Hkfuf&xQHf7x95hhS4lz@;^cg{z5lP#mcXBW9l zPS{0U?woNFVN^bnFuz~Jx})jdsI02Texv- z$yMP*tx~8Zf6ZpS?(46E5lNPuopJgmG5Y4=hCs5*2VKiU*Ix&mo?wDur>uS?;KMZW zt5i98*<6EvyR47hi@j>|<#EK*!zqsBMqK#6LeWWSD5yauFA?|93YGPCNtv;$atM#H z1f?;-ZsS;IygmkzKEBL`?AB50{VoH&q3*SwPlm>_H%we?7tcLY$IjAdY@d<^^g2!x zj6;*Z;xqDK#@w*0|0!>g&ITSzquj2u@%a6^INX%AeD-I+DxauwKnM)A*yGn=0*A~+ zfNZ)1X5|n=tR~O_F!At2;7Z;XH%CRLioLxd!1#jE`nSP!fJVRjl~qSroY^8;ZeA||E{GH?g*9gsK+{OKIPZcEIDrRV6bDxT|iy97a95^2D^ z`f=pJPg5mhS5J>m-`B(6hj7@CMH%}jHDt|pHo78D)dDy)p z!^*=_)ig)uPDMpk2-$9Uc;a}S@~7wzNe#dd21Ed0f=H?MFcb0%F83fH(@7 z&3G-w4A7+zF@}XD93~BOvu`=gK4km?91a|2UhuG>LX$Dz;FK+#DvJciA)k$Cjr*4J zGj9>S7LiOq0SEeo{P1K}IK&Q-GY_gJ1P21c?5a(&L0cK`n2rs9_Zn9` zjJx*!1&W*2%E$TuM;1bo=o{rYaaY3^?^BSYjE!A3)5Fw%dDy@4zYc@VEf|%mcvYAS zEaB`}XzXM#0iAo-u&%}MaJ)g)%0HpiaM5mAnq{eRpdu#rm7WsWt(MaIWEKNGvfyYI zHQxAv$fNJ(4rYwTb~N#q_lRUq@qmZ27z^_Z9jkW zrt7<>r>5qp%F?$pixzC(>@+$orLC-)wQW2041Tp^;Q7c9qX++tmoVBpu{A6e(a#Zj zh9XbF%wR6LJlY>^qB+S9 z4yWzf5CgK%6!Dz~hz)@E0Y-$MWS<#8RNIxNOkPdF3KT0)qCbHpZWr(Zf)qt zq@_XY<_FI+Gqj?bPMK}HIEKVZ;5;^*Z}VV%Y8_De>Om$ z5ichAsrF!eia?mwsw6_XDu0%s>78K;qSoS!XOVZ(^Rb6qS=RQHM;uU~@92&?a%Xst zT$)?Sz#m^5t5n;)Z0B$<%=~V>1Ws~K9_+@>kET8Lt{F0&Xx?Y=Ztd*lGOBG^X`amL z{1i1uJ$8<)pYq#4c{R?%obwtT1{k+~mC@PkACwwHfJ4(M?@g*#4%&YajX${+gb5w} z6scftep;Mj6o8GACH6ihiAKJvV$c2vUo5=}Z$yz64`MxBk0Kifm+v*o?}~Ls40GG6 zp{P8R*#60!QJX{M;l8ml{hLIdV&hUc`Q97d1wZTV!Yqa6FJ9Bxh11u6^)>qDYn4fE z&WmenSBt7UdvT`UK$1dY-8W{U?kjWekkXk;eP6G^>aA1vn+WQqW-s_L1+LddIMecy zU{lyu`=?;b*mo}HoEpC1N)Ybe*}JIOXQW8u^AZ>cveYJqN_Z!#IR0=hNJ5Xvrz-Jwj82JPu zJZ3`VVMx`3OvRA@5axU>-j6kJFd9HA3oEKCJ1q z5+<9afK0`pVuEKTkMqOzLGZx;2Jsc~mcbeTT`0z?Hv1`n446A=9*>-EUeOol=aAu@ zhdIh)F6;N82(MO2U`T;z%3ZJd=P|G9!$P>hk`A+|MN8}!J1jSI>t(|Y%TDCzJv=rZ z4y2m+2V>Dxo;$5cbr(XrO&Vg7GaxY7TvIodct?7{K#Ue8;K9v-f$`v;!N0<^X;En~ zFQIygworTQ(Cy>P20hz1ZjzC)ug0g#bz<%g=hMfIi6LSGfeY&D`2(X(kDSIch`0M< z*}4_OLF2pk@LiE`=0f4I>>c=IigiZ}n`V+@qk&t?2s!}tQ?SgdIAQ%#J+Td*keHQJ zp)LPc?A!h9N#;*aAIXibz-^o7X?Eyz;OY6E6d;o3Z^TS^a_-9FJ>4s;QD9?p6mC|Y3O(+s%W0XP}->sLm?nCJfTTi75^ z$ZB-2r)SXEbOi@q3%eoWVDUN5qet0_UiucGslv^L0i_#+AUFv-M*+|SjO_*hnZAP( zC*oirx#IkuPkP-fcG!Djro*ALpgE?e(FSoo)G@xnR_0aGuQALfaucGLf5`rb-QQD< zOh;#u&+=vHJ?eKTH(dZ>du8W9SI$o2x`5Gz?bp36j8^bf9VRLk^RVj7+MwXlvJa=R zE~li^PgI3#J~2KlAYdOYd$1^a&Z6!`zLldt?yUuK`STN7D)FfJyL8fao0APZniw2Z z_q?nBdp7>iu2hQ9b7MDt;C(}BgeRvyQ!a}VyvTCUqZKSw<(7i%3j z>Un;S$o`i`TG#@cZ$JknP4!Rd%L^E?i?g7rjV1I?4}VyhoUnIfih7+d%WTp@_}hEC zJFwZ@RZFl|pR~DiD$wd_`BEMOCrU*`X!p|9#Nu4vDG~9(6Gf5XyuWksVA$^!EtEFY zoy$HVc9_>ft4|7^iJO8iQN#n;)O@Oj5VmIlNj3)_i~umMghodruy{x+B4br37;5jL zq3HpG7i42ro%e_5zNHPo@_8dAWeDXAbTzXpS<^&@iZ+`Q2+%+TY^3oTSW_^d35RwC z%)KrUmIh6y&mm^D8}#`K&kG)K2%Fi8IK%#r4#>xxz**yRwo#stSlaJZuJyErO#(}& zBQTgteZ^Bti2!-{NwkSmQ&jwf(vAM@X2ckBoRy=0U+PF@LovLl*^KSj*M5K-;Ipps zC*fK^aH>L9M+{xu`JU=wz1BrWd1ewJ2wjy$1{>S`pK}sjjb$kgt5|T969;n}nqkOuI^c{=ci{`?F9wRTsWU&0!p0 z>E2;nqU;CPbo6P{%R?9n9_(6JC$Eo%LJkT|YQfnWjZ=@+PqG`yK@A0cVEJ_YCr8*n z6Jw#2YIg8o_Z6oTV-s(jFX7RQcv3~za^h6tB`ccUtW%(e6Xh0i@8t#X4rK%-ybM)* zV%(Xo@?ctu9Kvpa=cfcLcz17cskXn{GVNG?ARYK_?Rz=RX|X4_jFG3GL--36qNSrh z9T}}nELp|8Z6D>?FO%!P`hO1zsnt65Qfm1`{SfNa;pBHMS$`B5MWT+qE~f>ZmZ$n} zdl_HsUFG@%rX8B%4~2!yI8UYjy3u{f22;^Pz{bEZ{SM$Ly1I#uIM?2`_x2iZP1UNX zs31Flprn|B$v8O1e*t}H1lYxUOTBH7!Wo{-W(8XnSorU`xw%0U=LbA!L=b-hTPskp z?t|$cAz!(ksjK4wc>y6?VPJ$%$B_Y&30WouA?UfS`m3RFp*F?BGgrO@rWVuSBjc-Y~ISul)Y(K#d!SBcjBl} zVBLS8()?K9^bG%svre;gNpj;~>)2i&3L?CoRkhAsY;dv>VxtI3qBqyxH59YoDVYs= zs>spnWYsibde1^Ds6L1Fx0euoYY*N&QT}a&;j}2!Zl#R%2 z?@we6kH`o0M*%B;8{=b8PybYk%!!Cm84}oTJCZMv_g8{9M@Wh6WKbnb!6!_`7qW4A zkGoeE4Vy3pU&F`Wq_npb?2sdNbRUw2|5e~8iMWFCd`WtJ`S;PlBdb1_r;Gvj3DUr4 z{?gn?;6&tr&VUv((%?bGcx-66rm(5W_h4C+tGcNWrJx#BdF|-O5BemPt_eI^Xq%{G za2U({@)BkQSJnE>k&HUu$;phTh~u?1Eum!$^gR@S&23 zxjB9P`7SzuH$lDAhMoooo~3h`PXhpC7YGdG_-j{3h7Mqj3js5GA0$09z@-XLn7E{< zz>Rv|jJv;fY@W~kNw{#B%=@CZ)9}QT&wV<4GXjR8(T0a}vpV>s^c^~DP`lsXBg%-~ zDqX$@&1_nn)zNO5;RW9X1Fi;+m1R}yVUA7w9J`E@k+0XF-CZD+_kMxV4AX;m9bR9~ z6x}vBIW+ZOuasumJI+C`SCYY{)f)#>fZT< zoE4PxqQI|uBQB1_m8I0oQ6Xrz;P>>a4s;}krvs+ueK;SqAV+a_SEAp!qD4?rH_N+vSBcO$Z zl9300GNgzQR}~r>GPH5kL`+Qu5T<^>~LpMzs&x)@v9%@v);;tI=ZKuB8 zEg0h6VjWH#&c!j8Og|qL{!@IyAE1{b>}MeB*;^&MIuG}CGyd1q zc*Q#>B!ODCu)4Vj9j{BpBY1;pHF-H!UZpEnoAKS|8(vnLdVxvBwpv%V^)7>4*D6*! z&+0qrD^&#+HLd+m4|*fGs40>;IW>nLpK-h8fkvq zYinnE_EZ&xm5l5IOiKV8+KFUhCzEa?;a;FeV&mdAL&3Q`B;_R%h!m%Ugl_`y8RG2= zhj)QU^$8R*Z*OmaByzn3g$+Dq5RTCro;1OvmWmgKqy&uoGGSsjGCq7+ zokxc}pdije%?s$lNu2w$=n zdTL=vMaPNXA5cni`%cdqB`)P`%9xctcQf>p4?10>KYtfm@itzA^4#*R;Fc)JO%Q1;)AXBD zlf3PxDpHECgQ#)z2G}+0lE_e|B%h>0O;GLoG^sK9iNUZ%_YO#O&Svk{URN2tVg-TN zJ3_pM2n5}>sYmatEe3WhbNvtzGCl$;e$MJC>hscoYUwitk|=SJqk`af_~)Q^EKQUC zohLXqtUt6%|~Fs+yQ| zz+?tcyddOwfe0Rm5u?-#@MRz+u$v8qCM0yiy2O1JTS02-&wwrZ2y4VxJWlOv$GW@} zAgZhiFdGP}yX-Bl7-IFpEV&4@FfeG7CUn=az?=`Ml^}J_2LxBwqtVL^g`3G2cCYQu zPcgN%Nc+WMa`sFp+?Gw%2nDA9qbIh>uG(PnWAzy1?ui+*=R-;hRIRO$^fwo*=7N(B z3DByV1`|l#)sZv4h)d>2gFcu|i09X~qxAW?!V<0a_--wKe7(FI0lJaBRYUiP

4w z?Kt6P5Zq~xb7C@~1FzOz*^^Bm>AkQC0}+$GjcDm0IQ;H86u ze;?mo@@z!Z>HR;$B#I5;t#fCt*trH8$|c;l<4hmLp8aZ(YxO0Xt);ywgd6UplIVn#!88L+9Yi_ z{|@#4G!pj)k~$4P4tpTSo?99eTUoC?zs-M<_}6p)hyf;0>D-q#u21H!YeL=h+2}9m zHNm}~`|o7GvN~*%Xe+({J9cmUR`9L#7b`{s8B1<|x+MfRgFe6bp9n)~fG1?)*mrV- zs&Dv>ln7Rq#3y^6`UM8w({fqB%gsxW4lApYQ&4Dzs|w>6Xr)2I-`v&;S-@Ha=hioH z_Ha%)-@u7z(@!hl1Dy9cvT!gqcDt3xYB?%J6J7`rM<8t=6f#!_D>hsRTq2uQflI9A zJbSB__Fr65Qa6U+`FkiGw+USpqi_A@z>>5 zlkRAOct`uKkGX=R-DkX;0m0~}ZhJkxr-pGr6(92~s&93b`!couCFIow%R`uxERIey znFhB(*aMokgR0MUdk1yZ=k9zOcIOM94*5oFZEs7Qq@?X0^TZY|_G`wO(bAm< zH^5cR|I&pcJj7`V0y3WgQNK!Hxm>xCAFm{B*@w|3`ktePv+V=ps3`d{CRWt zf9`eAhVBi_%3jtciMbnHD;+ia&uZWNOX)!k%g9k!T6kwfxO{smZ%5*NnK@}8j-9w$ z2ebyXc<43|xPqrwlV1WY?sU~iNH?p4~ysP<-ha@ETJ)+BQil zl_zh3{^YJHZNAmlpAkMn5*gdwir$wPAoi4+KbfzxXy|^-?j0BdV_7Ou+nbp*?K5s3 zS94fK&aP(i4(#PnP)3O|_nur_2PHi)Jy@g-#@=+k8{iBRaMa`d6;0sUzY*|i9-roI z_MoJO&F6qEj6RpK-GWSVHuz(+SMH>Ag-QMUtM%HeQpr}qvbhTK-({I~PfUXA_+^JR zZ_Gd`12hU&_v7t0IjEdiSoB~*2cSV@4IK-3Noui(0l@GY$Y8)b^rUZbM1k-J^!%Nm zi*q|~Klx8oh)Gcp8wa%&C zx~^s+KMtUE-{BGlwr?1aM=&u{+^S2UWHia?F4&foUFLm=1P9w-+w-5Za;{%Nxb26fIq%P zWw2*b*)8Uqa<9{fW_-nS6;e(k? zqc&8*Kla`I&EAgOf(Sl;&4#nZPmH`Il8ZBWsKi+X5-7kv`8WzHaT3Hnd6>=z(ioT+ zA+7tpJOm2y@ih&FJaix1TfF%##Y>`yF|wWZ$0+Kw3i-FF2tx2EG1ul0IT|@g3_OtP zS!l1Ngt2JrkYqO2%WL$8>SAXhoX%3#avS(mk^ZB^{JAQBdK12eEMH4h{yyU@i}v)D9MB#_ zBt@@{-YRu#h#|v9`^g^F-#-;8O)_-PeB;FuzLFHR(3@0Qn;B_r-uzZuXfgisxdau& z_`~9DPQw>ws78)^&d$wq!$}G+LSH%SemgIY2RfTr2SdL> za3sU8{Xx0x)MM*5De%1yJ$5=OT67n_jj|Q=u4(UrsNjczkkECo{q18Y8r8};f@Oy5EzA116Bf&U;#i@T!$QP z;OY3czTO2*qQg)~t1x4X*?Is1gfq8rh>=n#JL!i;5>T=k#hz@`Fb)C@?q;g&$nxRa zE%Vxj3<>5tH~)+_#Y?;;j9xNiB0y)b)iXBnk--Y01;KvKfATgFL6mh*FHeRlW5 z!>0P<1UGKHk3#1R0i$PA$7kXBAQlo@6V87)AD;cPb^Oi3FYbXZ%q7!P-Zw+Mq- zXw;j#R{c58%&Z0DxBgu&>!)D>ScEsJ7DEw~7C(7r5VVF2h9x!}nO|ZUUY!%$6q<5% z#ZCT8NK+PoP~4sDaI`>AJX5~8=cSQ(m=qzLp;*szpPj2rs_si0Qu3UhEN zBTwe{883_p>$^60M*=ob_D)^w$SD=)qExBNW zZCao^PJcQC2-Yy}G6T*yP3=`FO~q4c>TpOIfz<1bwhcB@0DPlSiVmnm!0OZV9_1%aZqw7xMjR7Qf5pa2c zX5t`Bjzz>_o&qVe{pD1Ci2xv7!Xiw#Rw>~TgaER>fk88CFJBrs+wTL%1{`$93o+V& zMxlTmQsmHuKzo5~m4U2Q$g4zjv@m{H_y3 zmF%D)r>BbHC^bOy;wq$TiqU-0eZjpdaf8q7;!^3EVj?~9=nq-itT#CRGiwG)V42YKlC&%j5aSGSZZHCnQe5=TmG|EO2W&|W4`6XR88HEYkHei zi=l}_(+UjC;gbCVePfZ;v;cs{;<)Xo0spCHBBLGFVZa9~W#HNP3?6eFn6z6?(bHsS zN;PbV&;O6L8`~9ufGwUl9Ks>>#GVMFR#W1rShkyw5-s z2I(JZHxV=|ESiEvT~{NgWy)Uwa}7ZZLvVbWPgX?%yA=o#pbY;Qy6FUW1ia4L&JIDx zBd-I-1iWtAoFn1)_R*0s@E%~TatM-HhHM~6iQG<`i9_c3EPD%&&cb)^+}aibQ%YGM z6=bTc3&XLJRaI6h)on&0LzOp4y!{*pQ_+-)5$}hy?TZanIe4BFjhKo2d?dF{kF6Xd znQM}80x)iw%#>fhxkRawh-f2LToH+E-=Y41!Im-u4Nm9G;a|Ro15$ zeoD1S=sh5u&4jH;x7a7K+j2#vaJaafzx;ALw?uVaFLdfvTJ_gM<*O^qUfHaPxSv-(A(*zcK!$ z=YwNjPD`@x&(tjJAs`TNkt7NUn`-4v?Kv8W+FRHwHM($3{q3fh{uvxt_WOUNXS-Hguk;LV7noQ4Ud^n2m#*pY?@!WqFweh- z@a3CP5iV8JHVIamtncq8K%1k1)zNKjsHCLHYQ1ic3rkCpoGa|+i~;n+v!FVqXSiy9 zhsrsF(0<56LJD31NqGCUq5HbnIVDdJ5)LUlpVI$CaGlJDXnqQW?EQuo8dVb)A|~Q2vcM)10GwG}LD) z+Vcww04>fQje>Uw_9Xx|1;~R90I1K}-;t5x{KMDL-u{G(D;7c~u*L|Imf+0MwXzC< zxDsp_a^0eslm%zw_FO6^G}dG^nLqn`&OiFzL@bN4Uaz$XmjfJ#vp?l1&~8#MS}$8- z$3S{Kir3h7f!ff+>q`inzqx!LtDEK!ok{BS})u|)c*48LM z0YP*SkGS2R#?8PHWLEgDkR=*(#g`o8|*D#H(c9w$ej3rBT!BcBi>W?LV4L))E ziTM{{{t%}Q)=RyKLqX>+Nh~YYMHf^LBb?tV-a_frIVr0miZBaQz10#@J3|s3uAY|E zpI2f2xje@eJ5MeP7Ijkr(c}AfN{ILirDDS3l>@xfiwY+?rbE{?}f#zxx z*NGpx_nv9SDwl6FGBQ$=lY9U9Bg?|V@{EyDlpbGSPfrMLKnO$UDV5N}pY!u;?s>h3 z4Y5dn0=;f2zG6WE9GSY7mccKcq~t0@i>H%QQKhS4)xez&Uk5n4_MV=Mii(H8EN(a@9jHqp0-qhal`8Mw~2OkFzxc*~f)yjBKadTJ78HvCI8MfLFik>em zErDr592STAl*Yi-47;*R;9edpRUXYiOZPH<54|@zw%;Q9GBUlUB4?jIowW`ds`3HU!l?1n z-4e@5HHj?+L3rliLpujd1XEMEcIN*5Gv#BVp!f*i>Kp70GGoe8$X0c$tX59OQ%{;f zf1;dyN4(2r{nk;VUV5w2cUsG#=coV)g7*mvnDPA^ZX?ZKZs=GnHut5`0&Nu{>sd5}8nE<(RfVvD;Q#$QndQSY#$b^SW&3fP3Gc%60OWW^cd7zKk z1NV3K#>!OxgB|^UL5U!bL`xK&yU~5%y*oNTgxzOlO8G6X_*T;x4|8dbTOLk!$pkrv zR^XzFEShddr2!r-ct&E4MD)U3(dS^fTa*a9)+-tgQJn#AeB!g``p(+7Pq4u)k$!ryFC5-t1{}z&qW2{sK&GUa%>m3k&9c-U=anpj}h2B5GfTZ zN%5t~w$|3qP(UJCdH5e}INRht;cj;onaaQ~d14?ru7+;J|3Gqcy|uR4oI}GmpXG+Z zRi3cX!Mjv$Mtb^raI3;X;819={QXVqu86@z4LC+5#%b7jmQ`m%c=G7#9CgRx`5d@1 zNmo4B@fMHF-q@>=ROh!TSH5&(d*(-WdF0dnKfcp1@T5R-lEaSHKR6f#g*FTPwKO!h zn7)E%iLFtZ5FQ|O0>(f2nh4OC=-&qWUFhRr1d(e?kAsa(duJ1bW2E+gH8!9IWnr0t za})R9?CeW0tUP2lRq(m>&ZVKyT@bAPLSSqmDs}#r4^TiI5UCXfVq#-e$kxaqc>pmh z>(hM`Jv}|z$)*J?KVfGV7iR037vQH-B6F?H-eF>7Gy)n8kbetREx2GMB00w`^em$WoQ0&n4QY`~`lFqI)(Kr{I-0eoeAIWY^9%cuc-0= zt-Wgn6G(>B-Va&xrI(Da(~B4M=n>0lFD(M6*SSV1OY>8*?z7@=2g=>mG(FSC?(QHk z+cAS1NBVOH%Tl=n-dCrx$Q>ass|*K+*VHB?s$_;>n>yLBzgeFgoQvyVGyAb27A*>C z24T9Pq_X@M6`?*##W#nNy;8BE541W`rZ4;3-xEoIdJ4eybm(6f-n7%|4Ek9QB?Sm+ zZMsQ4d!LZ}Ag$s_3_PqwURRz_)RSfhIc|(G8~(-x7*|WqTEWjXQIUp>q?}v8Uo!kr zpJo&`4sP9U{gy)6GR@#TS@lLS`uQQ_CNUW)g!h0TEgKtG(;7{Yt>DO}fCt1p*07WP zaD#4in+~TAKH+NN2pr)fd1Hc583wuFKLE@B;mrYYWc{}hOL z$SY(7PAH+&K+Yv#lD??iIRYN^e~)xVJUY}Dj|DvwVXZg>c42qd>Csj%K&eK5>fQhy zxWFbNjfWEZF3dz`;4|3_Z+4z~x$W7Z#WT)J2%M+?-?sr60hpZv;Zuzk5(4I0@Lj^K z(gpmYN_baZX--3k6C%mmu&GoJxT5jwW^7m!*FT_qc<}--Xz&Bu8fJHx9;%YSM-t%w z+yFgGN6A1I2rewNz;2n*B13dIVBCIi(9_dD1TGsqn6DT(sJHiS;4PK|!?M`5M8{H_ z>2Vk7R{JU{JX^pj>)h4X70y(~#j2106AUi(QCOb_y7*HTmfh4ba8e+9x+LS-{PxM0 zFAl=cde!5^oXg4yirrlGOm>}LD+!9#X*8Vf_2u$mNsCLjpadr|9l{_e5b)GH16D+s z1cQlKD#TE2A$DS5Z`o4uBxL3EC^=7oar)$823<)tvWr%)xX+4YuXC2~DN1(s=ZTVr!0*3^Epv@yH zPwug41NRUy7Xk6oJalbzbQJV2t3U7!Z&!XTgIjXF0>4+=IPH#j_T;ylzq-VPQ90?5 zGb^OPBYg>6;RNJ}E4*v4Unpax(l(Oay;K5iz$TE-*G8)wOT?jNaxw`PH6m1fo*FeL zFxEVnlrlPtQURlfQhXr4uQ27W&YsB2ymj~oevCeh;&gyk9{9cgr8A}4k#y!-tKVBK z^58I364$i3mo*;ll_mo*TN+x2_K?v zfVH;r<=D2>^oO)?O9OQAZz^4Z!tU(M@545dNZoo5#{jmVHyVcNDM*y=l3OoA>!R!! z5p`f4kc7JOr}SyH|2PFfl<>}20^!a^B+BiQA}ias&+ki_iwaC%x`hCIq<(GCR8*A; z)6S9e)~%?33I2PK7>0)L^<2y(Ft@|o%{EF;#kl7& z?Bj({0L8|&wA#k>W7oJ zhQkR?-SjO^j}1r#@1dppPjdcqu{x9LR_j#?mFTT0zBySt`NV>Ymp5XTKQZAJ)hNgH zYv)ey%#03po4bCv+^xlsQ^_^xOn)da?tv;|Qk5LThML@*CM^1iQ;bN9K^@y*I{BGM z$8mtqbphh>Xy`rTHA4qJ&g0_mEyao9liV4~t>uX|(8Ve$@V+&khKY%ZsJ)Yvi#)d* zG*RK-umiI_rLhyMJK(=|2I4?`&2ZRoJD-;u6j* z+#9*_eQzNEJtV!zH_#c;cTF0P4~KPc;c;C;^U5E#O-cjUNFgU#oG zi*{gRMH6hS=zLl(_BN-$)8(cq`-3-2%prmyDIdIC6|ZBNFxLKjH;~{py&Up}HQ8KH z4C15u(TOkcT_5H|65aRoNS77&Z$sg`;ktbkP>aQ0?0Yx{f?7jYvWyO18R=eN=%B3An9kY`L)RCM}W~B z&>L`MH@z~p|NF_$?=IAP#&Ecej4MyYT5ST>>!;n4G#tc(Iz&=#vCSvev|F}_$cv!sn(k6s8v#2!{dQ)MTkqy0a=gGbm!sy2Ly zAXa>$TnG=BSFkwP%6`s{J!@(R&K@dYk`qpheb^wnGT2*u6|#Ss4W_w5Sd0iiz-1}P zDOAipqSYDVmiL$Rx$xq}0cIW~aD4q&hny%-b~Eg4(#p#jp!Wv_t8fNaOV!H<$#)tN zy#4-Tno^1qMMD2B1At>7&Owu;apKT|{Xm<07-g%7MW__}tRjLBOUF-=MV8Kj%`ma6 zdB0mg$QQra5hYAKSbqK*^?}_>N>fh}G_$5*HR0j;T1q1}NrS$RzIeAPK5y!+s#tv- z(YlqiE>aS3l8~7AxntEi6ri++ThlV|OTO>zhG$@8gpB6%U{;TRJ^=+bY##yCl459R z=r8z+n8BSV;J`o#RnkvOC9}O^hd)cM!KboI@6& zxxv{##p(mPo!pIVDM-(QifS9c_iX+J&hXI`eEk1W z_1=M8_u==j211c7LMRC-TV`aXWMm~Hl#D{8Y(7y}U{RUZia=-A<-GMC_glpS>WfDClhgnesWz;56=4(IS%?Zvqs+{4w;YRs3#!P@b1a=x%~YXa+a9D` zy|uZdAniJlxKQ+x5*Y)8Q#oD&yRxJ7^z`s-*NZ!DgLdt;OzC{1j4{74U3Jg@q)=nHRdqn=iN`y%9D!aFzE|2mEU)C?{x4U7dk`VA1 z2MR_=1}J>hjJrC_HrDYDU4ccZt3xtZq_7oPlle{)GW!^ZoMTK1QQD{EVx%N)AO zMc>-n{#0k15Y#@iONDMis+ae^xNvfFN5EP8QwK;yd4xHT@L^{Q5#RK()XPqfUKA87 zIN>H*z9-B#2xK28vU;wcH~;Ux5a#nmD3)@wI6SnFYa zK3-UxkD+w2+n&ZWa@_*t#rpbu)3-dMVSm&M^Z0Mc$g8%dIYmX*5E0y0w?7~*9sw7h z@bG!3fO<|cjKRQcqU9h}y`&fhmP-G9KNC!6W1xx{=M{Jg?T+Vhn(7uO?xo$)yfS{G zI|$_T>9U#nEvgo>e*jO|u1(@FdMCINK>siyKmcw~CIoknBB-^;#fvugy-B!DP{#{ z>~FweWT19a-sq*?b;avKbGoO_!&l*Y`GsJcx)Cg9T;%n+3(BjP@ zuT9+J157-D^Q(?Uxt6FhM|(eeXa+9JC7(vBxz?I9DZUdDH(JW*+edepUR%_8d1bMR zoRf%Yxrfh+g+$1=gL{h<|82*yf~V1)677A32t7w%liJeLei*TtkqW*(2@Z=9b69NO zD}1+99SviMNd(;F;F2F|w$J;Z=CuI|mQa-LsH~!ri#>+y$T>4kc=zJ7h{EkDxI3#H z@rbUyK5J8|j-A!jgu3(6b<@JP2?D$QJb94t!{M_$K>oVmC5skJi@E6V0NSx$&h1H$?o~9ZDiYz4Sxy zAtk}!q|XPpfB*Z?o-yDH4=qKGsAzRh@3Y3E8T*FE)IFIWkF zlVgTY4`*NHI)9RvalrCOLPDT;xOB<))?|x^=L8ri3AID@$HJkDrfiT(doBIC{mtNC z14OaJJDQj{p148Cc$EKiGNUVtlyo#puwIO~I?}XW8dgStwHz@dtoR{+Vf6xNv+U{EJ#oudP--J#+?OSn;{;qJo0USau$VJ;a#+3ZgQ)mw&Zzh|P=*?P-R| zd%CEzZ^IW|gW>&0m`1`ZRob=>v01o(e?sa+my32ymzadFFcDF%;4XG z;7Yr?x@|{z*cAZEU{^r3+Tzc%T3S~j z7-!@TM)C+sxt%ThmL6R_WX&u*olL*;@JMIUG-zlfL_ue>88rV%D6c!T&c$WccWzD`a62w?P5W^i9sGjRz;~tN>%6UE<2lTzZ*M6B5e;s zs!)aNTYGeMcR!7eK7$BE|03Vv&$RGgJO$Hw)_*0M0ewDencXuqE-v#LVdijHM5;G@ zmsk@wusTGXhd*1}U(W+hYFxXRwn=@(fF*R*eHl+@AFR+vM+4Q{oqrwo&zRD*Y*LCRTgycIa7uz&LGR=!tWa(s}T~2b=@k<8=--tVh<}tszLe% zd@+ch)^rtLtFZr*`eN@Dj8Gcv_KcK2jA77n{ko>Iat%-6G3X-RBgJURcWX(#(>6_6 zSy@k@C^{+%hLikW+GFRpkem)s@@=tCNB1aR?ueROR#rolRk!Qw>lrhiXJls5KC0dGcg=IGksVP+ zUr|tUt{7{E;RYGd^}rVXxTIuu>=JmwI6ZzgS-xS|*}fdIiX@vJz`*8S?T|$yD+_b4Alvo^0^326w>JCmm$g{uq_-@qlCM}u>3mI zEH5d%F*#LMal%9qbf(9(DWCo;DQ#eX(h6VDQffSOxdo#7r@Yzv+*w1y*-a*fW~@JY zA#4apshITKya+jJU-@fz7>j?tY=JuarR9awKfp(> zTqDh8Kbd;pyEy!Gn#whD?H!a6B?g`t6MB#y@fa5MM$&Rma*o}nUu@^g@{xT8f2YxQ zu5x3>o_0Ie0648CQ4uH~u6hvQI4YvtW_RRtArPF3IDSDe@97PFDeoUD>ipj1JfAJt zYt*M<#3n-c1nxbF(I2Af81Kl8HdxhZy*hh?S5!0{ldt+7KjBi%>9c$n1= z0A(Esn?kQZ#g?gEP<{i&1i>Q6jzUxh^y@3Gp#g@-Vl6RXfRQHg67KQy00Sh9IN=B? zg@Jy5)9fQRz$@@ePGc)hqI}bUHr1NYVF19z)+=tq3B2VUXe@uT{L~zz{;^6PC%g)A zaKa-uV|MwXV_7YmV`<9)Zzc?@IXE5xJBbyM}`WpXfrKvsAcy5QKx zyq=ri{O8M2`p)B8@|^~hn1oCofPy3emu3y9mQa8II?q#FBa-b@i}TvZ+w5E;$_Gvb zQWK@l%L>IG`}6VK2?!6H?^BeE8C9z-CY@%K0rAzPJy7R`%CA1a10jC;w^zRK!H36Z z5MFz`L-bmGbrmZCa$?+eg(Y=2v!E@ZV`F<%R#w)rmWRvi^_thrEVimVxev&nKBdqV zWDX1C*=QW;M16tzb9>no$?M(9*4Cq^mUs|n;7v|VFEl@poM1uY{d(d!679sG1rI*~ zxe3eQ%!A^x3;xCD%`L60>@(PiqJ$Rk406N7LJRHM9|G3=`&G0_?*WM?1B`y8oG11d zKm4=&+r}o7V|hX40Ll5(UANijOFVxZFHD!&Y<#|_yY3@lF%_SXApQvtRnREs4ic=8 zXMP5@=GBmZxnW0xJB$!ST!+p)cUqnuAPX)icc15lf7Q#==UfI*HL_OKHa3QUnSmjQ z5$Xxh#4k0+5mMzm(RL(rf$$8%nPZ>l{*nrgla3L7k07J~@imM+9Qi*{0Mqhuej+IP zGwRjP0GQDdZJxp`KKv_{{r_3PL-kwModMK0=ZEG|;Si4rtR0aI2oCQ;t|h5uZX|9d zi1TVV=_ALtl_!W7JG&)Rl;0XV($Z?pfD$hEZEdPyUb9JVX+OF&YphEGi6BJ5c$gAy z3W&GWtnk@jT`yTZr*EGP9h1S{*vlgOi1mR9V8|q3nduqAsn8qC-Hs0*Z8~QShI>dg z8U7}1DLN*I`KTU3Vl|hvbctDSE07o%1skqhL_`8XT%kqF9Fwu>hW6qH@MHcMsOng- z*R*mLAs*|B_u7cqj4PkdlM=RDrb1<<7PK&L(bL0(>i3zC+o_=!#Z zrB$4^I*3txzK>v!P_E`eqeu3o00Pp12^~X65)zB@)5?l^0Hptmv&!n!!{QUNu+Yz5 z@Ld^U2J~V$kPGqYql&G~4^^byQ1+o#c=-gb^ z=rePez701il+1&){e zh~I!ENo-x`&rFUaGWVq5Ldw0wUKKcP`+=5RxKHUSR4u^xDY$fp0ga-TN!I zrSXUIF+IvHD6No3nVMl3+JUB zD7S0p@5nMe;RF&nwaRcFrhEu@Y5(^CR@i$WP8N+!W;*4_y6DU>m@dF>5_{Rn$OHEa-SkS z)>tNrhtcp?a^OB+4C^6PmC)1@lQZ>C4}pKwn_mZpEcWIzJ|Obq{c--&VXql-4R)EV z=$Cx{z$xz;En-g-8zFjc@!{1rJ^fj*-%?NdV~=#F=QC2ao zZEXy9wqR*bj62}0FY!BCiK^=y45qPDrn~ssmoPt!;P<0*fw{~nURzdDpO9Z?MwKqJ zI#SPNI$Noy>KQ~eY_*-&vgK~vMnLwGeO@1NyG;jN&3!k-F@H*czKk`-NX-Cfh4d~m z9MW0%!K_<(P0nmrT@G?@Ec>JePra}LF+Es&S6*K}CM--R{qxxLbR+Bym&X%AV{iH| z;)h-VDh~FWo{fzvN#_!=Lu2Y1W*@Z7%%9LPowzx^7rhmN+uA0=ys%%|O>yJtVN!2k z=GtBDF0s<*O@YZ6HW(kg;M$>#^%PM^$&m;rny;^AnBSW;V#gJbUFx>ao z!*K|S!NtoW7fu)ThVh^^OKyCVkDUfLtrdj=e~i{={@4_wfaKS<5lxe9xLMHl0GGMM z6|T4P@}z5X8rj;}8C$%mu&kw&hp?A* z4b8`CgmD+vp11lwPfJPq&e*oeEQjmJMNfB`NK5Wa54rQN7mvIDy-YM2xuQGOH8i+U z$>JPgx_eT)e!d(vEg?C;+X1iuTsP4aG)8x!CkH%+vt9T13Brcljsv4i)T5dS?~+Y) zM9dvVF5eG(H*MdC?h57|pK+|zH#Uy?)5te>vBL)eCD=Dg@x#`za>0`1H{lTwcm%Gx zJ-q^2PQ^?E!8A3RU4}gyrYZbF7iV3>J2o(^5j)>R_14Y6r&|%v%lHzP#S+VAK#>@LKo4DJ3O-ifMSS^!IEm@d*lD*#A@W>%c~s zPrFIgox60K`6JRj*>x6Ic}Ixcu|ESkzsY%|q?Y5dw_u4&yKmnG#Xp5PIhU{_VFBe_ z`yqk`Kc}GJ;PK;6Q2yn4t^BpiK70}hgc01WFB4wCXsSQ_#?+0ryyDe_zkgkWpYN8f);z=DPd0+ojlq zFr;Am;K74ftjB8iS`9{wBF(jiX~(zD{~oreU1VNRSP+vEj)wE)&Pyw~P98-C1KC$U z80_s$h>z#LZmkt9f!T<(Bf}lZTAYwV<`xtHx!4JNXZ$WaYqZUTAu(~#3JRh|I0b|% zp!$q!T-y7SI1n&LcmZ-37-y*#-L_o$+PJ_GT4((w$!0TuftQ4cq#@!4<(g-@?dqV{ zoP}k{--@jbE&8CPj*E_jwjR>VYV4ce@Ed*{tq+dJlx#d5#vL|&0tF= z5>vuw_1hhFZdnNXz6!bgEp=BOP39w&4gMC=vh-X!Qy299T6Ms;U^Y z$H3adAZFKCQ@#!ZgMhp5Wwz0!`K)=V@rQ5}abFC5w2O3m9eK&$h66DgmbR`#$M){( zDzK$TSRf(MCT4@z7keDLdV1#Jyb_K=8j-fjxDtNl&qRPdR)pPp-Q*c{^jOn=JE}lrw56t|N}V_XCkzs3@wKxvl0d|1_<7nmQ=g#@%v)2H-G1qp zi`@9{Upcfs-IwYIw3#?5>-6|7&pB$nnQWz-B$tr4d%30+dHgP%qg$|RL(qkQDQLjSzc3>B&E3j!%I)C%I?!XfElPiEM871=V@}3>(iy@kE0=*O%Wk?kJv z;O5uIHLsRuD(xhj{{@Y0mDIGvGGNfERH``;bv*yB8Fa}Fa}{1IdAvDRkopqcAEwMH z(BI>#zF~WP?=}}dx~2p8PfT9xEC`z9tPo1(+*N!|)|B|HsSAdbVGZC~FU9Uc8k zkTj5BLGtuik6$HD`#9)xbax3WA&5|XS*Ult)&ZecP*$dBhpWfw&V&FeuLeME-B43kW^_@aiE)cC3V9Ovrm3Vb3g9zQ;Hf+ z;8oW7e~KlctxP?iY#`N#t_oe={kAqev=9^RV|ZokBww+zl`;JsaXzsH5@&gNDAau- zHJOB{by3J%#uyiR2h~o~jIaq_cBE^7MnGo=i6%FrG+ zY?DOD18Z5qXW|s9&UJ4+G?)C+D?hM?r7cUI$@1cXQ>Fwo! zci?Swu9F0rT2oWcJPL#zl`+S-`$6<6>=+3wn#lBb`@EjfQ6IX05} zN_z+Ii+Irmvunvemp@%$n(bYTUcY&;z;Bj=jqPH3z%!Wsqb7z*fcS~$&W#S%J|bp# z@P2QHb(f}CB)|d8fDM){^%C-Q5^zg-HZ9yJfZgEJW`A_^Pof6TX`B1;_y6?HKJzML z>e=QO?!qTj=8Ne|D7P+etc+7ud+O6qTYS7vc!?4{JAN060$whzZP;*E7pER6#Z}hV zr~1vT0eqm?y_;|+)o0qa9a46B=QK%gajVk8e&(#C%C_RpC7D{%RCmixw)0- zX$ch&j^#(`=>kxpBMp|YVcx`sNg1YwX#q?ZTbx^T+=T*Fp!+n`yZ{s`s@w>y)S3HHIDk= zH`}ztlS(>1f3S*V#(tDZFSo}69fl}T%cTsBVgJBD6)N`g*P~H!@i9==Sl&2Mx9X%TrW)i!uIg+4DE(lm;q9#^ zOnjkC4tw_O9>z_uoCp+TrdJLkZzw5iAQ%8h_3Z>o9;DL!1<96!3_i^%8WMDjxcNz` zcaf6Tfc{NDrSrv1lfRPZzA>Kf(f9g&%Kv%lX7O!ImF+b>?dI#W9-zbp&V|Tnhc(={ zS0j&(l~>}~!)5S5ga(NA79*1~KtwQ{eG01FJ_|?7g@F%O(QdG?v0s4Dy8DWa8i`A5rf9|iUcif-BGoCLLi&JrHUfZAXW<_s+i zrM)Fa;Rvrw)M$27O?ZW>i2zG%P=(nz9a}C-MKE`Nfm;<`ylZrRo|8uNr>q1CF+!EB!_mV%JWA_?^J5Rm!7%#)79{Ld$)o4 zVMqJx-kGk2)5dtIT@BL*&7^MZ@bjaz$R1u&J8gH?h|YPtmqKUzq}{o5jV@zuQYXgb zn_LtkH!kihSGc9cGsl69K;eg~wcXvUOiWD2MMeGbX1`JJrA9Co>Pv2EX;z5ultGr$ za&l(N`wB!fc+CvqE!oS;N@-|lDC@bn8+6du;^YN@iaMFb;+e`HG+xQ>&@y|=x-oZ5 ztEp=0o$un5|2@64KW~wK301Z`*ozqI?EF_Wf2ZBAi0lJ~fdR1)97YEZA0EQ2#eYLm zFOCh2kEhJ7c|vCob$uMN9;7*M72CFw?I5SFfza2rC{>#e5raFHS6A&0b?ZCGM(`XG zCGS{y%p$@RO832ONsw09+3Q~`X=crbEc+%n5q@lKrKjPPS4Pq**NZPV@V29ji$$X{ zL47uD?T%#V3eJt~BoL3#z}t;%59=kQuXdr3Lq|$_@#4i-3cefy1{uvB%fzxlg_V#p zm;9JhxGUBIQ?`QRk7riD_2slS`_ExR6^Qb@N~*?G1hbA zcO+zt_%*~F!ccybyubRvY7jC1CBD3tk?eC5>h-y&sPIa4+23#_YyN;daCWmLEe$oJai6%`pQ{acuwt;7nN18SK72{?w3F>OgsLI_jb z{ti=M|0tZ0XHq+7$4#e8nRR4K_5_u<^{~Q^@Lb(Py;rB#4{x&!`?ojXmo)B?$*)N} zpg}Bh9%6`C^2dIC2}~Y#24y277Lr(C`LKo6?i;U|hAcBu&Qk*A6jg@)OK#tQ{rMB5 zbvGwAABnu*(hpi%NZxW^wxaiC*Y7h*Mz!zc>|BlWXd4LtkB<=P=K}G6%qmU^J`m0N z_jg8UI%-1|HXoc0=N%vfRcnARS0hEQQezns;tRYDMD)lqq|*gLULMDOh3d)tI&@O6 zR9@i20-1i$ZIT>c53=lJA(T{Pu)bMXu?7c$)gI{av>N&YVl%c{wlFYYg8b=2;g^oX*L#E31v?k!`?)~nZ~Avx|*#u80(Zb#?J zj~(0O4{hYBh+<$BvmpVW>DrV@ybXeay8-(Uj+sCt_tMhd#RT^bcX}<-ojVDh8$C|* zOYJW7Cc3s&azh|Nn=daqsxwCMNXC%+NLr1|uHW>Xt0=uYGVW%Sp;4;U$vK~!W8avSsCS#&v8(i3nXC3+XmFkSohNP)kzStL(<#v9A**kbQVxvOk#5x*O=|IPGqqW(DP;ejXj zF3!hjY-nf)3cs5ZZ4@NOEvk2xdPMk!kh#%?G)d;iys9gGohWxP=T42kQK1{VS za(SnO>~Xc_k1y1}d^g==@x3U0<$0hu(+O#zUhF?wK4tgcwohpv72gW34P{ZS}FAw&lG zCBcNj?>q!Yh?mS)Je>W|e0;>=(EeHpE&r?6uZi9G>l-;XoNdsea3JG52so*}JzHAH zZY9x)dmrrRk~;&d4`dsv`J7S(&@b-rxp#f&I0HDRL<*kP@88=_A7zB_0eGRE;Q2kS zYG$FTsBdwgpEqTmf{?G42prArjkYx7~_9tG=^u=@`|Fi?+W{wRJjnxomx+ zCH1~&IjUo!zCa_DxX(v1XZ81FBHy~>^0)br2D}{N9t8&+`^F?GI&e;LF+I{r)lJ$? zKW(W(+P$SQwXtP={cHrdlI?2bucTcmfw9*@JwPN&1TR5@77F=8KMoL*JK#kI@Gn^T z-!`aZDH>rCz$h9$>d0 zF@Ko@RM^Y&*~Xcmc3%}HsXz@&k0RCVPkH0+&b&U9zK(hrk0kJ)9IK1YxB11$~&EnMec0m*4r<>~w9TSaoF^{RNb4TX!+#$?FsGhyP} zR&&t0|5F8L{4Hyyzii17QBgstbJEQF-rYDgxuobCa?EB>tF(h2W3W2_$EpCiY9^Sa zp5&GOf9{r)La*94_NpG@6=oL>Iuspiq)vHgc2l;?t^;|rAmxmT9bR|*^|Q~)T?r~z!yhIW4>g48s2)6 zA^7>LPXE6R=A59=mWe-!Py6H?&z^l;=U5%x7^4u1h?`5FpKwjk8P?vI^$;7TUU5}i z`BeLfbZqposj-1j$WI^Ywd5OaF0Tx3-70Ey`HE#Crn$HW7uOcD> zpovMJe|`Aet2-}Vyl9+aIK*tfOZByrVS9#m{?gO4ykC}7Cl$6yD(atUfs&~GDw%LS4)ziTukCnhpHeI_=Yd{ytw_?A)lmytuSYD>1WZ+UE{ zkxqHG|E=b5;1~G5*_jWzmJ5d!0ZbT8|M{~UVb&mNFP5D}O4?xW*(ZCpWj}_4R*FAMTdt#(2*fa+SoJqma=f` z%s~3vq5bb`pE><;F~_y*oGrz-SbupO@!bC61^?H{UBY?f$;jaQwRPXk&s|=e!o91 zE>1cyWF$E&U5H`Nud)Pd*Rny@SeTVDj1?nIwwo zpB*bL#kVlzhgk1R(6rP_PwVr;g7+fXLB{VvXLQN3G$|(@9HHH28RT=A6Z#3d`_$|Y zLE#RLYJTIg!l74*F2uFtsF$f?8QT}OB%_ML<>}tCM`)u5Khh|)8NGS(qpSUB`4-?aT;k#!GyIkOO* z8MX7e96K$&W3bY>Pluj{h26zXC#q;0NE+fOZs!{L#mHX^Iwcu1(8P9w)rC2w?N)(u zA8(d4q7~2m4E}V1U2ZP(3a`!B)PwS1)0|s#Lb8tp%A8uJI zOT>AjPj4C|o=48#V!Sg3a~alwO@R`% zA!mf8_C?)!c6N%|>bmUy2IW0VnPV{rCXyDtGsA;-|C*5DihVA(DVjSzAGS|vzFVJm z-GTnv3C@7oz+(lYLObqcExgk1OX@dEsk^jLPp;lJw>0VCc=w5F<7`e^2&0SS^LMWy zV>uux$&B?S;N;gIf0O@DcjcaMCF0eiE?Q1=a{{k<>U(V`(!^H^gjZ+cK74M`q5qcu zka1Pg_3o9lJre7NOI~McBh2?K-MhCFL!a9AW`|8XH%RtQm{W;wOjymo=QDY9PAMzI zH-8}0J~mJPw@LBuGpe_Q%H`5N{LwbOYQNiVG~`*}iLSz|ae8CscBFRQfU*&RIPqOE z?5(-ff@z(#MN}>C7WA@2w<*LW1lA3IsN>^0v19U_LWi*s)3)HB{1#3ww|~m4?N;-l zI;JB7EAwSwQN*;&!uZrvzKr3}IF<$WcWKXE+}xz>+S5pf_eef^@SqYHd*ZyPNYq!G zTUpW37sGh7`Lobq3_-FUDeo;!G%0X+g7HKGj$kxN=gMQ!XH3~PUcO5(r@viuC~3&Q zaO}of)Tm18hcZ$LpDv{t;qxosZ_Nn@Q!w{81|DL_J#d^lQI@cYFf)u8}pa`;`6#K{d(ee3?l!HlG%nr7;L1-M} zu}>5I9ObXN`xI3Z^(7gbo#r~%moqY4a0fv*thdFExhjD6j^kNyqWdM(qM>pY@gRv_uK?uLw&Jz!Ln zpc)`n^ADWoRivM>n!Vg{*mpsWZx%s-om8$UA!LyXyBlv2@DOTc`0%Ip~5DgS0m@` z+mZzf&dL{$sd>>3J|cFY$&X?0R*dCrLir6?*o?Y`7WV<1H4a&cxbT${yI zD1bcBc{|XCLGGgpn4lRkkg`4*8#B|B`c&+b(s5R%hc90qvs??{^YZ;8KR67jRnekT z<@jQqg00iCKQk-E(*3L=B%o4Fm9cX*Oq!N7)~8m6ZM)ym)=6(VVR-7rYWtI?QT}_9 zIc*PReONY7iK(mGs+=kQBFuWDcroR1sEkLP`!`?dhLO?HLGsjsnkx)urEYg|h7&GV zz*?kSCm0}T>K`2RGb{7>ElBku=J}p7+Ml0E%UIv{U$J8{i1E5Z{P;HdnVy=$v$9UB zedbHz6V12hG9OZ~%MDDfH+_6*n9XnX(U+?04oAx9cA&nM_yrbNBp|}L#KjrW1+^Mi zc(<0=^nPWZ5pz+yrYmj0Q4yLs7XM_ySo2@pQG1q+9ih*@?hn5A!D#0{hd+LE?6Nwd z#}++9PIM)izE?X2zgGWxTtdh>bapHS5GjxqLYngU~ie8ik`^y6RvTAI;UJ*?* zy>6r)EPd$F+T0OVircBmkDEswSbp`MlCxNe`Xeo+>o=weIs7tcP^ZN|7lL)X4sj_b z+nYXKH7|A^X@L8L0-+NHPg&K`!Gx2^ANV}Ty8}1f0{;H{CwQwGrZs9~H9XjPCM-fI z1GWtOE_aUcfVN2%6%c0QI*9+-p61w+ok#bTvI#J!e$6i9U zWgH<+H^r};${=pn)_mgbm!5~Ap`Ty`fBah4aj%VqPH^S-OoTpxS-jcd=hZs7P*&$U zTl0?kjd9S@OyBkRVz)D`o=4NHT7P^RH%fk}8gE+L(n1S?J?S|!eG?3L)<6_<9R9gd z($Y$C+6O@7!uU-8@ExkZt1DM6w(c8sRm2$#ZnR$dCEoQoNKM~f>c{83hnw0o3ewxs z^rz{~F(M-ytGr(cgNaX030DZr0&ZHGej1;Duik2Zq;L z?}R9SXqfb!JXCml#tg3cmQXt3o+%@Q0gRnLc4kI*Hh^Fgm+_J-rI+?5UY)L}lvLxs zAudhp|B_i^^1%(3?mRM|3MQ%~-JnWIJdM?#Tl^nx&(z`0&B7+(ByTt(8HNDCb-l}- z?R}R0iH9y|@9^ZkM%VPg=5JSxZv5exR?t$c5NZCvPEyj5e*fFpn@SC9zp(4}_6NK5 zG1%Y)l__0eYnkV5WG9-Ay&psMMQpnruQ*oRy|<#(YsPzO7|U3tt(w}CjezD1o)>A! zk8`=(bDW7Q*u?1oH?>g2S7F}fQ#>tMgTH@Y7`*4{=Jsw?UO-HY0nj6804d~}37M5X zK;AGxltDRuUpKV|MZ42T1LNx+kBz0uuX=u1VVCa2uoam_$t-QK>)NfdWZZYD;Ej#>k{)6N>P0gcX@7Gu791n?Bb)BRs?Mow*7}hMZ z=Zc684ool`I(jtj+ppa5(4N_Ji{vmHL-@g@z*HeDtDcJRz6G2Y4;^AAt5R~SF>k)J-K_8Rl@=P9q!sMXW?beSZ|x!_=eDFZsd$NHlSJsYo-2A>JZ4^AgI=UP{0egb z*x!YTEwi3Z=K`g!N>!H5svQC$y&pFp82z*9zxJ>G7D>v5A9R^^hINJG2mjd*#^dUb z{4Tr-ySV<*Q8G|m1-1#lwpnkkuhe=(jt>tf>Ts#3bC2{e?30XzR}?X{jdT4joU_1Q z&H@#P!=$CkYN?5k;o&#C%UZFIB%Apj zb^dyKj#YhEO8JMZfwj+T^61h83cl+2peclFiYvzuNN1=njpcgv%aYX|v)sjV89;NQ zUC{}`D%ki{$>34@HH8ZA&{B^+*o-)e2Wl$bWFLYMdT)?2Y44>y`=yTe>4fq5ubIbb zGq_C$g@n{W#;B3GF(`i)%tS_=EWIPY{aQtiTeivjc$e+{gRsAWO@?%+eUS2YOuIs| zTK)BFMl)*z+W2<&`83_$#Vvp|H_z=dp<6MXPuZkqqzq{6yGF8%+cYpV6h2e*rDwAb zL(iDqvuci{#CS0i#LB~KKJGnR#Mn>W<>=J|Xc6gx#2VLDOsUEmp@hU1aX-~|^U7vJ z&nDz;O*bI9pewYnwA`L+WMbo-o6~2hruJ#OCuMq8OGCrvF^y6bG3{quDcXhCRvl-f zmoDL6;ks8gW!eFNpe}AI4$gD?lkj9i0d7p0I^`;d!qh2c4O159qsQ2Bak)kru4N2+ z_iA4np*bb8I(-d|el@TXT6%haqO1n{q;jr^>S%@Zyi!hneydxgcH7 z>Gd2tS6vLwJAk9_%Ap_W-0&K6NR6$w6n?9FNd>SS)$0dIiE9cnG8ZT7O!ZrJIui#- zO>Z(UUetRowEX0@sIGRk;X%5H@g+&9K>Dmq;FH(XD3^a5S zK3NMVQgSYTfaw8b`iA||BiFYiuXSn9^rgo3?P%}w&+5BoZ$G(RMmlc)^w#(C#beaa zgl`X@>fby@2YsAtukXCE`U|XO#>kVWPW;?j{k$D$t)D0X~vn|P(oj_o_o(E&b;pPHI_ zBDy=T8l5U6%Z$>yNlrRB9jBkTtc`L}F-fCN_$)C&q7-<^3FCGFX5*|HU~}(LSM_6n zMd;?PlfC|JS*9N-+3#2Fn~412I>}^>$`;CWc0!&H-(|6e)2J2Wy*-Cwn3eh-k2v-c zzv|_)U|owFNI>Vrb~*1A*w#z%vLHBasCP^; z3Uq2{0|Hf+Z{J>U0e_pV z`ko95jk5QP^udFP)gjYB2Sb~=VsWe~1s-6r>e{N?>%Ui-J4~_SLsncFT~G}l9gPyk zxBZrG=H}#_L|3#kSds76ty{164Cy_vlzy_?ACE#MlKuGYVFJZ46G39&2TxqqAh7@eXLlxP2Apzop-;pZGjH zsH#||WrDfLxL8(u&oJj2J%$saqLmvx{d5vA!%N>2Px}>OxGMmfF^Ud({cCt*h#*8# z`@YuJ{L1?71{uVKD^~cT-2L+P6c2a8m9XPjMfO85h{C9dvhBl-z`>gyIAuIAHTw51z^VFeYZCK z3i|+JCh#X)*!cMP_}!9%A}73`=4Su{1H(PA-n%+BVV<+ow||qD_vfBiT&mxKGn=UO z*#N=AC+mh@-|jsULGh0gYGFUy*0=gy98COxMAXnl?C#CNK@96KJqyR>u%$#|l9%b= z@3Ham2OtbsOHHldOL^RNLQnCj58hN&6vI_L;=I<@)S3)Vh>OhXZ>FPGox?0SVNuclvAi^~6A<&B?za<`pCTtZDQdrc`_>N? z^VhFCSE5B#3D%0RH|n-d(um++|0o}Ues5oCax~~oHG|RLn8U3a`#Zb1SO;zgKP8t{ z;#y?YWc}*e8nnV)vDaDCLHO@0O|%7_5^Vk5gex^`$DWOT3t;!ir5CY@u2biau!O-9 z*~~0q4F}QGz5-3F%Wy@)jbQmFt&KMd%%7^TZ&)+Rr28P|*$OmM_3R30)*_uG_kziV zs&p@2cVTr;qLP71&h6uARR|W@(Rn0Qo%16|DVdp4t0zSbemFiXPzsPu&K-9iR!@i& z`)mXdhUJ>udng?+lGBoSn%=*_kO^Qsn?Kne5%r5Gc|g#;(K*X{Sr8yO;W^2ccog6b zh9$Oyy9y015VCfEO>Tqt&Q}P5E6v(p42yX|jz@OpH-T7KysuB_Fan5n`zgJ}z z-!0wipX%!=AU5!Oc3jjNQO=NATckD})=4)wDrj1w*Icqumx6X2EU#^9sE9*b3N7vq zqF?59uP0{^V@;?@&v@5ZVWrLfPL5#}e1E~9EfX?KW+6d*{4{%$UQb)QA9;sH8(&|X zpizY4?UekVW-ciy7J%wP?bKJ(L^Qm*;-(-b{0P;)cG`8wqcH5>l%ggP^h_g3cl>}x zICugaaTtVpZ2dO_bvqGDM6{@rw_wBC>psR#=*0`DK#JK;ba; z#N@q@HCboX=UasfB^!Cu4dI3?1=9Q77=zP7sg+(vrF2fEYb3*dUn9Hcs3YE-K+JoT zy3HwN_qalBg4xKH9E($B4#lM>z=V~rP0J8Q1+E{kV-YW-&IgGmnHA{hx(e-?F~#)g z>({eo4j%~B33h?l@B-Ek=m~*<(jxZyu2Nj{WYNaP1|img7<$t6!^mk!x(%|;g3*8+^=mimP3Ai)TtXP09sJYnDoERQpe@(fUlQR@Y!vK^p9>20stPxTJ z%zTLaFuRkI!Y61}$^ysPj>%itD1^~j;K28?FN^N|3zVY9Nvq!3XaqOW|*5Q?o$$afe(wCkYIct7hU~8Nk6?ESG|mx z>3_Foi6w*yZNIbUPV1R~TPKtr7^gxz{EE)8si}!(kW4P;_e90%VczM8<7MeI>-PFW zbBkZ{)F@Jyr;QH!yk|);Gbny|q9poP)pXx2MNWln1RsO0KX_ul{nw}A;Q%@{AYE5K z)QANz5zHwD~20{iZT{7^LhlmDD(Z+_481NwfrNY3@9*mpB#myaG)AO|cGU0Pb zESQ1A6ar~b0TAgL&?*Ve6=86m*w)~;8dm?DyTo~f5`(1}=6gryn2whpo%2(jr9UDP zc;#vk{t*^w^!FS&w2gScgirAT-9`6g@PC+{%K%AcYioO`_YLG3s3_}JUOwal`+$Vn zN`m{wNCRwT?b>!BPQl{aEO$dgLpA;$3^;X}>_6&VyDA|+AdT8zAgH0KS&OaI2|u*# zS~e(1LL$w1leqsrvhB47NSHk(?or8u5MrE zg*`HlC;Nkn-cU30bM0Lb+}FqcAyCdR#%?OSY{)pF-2RZP+bjtI)nM7d0YN8Y3i}(} zp;^&c+BC=B_3_U>fX3%8ST({$v({(!V1x!O3(Eu4MJTzR8$TY207?QQG{W)(0Z~O= zG;c7#*o^sq_;j;)DgFCo-C{gfY20eDM8YD zr*nh?nIPo2sF>XIx0oQK#27CZe3Y2c3GgqDnVOh1!wBf+RCk2rnj;s^F$4%zVm_#E zqKXjqHm4gNBbZZ>s0=+z!6pKu#ld6&Hy5{+zgKbzLDe$n=2aH~TKD1#N{c<7YEwDU<}*bD6)KeRje)m;)BV=V}f6UF?wI1FE$N7j7Fnz48$(_!b7w1;UG2)DWrozAw}fEHEg8E|$g0>hVzKdHr` z;PV(|;t(-z=ed;C_$Cyv8h zy*&&h2(!CVLMHF-VCO-nG;Y$=&_Ib%;FR;p)Y7-7cS8*8|H+sm>FwJ=2)`#hv)4H` zQ7=*8OJ)}qR50QRh5Q~4d-rFNkq^Ke4WQwB@c8l9;15^PT4EJ<+?@UyHJ>f%ig1SNCb-0(Rp5-@k*<1||^33VGq%=%-crL2ThO6Un8(2Du_MFq=yy zDJj`Ito{B4oZ_+L9RPI#bR7^m))wTK{Ik4cpTcQo+siMmly7~DRo!JftgE5J7I^jV z?gAsHgMCXfotY2YPi;{CRJF9^hCjuVs3_RXQ$U7?4XwH=&N7&8uLhEp1_uX;e+pCI znW{(0%*?!aP@Du9Fg7bLz}>iIdmq&jlH&Aq`>2xpeCfy?c_Z)r5FTyZ0s>Sho>BRy zU^S*{z0=&fx%nU@g!qM!Lte78qeRK6mu<$5FHs6KoF0KF1|T`X|3JA3undCJ0Zgot zpCx+&c?lMV{ZG#yU0s!!pjk2_d-CQ@2yy90kM6-)hISihj{l=aR7(}xFzhghBN1w< zlNeVL&Ga>nT4rsN$MsU47zFc|9nf)Q|+R+c-u zsmfknvV^9@aYhXZXtOJ1}1V{o&spqINLeIUy^5I?#@eHpgB0k#o#7HM8FV5i{Ze z{t?qN#!XSD2LAWUHK^#PmGvCDBBSC}uT16bc(2j_ae;Yf(CJM?I!=Tw>d(q=R4_6S5#yy3OJG&aIQ zQrR>R+S1Xw?X~yod(`=QHHWWWYHMO{&o-U9f5vksT4WFMoyZO}*&O$2m7aCH`C46w7mFBq0F<)mK;K zXC!z(Ncl1E^sSsHfAlj;wkIDO}~X?41;?6Ui-mfQd+ER z)oqedxkAIRV$;Iryp&NC1uOmk`A%9Lm5=viXd^rq4RkZy`?NNsC64T{k}#zc|M{jGe3SmJ>$2>^X}>DMQ#Nl5?URV{=C(PzI(uB6RMfXD z%V+B1H?kPlYyq3I|K~v{D>E_@PtM}&_^3bV$cfIFja%$XZw^tho4o7Yp{lDMGM0{V|HMZY0_W8cNH2QpZH@9T`GhXFgX!8Et?cx^kd=JUq zZCxVOG4u&^|8rp!4=8SPr)hspD7y0f6qC-o}Ujj11Ef&G&ogCNX|VV$+uUhf_nC5<>#V8 zs`cIf^UG)>l<;mZV{gx{II%y-g~ps=d7ssjr(ym}KC)C-dM6v6>t=XX zL{;ki@3+ws@8-j6-`0Gb3Z8Exc}CJ}?g^3W4}8X0Tw-uRh6%|XWx;AkE8~wf_mZ9e z=k?*XsubKqt8awHN#;|5U(j-l-}LVv@5k3RY~wyQbpDi+M1shL4G-I``%dZCxc=`G z_;>8TkLi-1U)i~XE!A92UaJb?;GMyzUwo7t${F~_voI+iY|@+@^e9&Ne?MdxfRLb+ z>dBVoeV}>L%pK*~0u;ChcLx70$hjlT)1=T)5z(2Fq#B2?a+qoq*$z3B6p>>Z zDZ|bojTDn~5<~CjTUN98yWi{Df4%Qt@9%QWm9bju_xrBz;d$=+e(op5`ds0OP4g=h z58hWXdbe(a3R^hG_~^aH2IG8=my{fwWvZ?o9~%8~!>|2MS4sEgCcbT}51LTEVCwX7 zz2&21HeOTKRo_tBH^Ka%^MoT~l{0#GlUyqLOZ~;O4OdYU-U#WJI_IYH`@+*3$M|e7 zEqQ&pZgkei#=+T6(#ds&x5_tscvLc~t?ZO>7i-<=8Qz_5tJCajVi*{+;ng+me$}$| zL55O=C3@#2l82iUD(`H$JKGyMnzO`ahP!31)#`6^&TriE1qs|2rKg~@+pkm)zIVgG zf*tz9`K(`BT`$cENIUudo4p&~KAVwIW$dnguUEs+ldI*gpE9B2^*55s)Z>4YHRKE! zIrY%J<(KCC zJ15pJcf*tVp)g00_H8rw>_W>WsyN6hILz(+{47X$?=8_CIFPft2ZC=AjDpDB^KYwL zTi;q(dj9aZU1cYR-&rHyT2o4lX4hO(Nf?Z14%(TLeSrfOKk4JBv!Z3blrkN)wVC6? zp2qzB*;fU-Wf}9dh&~ols3^iRDwsE)3__obR%Aa-8;IEzq^njwX}CYgzajMHynpnr zvi>BU+8k#9qmN$F|LNTOFPzZ5dhPdGh7W5eL6hJ>`8r`r*Te8mI5% z2CW@ZRuh>q@7vU**14w(?hdP1>iEmvsMVjwB}KZ4>78Pj-9I_f_UHV#p&P=})!IVm z2Y#&jwqnxOD5bsU*4XSy?l!*Gwc8-&yCt>F@~<+rF)ECsB-MOrwM&nl4;EZ})jTT4 z04KNI)r;QOM)=!nZHiMzwN#{j|jmlBkyM^lPiQj*J#P-1u z`J-)j<19&)knLY22JKa`ocx~Rll`+yRVzlx-z!I#Jt6Xqx~}dQOUE@4LyN-fO((yS z-_m7qsyL1pDFmcUa$PByN^RNED`;>)RC_h8BwiFnan8Bx#$s!@;Hfs9`g& zX}=s_EaFC{L^L+~p<5gAsHN^7=OWPP3xysoT{-8$b<5AJG687|8M&x1kD6)w6=DoV zFMnuyXO#T=zB;1)?7pgvl2(=6wl#Mj5fdFVzWeLpvl!7Zl|j<5J+d<&*1GDZpi=-O zht{u_zd@>BLX_U`lTQv!U06x$ zYHvfvYwrtc*1-e)G1}c{rK^4J9nnGK&{H#hL$`jVsg7M~;G?v>juge8!jJ`5Cdvmt z+^w-k3ub6f;PxmR*ikI&@s1bjNE=0Gbbq@CS`X(mb$a^nW zkk+kvWTq$I0;B`E*Y~Zh%Nmu949&bzLWX5lf@ve8IY5=tk9c=Y+B&d@#COGti^DJc zu?dO07WPot0S$-W{pHM=GjA~(9pV4_vHMqt-;qS0erqhhPmd{8!{U>XpaVHId7b%Y z*ivhIr{?qPdl%h?j>N^xyveIn@#mkv&d6unWwT8E67wwAHk<$c=t3+`6lzSnyI!5q z#SrrllZQ!kRU;aH{yvvl7-3YK+tl3Fu&-?)&PqNX0t^kq>>R5txvSR1=~;mjC?L6Uau1I?wwIlsqPeWA3Dnt zsjCF^5Oq1P-&9RM5Gh~jk<)HH?$M&qRe48EGlhQmq=+S3wSY8pT22fpt~+^aWK`7W zC5jp0|MXjh)h2&6GL%}t{sY`5em7va>-jwDb5+#TVhuCuAmq~P<@3m~Naw@Bv&pIk$GHK zHyj$!DNO@3Zm^&BpD!W5P_Gh=8LRtXMx&bMWcF|WD(e20mZm2xd}U>6>7Ey?@b4QE zjYh|Re7oqP@v^zhYrNg{WsWfaKI$ki{MjUULT(KS=h6eks3`(@j&S3!)C4Qn9w2<;sa zd2J&$Vgd%FM)mIXW)f@x%UXEdn=$->{CqX+IKlf0s0A#J${kHsu+Pa}0P3PT4gO&h z9hxc@$@hQ50+CCkDhiOnHD|LBhjY4>7lLrp!>Tw3gBCP)DuX=yx>Ws+2ZepQ#UN1m-oXnn9 zR*uB{lbNk5$UNRd7xpwPBh+UI;ujEj2ou;&ZH;A|d7X!_tZ( zzt2>{irwPW1!B#<1c=+65agTOb@RQFg<%#ZFCu!Rv|A7dRD5*T7_O6qMZ>zb4=qc7 zJ@Gk~d2xw}hfmG~2YgaflV1Ob!%QhEDf&9t*|CKey9n9{1n!qJw}7GR1;brd)=%6n zkr73xx*=Dl6&hJt4Zxh!7C21Y@uBJcz;@?(<#32Bf}ce8Hi}I{DJmg47S*OO`|i^x zSUd!=&KO)oa%=fP7XaRdD#~8{O>}<329N!xt3bZdQq{xWJq8Z$Ut4{)dBqPuT!vRw z+Oj*k0Mwmo%64fVyrAey0G7A^WCeKS9XLTz2~Lf9_7Am*`t^xKola&V(qUI}=Lv)n z4rFaHaT*m8J#_mgC{UTX5j6-khFM-^!=Mre!I;@EUVOM%78eJiu7|P{y1$$7JQa0{ zf*>Mx<9Bsrl$pCzou!SjG3eTfTO*0e#2ry~vK0)~o%2}8iK*FQOEhwR=rK@yl|+vR zxJ3@kJFN@rFme$)Y<@vOY1>Vt*W3Jyvi+)y6~MBQNZ1q6-g{3Fva~Eycjd~J$LM8& zqiPS<615$Z>Gr5UGJb`K=XisWH1EN@tQ##ZY-ofhUfW~|jZ{s=h1tB!Xz*(AJlEnM zi~Q;A)SLH!+sp$Yc0_w|!uvsA0J6I-qsgwsUbWsrR#3tx*9%?gk$%Oi#*DlChWH$^4rY4tD8f_aWwl z)&(~~Me1>fLig}*=cKJx#f0~B zFYg0gTb>(qE^z1Uv`~Uwi(yhq8gCYWbk{#C(rg;LlsPTF0T9iFOO}}UMS9qCUKqqp z@f9usfr06Rn$w7r`4jW#@8XLfxOAzVeffapdMw~a!yk~Y?cy-gZjP?i(E($8^#yGKSl%_D z#T}HKKZDl2RsfkSt#iD5xb`h=OC3ZsLD{pHdE4s(HQer$&`b!cM`#kM?+K6ZE3DT8 zq|Qp4ZG^X?V4y80;C2!&(g$N>QHwTep?K8|P5gRL`>Bc;6V-@3GNLV* z;ikqKq?fB$t*C!TnCVwIJhK@-`h%d6& zwMs$rkGNi;I$x9?qQOzs^O*`Jc4#qOv{9ji#l-Xy)yx=C?8nf{F2Z5b?_>-%6~ElZ zn>e5TzDU7{=Nw8-dd*}0K831Re)F9*1*>}I zB(StZ($l}`F|X|S zUy0O;aefmXeQd3f#ZPAGtilF}g{aIL3&rGpTiK!j+`mQ35)2#kS>~4nN`PE|eowYT zZPSl0zS$p%;Q;bi<=EKhIUF+T3>4LR`Uu6@-tswTHlClEbhWnhqvf1AbDsV7n~H|d zR8H_ih3E+(w3e0}?174)r_ipjG{yADMAah+#tu%AnIY^=FwEjMy8dv~GiB2sqM8UU zA)K^C&?a@~8+x5FaJ;ZSNLC<|KE1iUcly~j2uKZ6L$jfy zd@7>R4E%vD+tTu52Jn;7qJT@Z(f+YA+$|wlWaX{ zNmnSTMpEyLJ3hxer~78c#D4PRg3?kgj^=(A%cZ?>g3E{5%5p1E7DcqrE%9U%DuMCu zss|@#8-7V_Oh91)Hx7g_j)SqDPw6UQBUg~1ukXK)`q5bz<|Y34nVW8khGvvKX7-a^ zTy_=9w#9j&OYxBIymx68j3zZo{mh4%t##5on7(+lTKDdKEQgpK5KE42OZ0@;vn6zz z{g)-TD=J*8XI;JO2}MMSfpL6V5}Hflu}WUHsc=&MS~y&ozB_cW6L#VUGESqS_Bu`7URtpu<-5% zH?7F;DwjRQ z72C#DK{DgaG{neAK_VztfdjDvp$XBlw3e=92SX!ZhFbIBUW=yd!!Ovwc}4s-&o_3^ zgh_Oo#1v-d_dmJ!R8yPGbP^IP(WavoL^0*}`lO+Y8_= zh4+Y7_V2=`g_--?g5}|6iPRy|WTgjgTQ;t(=`_;N>o@Eh8@9~S+87G-3HmMq)PP|e z19P$tc%vwo^%3t*7wG+da1Fvv-_@(bS)w4C!eD@neIc7PlQy~diK9**jxHn$1vhW@ zf)IqydrMe#hs7?NctD!RB;_o{KTn7tkv9dijj8DN)scx{3g4QVUBMWGZ9+9g`RWLS zB9P~weH+xI#p!fXPkRGK%ho1yeZ}~)CEv}7!9~D8BMQ~LGLjN?5j+61;itH5_imvM zYJ7QL6UW5}7C`Zn_&fsE6>pwR#lC1T1r%%nHm<`nh3=9dK}3#XmEly^MFNZ!jony2 zy%irx-p7ZrzV{{bLI)!vYIl2Xdp>*0GKewKKtz1d=4Y_TMg5dQe_Om zC&S#cln*#=hJ2psd|`dg{;arqcJqPctTchsTt~;?nkqDA!gBfWdK3`ed&URtGNRuq zn-tFjNT5ZZHsX0@n00YdvNP2*;V8VRyxbWH#6-imyuw0d5`(#49dSvF+_A@D>oiB$ zS%xfN(NrHJNaYtVUeuK6+dGJ44ZslC;O~p|tA;WLNS#Yumcv9d$=M+dVNahgdG+cQ zIyJXo(;{ahV`I7%J9wRe`6jNmNaX8L0sMH{8hID5KEK59w68OEeH~l1W5;KtjcB_2 zkFb+|-I~0XF2ojr+i`#}ps-?*F4Qx;bI7Hsg`amY&MwzcOf`JbZ*bCe9n|l~B0gqd`-qlXbF|Rc>f5_VhHMnK}w}&t`3r|94(f)SL_c z<*)x+sdk=ywWR%1r;H)E6G>Cgzxg2i5+;ScG}==_$N5Gb0k3|0uJ6XOHxOgHmKvCg zU~nQ}ZLD?_T1)Hk;w34^LqEX=B`aT+kMygn(8WDY#Mh*aCVo@eGw?~VMxGrXTmW<# zCY;%z=YhZ7j<-K}YUG$t>1$fDb$|xo=;XzVjfFUDO+~5k=cVn^_FLCtVLmS=&SLQ`V%hkUtA>60tQ+nfpOvCgLmpX8mk@fy z3F}SO0i(!~JMP-z6H;QfU&vrgO}mpbIn(t;9BQ(O?ayP@V2_INbH6_ApXlLCI}ihL zz^6HFMp4~2y8=C(YX1QuV|Sc?8Ps3=pd`d=J9g}_D?{aPhpbms{taH~c!hWsP=MYs zc&g4T?mt2S?f1~}pTN9-eW(9~BK-fawh#D!8>Tij(<^?i!yN++BwSM+X4+@kE!^~9 D(3PZU literal 78211 zcmc$Gby(F~*X;%=QBt}^K%^Tal@bBTjWkF|cS}nnCDI@v-67o#Dj?F`(k-xQxND#H zRXN{{e=m>coW}#d*lW!-=a^%RNw9+4GYoVRbO;23@mxw=2?9Z$hCmS7&``ktIm*8C z5&VbWK|;+z+1kj#SQ)??u7IrokJ|-#?2L~H_epXh? zKR>}@ZD-8ds_FP0+~u~7l)60xf~5!l2O(D^#}tA9fjk#~3U&FoHRG%`d_;-5H--UA zVHiT@v)yg1&dxRpXJV8olC@NyU@NyfEHC7${A~C7vHhZ4=UZw978`Hh#&AcnX%8l_NC+GWcMB86#Q%H+z@QJOhlYk0=I6Z+4;_>PMgM$DT)sAke?ji=-wm1meM^LU zJAc0^?%Luf@aJ(jkrZq^#|8uF5GU}7x?+DdI^YQlcLz-^#Al={JSD?pxFGW*Y zTIwAUfpu|l@yfu!V1q3<_d~qRL+by2aZqI`1s|;TFU`05qG4e@Gcz+wSaox8Nz<-( zA`*7zBjK?yso)FF-4OSoLd(W%Q!wNpCL<$z9~+C}=H{jx_-COjgS1$>zb6Zn8TV6k zba$)fhY>Jqyy}f-Uz=?d5T}luHK3us)Nf1vy@68w#oF}&uX|z_1~Q(xnwH4KvAAp& zRnIRjrpLj8zOdbR$HAzE2EjtjYRsu>>%gWVD<>x>_>cZ5P-Shbk`X^^C;7Weu4xMN zd!2;3RD68nRNFZ@IZGj|O;7CXI3yz|EZ++U<(hS5WB!S%-0Ys7p7wN!kh`%KtUKM5 zUL7eyZg*#~a8$@{?7T{aQ6I@iA-7SJOONZz;~JXE1uq79aZJ1ZMwKG1s~<~7)mnl}g8U(X(Vz0 z)OE+f4Mtk+PwlR0e!(Zdh`1 za>^!fAg8+jx@~7?cSzB_ztqic&~=xOk8iEfk~*I#Hv0bWz{&UXIER@|@9yk`FZaYP zT^`Q`CMT08@>st6_>qiBs|H)w;|QOG%Oq`#&(7Z7_GC}5vFf>ajIsglj!Z1mTPd2h zkB{wT$iz=^ri@-=ZJI^IB7giizzH%CNR}b|N=5HK|pY;CNo_KWjK$ zN!qZFW7Z64bUW5R-kI4*#d#nJfSf%jWm zGbviu8yp&X>!ZZl9)QulK9qw)L4jGT6%M{NK0Y4J=QUI3I9_J(EM_q{C@6RENIa8r z#52H6QWAykMWSD&`B>Z6uV053uz$aI9-)NChpa5xj>U^;%~!9eD1==7l6bA#dV20q zN21Be$$?YIf23z>8az>MY_QZ7cCuO0yth-o+cr6=u~choYbzxqQ_vL;`_=EAq}B~@OPa4V%w@IsV!l-5JGOcB#4^`7 ztmCq1)uaubK7Ra|w&~l0sIPa4$bUa^HMU=Rdyya(T1O$y5CR9N%i;le>x>ECFQM@*J0l;l;ddo(x6*he7T@1BpbFlhNW7f z(+NU)L}Yuax;yiElnq#9rLRtS7fNN-)vWt}GG3;&j*bqBr3fu8vhnwity>f2Bac}g zK78n~Ir?Jh6l^{P1qDi2aL_kZOXHfUiHT1VAq2FriShB4&d#i1&))}$+Thp00jCQk zNPwNgdCFyGBMjqHQxCYg@w+1^yFq};ByTP+Ba@Pn`hvH7T~Kw~`S+#i8{gX7Z;g(Q ze);w-Ur7L@@iA8>0Rd9;(Zbe5Zu4)J-9(fSY{gSEXxrt<{!%vP+uzw2O}~t&NVB>t zfzueAK}ecP!Atme^X)Ni+}z@1Zy_5K0rJYyGECUxES~=^^^F9cYX??8(Di5|f&cDZ zGCu5=FTpK*gKp&Qe6ljNP~((0T|e1F$sP}8vSTaa&`pD5^`9>W)1O}=>9k7^Ygbd? zoAghnyLmZH9`v2_>>E_2yx}#Eu@YU%D7qIMuFc|^@E3woa!K)$U3}VXv4q;+NG{(OZFMhB%b;H%!CK0Dm=+kqY4yE3dYXpAB z4Z|OvLAiD}-fHj`_)udyZWz{$M+Ak1g@?0EZEd%)E>b(&=E*v;UvD;gQ0MbUQla_e z`Lf|9$fBU4qGo1gwa(7Y{>>VS%s8Z^A@IEUYq>|oN`{HRpd)wSL}&nYU;Q*sunaAJ zqMlu6V;1tAr*KIQs(qu<7(y6g&~xNdyTGYqjB!y7rctQjZMRPC6U~qeD`ozPFnf9~ z9c*9NOA|jmfm(8Cg68ZdBP1y=9@F|a`A5E$kdRpT@ktDn{O)7{XR5d!?v&N7taMY5il((2+ZZ|2GGx_UQL*DM^O0mv zmj$DxW4d4@^%Ji;PexJR#RfTa-dLPS=D9ZnqGiL=zD(>a5`s|chp!o=wI86hjJ^-d zg57#zC`wlqAjqarA)fiK1)vv_32!dW7A{luV|CV1vd%JEj;-5yZs|@okXfAUdfra1 zibEV%Jf;?$tA8V+IMO4$1iYDA3x}^lp6hEh9S}j@Cq(5Oxys}bCF$(=H5)m!eoxTW zGmg~tl%$397vBz`mbafErsfd5x%}cO1s!GMgI}E>*i>zG^Uok@+@`{5c>>|RyZ*&t z+In<2?SoqHia7Z*UKOci8ZGPpIka;WXPy00` z1>AzJ&{)DBa4| z`K7|xz~|vN;Ea$r3%=_JC4+d!Bp|JdY@rIs^wC-bNnP``|G}WSB%9M;@NpFfLQmqn zn$z|L!O6_ojQ53$h8u_&&{naXS1dt2Ir}oUw5TcREdj?ak`PJ8ar2b+HWhfDm|H_sy zCg!Zt>gfDx!rgksmD8TCN>L9&^CMW{i#Y6uQKVdw|H{6SF3t+xXHFVU6hD6n7OlP$ zr{0R6z#tgBIMgjxYT*?57$BX+Azdh5iGL$ma<}|sIl9kKb=ejBgQMU1Gkfiq;gF+O<0P>Y z!D&cwKGOUIcdNqBvJ`>HrW@edQ2h4o+coy9m{6azSwdpsV8_kT`$CNu39J2%drEVj z(F|jG@-p_1s=lw?ReXwbGF+%7tK(J7v2ah3_{N9gNGIjBng`HOT-03=1NJ2dP0;la z4U0mM{`jo_StV21@DiSfWPIJ`hnR{ zHUha zQ;xl+IF#hZ{zw`c8wbL+r{cyRq9LBaw(ltF^~Kp;Si74aZGRNR*LP%Mz6EKPGsjY$ zy6|g+yy~KivssbDjb=b-POdGn7x*7{8!gi0O;fX*8Tg6=P}SJ!+4nH5`;VM1dzy8B zoN9nz-{!1;Qh2}GOXSg=^

q;&37{Z>|-GfPer1#ktj&mluvHGdj6}sRd_FCk6@M z$Ce+doVfQp<|6fVm#C&OQ!@nLT$g)D2$)V)Y=n>WP-s7X{KzofwXr%yP>DKUa%X^F z+j-Fm5pynR%=ID>^S1L-Y|yg3kBofV+bjEXd3l|Pdtm5=*^N#=#R;5d0QB24o<(4T zvN=Ak=Fsz9lDGR}>9(=e{3@wju5u3M#%NK<+0kZ(Tr&UbDpS)({*7699B({7yX`lT z63w;dOsgfn8P7=ZrPUwg8uMs&5g{I`=cO-`&x2Ca&>#VH0e~(NXr{s{Dk^YSU0hsR z=H@7`uC7d`s+dW*&7f9H;_{@RtZOt0Djj?^JN`L`PK#(MInIh&v4;m&!e0P^Jv==tElTtB#vRl^o{NZ8o0MN7YqnfzQ?*$KMH%I`$hdsjMmbSEfWw%wDaod znW~Z@1k685bVbxOG-Ag^PP`u4a`KQvsBl7TR(n3-TM0ar59Z|!Tzut1)?1FNz`KFX z^cnY%Kmc-=hz-JN{N1mps7PmuHeasBgyDD5j!c=ZbG*}heN{gjwGFY^p5%tN6rfL~ zg_R_0RJi0T(atMD?fj>z-bcbe8Y;DZvg%68%4N1ol9`#AxyNq=rrNYLqF3Au>`k&Jgw^8H2>B!A2^xmfd>d>dFt>or}1Ak8Z8#1-0_cPma5|w6woAkfC%wG&orL z=3vF{c)bUJ>H*Nc2X*Qn?%8+lPu+%i?{&ZKCyNLT?Ks+`HE;Yc+d&J%w~8R)M(5$- zagDeJeP(BQzwn)4@$}=W;LtGI*T0W+5W{^gF6fdcV7mmbFAm_G7!xyd<<3xCMFrPU z=qbF$?-GIw55c|e&hoT1%*N$bYnAuQlywW zq2vX~R3IfG$;dp~V$OR1^#B6V-Kl@OPwvj8bB~Nn%WN+Ck@EYLl<=p%C<|F}I&I%# z7~lGcH>feajO#@3Ug=9(I$ceDHkAG1K5j5JAz>g$torA$?Jqq&1qv4ccEL}+fARhN z@ciw&$EluYx8J^f3t(7aW1~==!@AGq`Ee3I)9)sf+R)ID>cIoCCH7iDud+c9fN3BH zYaHYA+b$wCUBWbvF9BmJ834U45ikbsSO-fFVrBXylh@4*PjMr>f zsxx0iRi=n{ zKo@?pQBd-u#?}DR5`aO#o z+8OdsNFau1R1pyoDH`1AdS|SsPoDzPChPl)e>eg^aq3opn)dgLZP1XrXU9q2RkAwJ z+csq*RRh`w4;>lGfRA|VmdtR@?o2%|0h3zVYzntIL6z0aJ8}W1++!h^JqYOSRjdX0 z`SoF26DA}1_~0t|sl_1WiH`5n1q`X%m%cvmA_;N^Vo+_BDZld|oCnettU3)uBA18v zzNZNF`~{&2P*G8zuFLP=zY__%umN)I6O^G0)QPZj2X==wgqueF( z21HpbzbYtnj~^3TSy@56z3ZH6h?7J#FV~6&%Lqo@S-($BkyS5B z?j9cZqrMJP;<>oGrt37i@;Pm(CG4}Rl|ldk7SHh-eQSHW%w=Ey%d%ZqNcYOh$|4|g zb9I}Wet!lxTTqXtsw~BfjOakvq#rc^X7K0FpSjhqKYv!$|INry=ihx%-m9oE`5F*% zw6Lt4oVZC!H0 zl|+QK90USzP+aJ$-N1Z8xu)oSgiv&u6a5nwpxl z7fC!sBA$Xj?H+?aJeHGw;MQicHMgF;d>K0m3o?6WmTc4Pdc*);9(vKZnY{_)RAO$)-{&CTgDXZNuQ2MNJOC7#9m0f!gdhn40z3mwU;*wuqs-HN zKfWQ^QjY~+EHbWnH>~dy-=(L>k!_Ze`nn6qVGs!DZ-at^2VBCFl1KpsD;?b*92VwZ zP*5=HRDgR=(NVGJ-VOo+LXG<=2Pk6u0LRYz6Y8`C-+Nd=HzRT~f2%iHK(&!M>g)XW zwq-}qZ>}Ym2hd`GssaZMU@4J{y<5M2Nwd1<%g6%o+_u{~0P%j7_Y1c>Uy1P&wD8~+ zo~8gNrQLp+w*zcI|;M_XwB!2JD@kvP;wo6?m zb4^0AOzJ+MROl^#i_z$>2GT=gqen31?=_F$qo-i>11&W>rrM}?I9v+#e8UMNw#aj+-yTwkM{h3JBe4^S|a> zwt2MrAQN#IqBS%&MuN=DtXVY=7&$(hdG9>2KMbfwG02>N-yk7mEkd)r6O{f6XBgz> zMNs3GtCXv)w1dRcmCjW|&HY!$l2IW)f97E)F+9_LCc|Ym3>du{>B_bC_V%(@t%yb4 z%1TP5CIi&TlYm_uA`(%2p=>Ght)sJ353uWKXlPHGJuhu`rXQ2>*+6cg++}k#`Q2ed zd%&Wo6cA4wZHx@nG@BdnO1-1~tb28d2x$Q;1{w)o4fkc!!OY-1F{;53Gl6!G%d?{! z+@e$gs4x$Ng=dHLAjoAVL+$k_^PjHzOE2uIz zSjR$8|K3Z#5J?>w8zW?4VbO>v@oXwOtAf1Jl;VQC0(2i6$l}tWuT23m2g~__93@ic z20;eB4VcK0bUf)K9?NfnR-h9|em#JCE97_wt4xrsH>RFh)8<-7kUhpN(x@DCb6gb&eUI~ve+g^n5@tn>{4Z2(=n+{tWUF;6BzlRcYc9~q_5Z}4ci>eqJ82AF%)iN+JFzt%e`AW>uCxNvaakgimTAKu*VRxLjfj6K+Jruqvs9YVXfND00jh@Y(NjZd z>ZjO9%BXtuK;Xs1#008|Z)0O)Ui)uFDqZ7AmeRs>tv#Q|8CSG)md<2Fd3ihNe+EkR z+8L@nDTd-4D&0iBjA_s0_gl%DgP$hbJwsRD4Z8z$k zSwaZ*+OoIGy{WeDP7T)Wdn$xC6kg&dqN0f579WvAh z4S@pFWOdgU?CK|wy-Lf=In~HM4Ll;cTp}*&*4@&eObxZrF>3~53rLr?=P*lmXL{@t&(%lCUo)XTf8pbauX8sxmw#ac>34n- zm!u*HS=iV>S5;N5Fd0DXDWPZ&3uS^l5om@St__US+e&r3epsRD!f(aK5@l|>49p&=Yb2h* z+EKAWN3GN19yF0miEi$%q|~XrJK1$gKZC_$&n#Mh%G$1j5u9vyVuD)~XC{XAzxq>m z9)yI4OUlWGyPgAa9H2aIjccE@Hw3l*(9kZcW!6`&S2`Sn_P>Uwx~)6KQVN)k>sB<3 z`X3toY?=L5IK3I1FL0w-3YaV6$pR?wS?*wxZ4=yuE7^3LX~Mm1@b8 zRQbg>5-&$OmdFJ*Xtwz`hVwFJ$AH}JzSoMnx3|Zp)(qIYmQ%N{8{2@o?xbXOhFUYK zAhJl%n%DB{ifh$%O>Fyn3Mjj-c)k%Pn#6nCiF--8Q}gai%^`Xu2WEC~R#!u}A&uO~dYCPuETUc9n^=bQar#TG}9g*G>?<@B5|SS_=-wKzBns+4z9 z)ig<5MR2-P1VMV^Lx%%@X)mg|djxy8Uo^jM zp}o;i2a^c?h0&@g8M6C)$c;;!)l2mVR{gXZ$F6y+?w9z;?VHzsY9BM$@198ic{*N| z0%&sOrCP?WYNfgFfQAq*+8X2tIPAGYK5v#J;-&*(dwuyPv&a4g0hXe~%>|4Oj{3TP z)+MvCea14X##0qZ=5Em?7f?xR#|vj_moB54$Ru8QvarPtYT2 zM{t8XEbILxs@5Krow{?ubQz_k``0G00qyQkH#(?b5^iiV|E#9V{TKtX%;Km$a-N*f*H_F&0PO0#CJBhza>zhIKTQ< zBiUZ-k8FIirN*ZS8&i1`Z{GJDNGIEilsR0CQK$%cz5sRxJ3gQ$a2WwLVU1EwEK6y< zl9Jj3Zpw=1M-z+uYG`9)^8^r9pbdQS*QGFGH}G72t$MMhuIVf)aiqMvsoE7EZzBTIHi>}s9TRtxlWNYi%&@HX3r;Due|4l26jn^7XJgK~vVQ;8k z+&DHIAH4aU&}?E&gl6Z)3fn9_ooNtPcWDc%MMx&``am}|9WI^K7Sf#3yshsiX^UjJz^k&^>jp!Yo)g^-9nwK{1;v_-P<$Nh&k7}{hMpW zQTeu3+*kU`1}S}cg%%cJYKHnyV3VWd#aHO7SzSE^dX;gUGc-gb$3{n0P5X;qqUX}x zBYAIO37Zgw{#IPbkF3Z$K1<6ydU4tDd z(ir_@oj+rvB~8-Zw)jC5^sSBfuW3t?h9G2r^j>*Kmcn9VnRZVj45*Ow(F_o8(LALw zWx^0|a?bjv)Oqf8B|tcijkx0{)nlt0cY$?_tIw{QJ&wrT$?ek$1?Gu~iSm(?9@udf z5h;JAti~?E$WJ%ePD8_tdLG|esjOKm?J>mgs+Y?;&fB($U6)5>Oh+F~D5k!XHaCtV z;3}?HxQSJ#cS7sA?A{hhC^Da=Tv?%{&ggv1iQ=YN9Ar0IWw2#cw8wCzHn_Q$Upn;J z`FU-i*3CR=z~kaC5^FkrO|KH3*ZlEWic;3Ti^L(iO?UCc4AmRz)a_-h!?)g2G@@gY z#T(nJ{I06Cy4u=q(E($;I>ToO?Um0GyMw+Esr{8Jzn~#Kg~Lv`N&#q7u^NKly0Sco zINI4J$A_fz)_&IO?$Obg2BdmeN|jZtQLAPjkF<%I1<7sPJt+^>TxA=rH)~BAMkln% zy0%UvZ{6SdN4uVq)7Ve}aN75hw;%{CX-Gj;w!L1>`;fAUG;2@^p( zK&!ySuy=eMn3_syVPSEXKtyOp+(%(_sN5*(|CSC!LA8hX+? z1Ar4%(^z4BnV1;kJDN&4>f)IS;cXDfd;~>$ZZLFSp9XWv&f$hwM03=P#&aRjPOX4#1fm^5mlL)+zKg_od z9Sr^^*e?(Y5zkN{9xebIlR_SY>PF}H@0f5e7_j>6eQmBT<^HJ`yyTlW*19F^X|leY zmXjMI=y^dTa@|0XBbOS079(?ia$-Ucm}6Y7PFIgoTvYRswi-!%DZ?cfUuu2DLiCy4 zxxFb!4Ai$kAaX!WFEH>$gpzM$mB9xw(*85`&IX`ye&4g~YC6=}$WqLA^d#2OGY?P1 zS+mf!sc6=?B7^D*NEUkFrvR@oAd{4mk`gcCC9F|l@+l7XPB{;W3_YS%Q?vbjR1P8% zLfGfx_FuEl>CK*896H=6DN^!-fF1{20BB9t8!Zu@NYB8CxXvECKhBPsoqG240`%jL zi?wP2^DRM*Lnj;mkB3mdOl^1Dc=@MZ$2+n2sn>T#i6ahYJ@qbF8xL{CsV|4W<>W+M zrB3`o<&_FbO1Pl$H-2v@011NdbqBPt|DpnY*zA-%Fgt?24C8~vv)1%1%_@u5cleBV zalKx;G6-5*a!P$Bmkdfx!Mst3RU&2S+Rt~JBXV=;eUI^hHnH1$O>xGgrAXxE;7~C; zIlKZIJCqQSl>ssG@5PC?P%&SPlQQn`<*r zFT`YJWn-o$n!QAT@$wK?S)x$8{-yQ4Zi9;=E4xYuVCD+rPS)4k{_?hpw4L4E27pze zTi0ZXGnn}N8gR5RR)8s?0EVprbFI1$Jj z&sQZ{wLZYqr*d`%xT!?0tI|@ok0M@8gJai#f}#t%2I?c-snabL-G7;b@4YrMTKp3E zAPcrT+elh%J%<9ZnD{KAU7Q7&@{_sit3V(SiPA-_GlzpdHVqIQ_)RPi9^85sLBU)m zue=3#M;E|4+>ey9xw?2`F;(@#x{MGuQER`7uAB4dYSB{ojfhcyN*M4Ei2*|sAX94W zmZf71Shot4bL3o2L(FcvBN*<})1%qdHVj{ZZn8I3qJnM?hfU zGymctyz8j4q=W=Gadq-DO8$LRR7Q1tNP)!#FcS`v3`HHc4-MTD78Z`@G{&5sp5D7U z-!+(Rc%u>y$^g*d;^T>i3smJPl=VSv=Zb0jL3*xXd zO*~etJrti-!tfN^1{`v9T|zuOsM%ap8L#Ce9&i|{)!5u`I@@66GWqdDUXc(7>FE+L z^0$mfSEBN>5z*0jfZ~RyOVC>b_X_@o`SxU`hH;sy)5ZEa6j&F5`}HY!b2y{v?CdOf z(94N(iuC@sOp%)oXkVMv@8n_KfN=5wI|Jk=y#E|J9C+IfwkDe283fOGy)&!R?rhN& zF}uFF|57dR3Xd9KDSs}#92CnmWcU_#{dHVhOKW~}GXxk97vSdRBhuGb|#F!!nif93-g()PEvP^I1D0l)1F?C9#n@2^T6l?gcS zn1q6l4_yEMa`)!;|G#x5{;SMTGQop((_VnAg_<6}bG)8mj&Wf%zu=yUaN3@11(gD* zX6?NRoa}C}E!&JE)js^ktX8;@dVeLk@ST0wLoC0pV}N zrD$lF*>wp>YalRz(~oxdZU-QE;TA@~IDP`gS(6`W2tY&f28>Pfv@lQ__d!z10A~@9 zo?=o`XnihQ*KtJjd|G}R!e5Q4dkdjJOJsPR$UaF$eMWTK)Ahzk` zKB7fRApu^J9#5kDC)`~O_C$ZHA{&Wf5GUS`uq^0Mwiod67#$P!~Xj$aFsCm3|FUfpY_++5pQ~-q^8JUbH*_AL!_bcXIVR29Y>%_T-;n}*Ct`t^dcfif z+IqEeBMgO7G}A`cBOAc9aO}bv|M!4NeWaY-GCNBVLdY5brX0Wll1V=Aednt%G3HBM za@c#+)^Q$pZk5&)f-$Y%Rtd{n_oShv{RH@J;PyxE?dt<>gD%{$FNPc!M`OD2!XEs< zQLVh<0XGwgzIa}9$HyCF(R5IYOa{{ZM-Sl2PoXSR)YnkF`@bV+gl_U%J6LMC8C#WeC~W$)mC1fij$Gu!S5ZcRYfv;uYFeq0auQwCHZ*<^kdgEpb( zvBsK306p*!DCzPfPy+Tubagcy-vG#0Q@6*C_?h_b0BQZX-c{ z=iuDiE`P%Z^9K372XKL?U--P&#P;_mQ{1K@*t9kU>ik$7eGei8q;jBEoq&k~nJqBS z11$83#^WIl5zn!M87OVa%<%q)NcR52hxA!OQqlqs0vCxz-j=~=bbmyzi+xlb*LB*4 zOV|{ClMZ#{nh;(7n|zP9%P`*A7T}$QTgF}9m|pu~LWKW^Zste-S2rvB{F%e#9DrB_ zh8UNf+Er<&1AR|`YF+za9*d`tJ>_{xC-rLZAQSARl7&mz1IYZB<}$vT2bqKWLhdKn zz=^Upl!FDd#mpmNH8nNBrQ?881@W$P+%!wZzurC|R~YL-t=1pfzk&@q4$o{ev3+Xf z?W#O(n@zqw-jwxg-`sw_1tFANfB;~e!o5mh_I8a3G^4om!pnT%J4)UP9gLT z1%o8oEewPK=*VR*{tPIrYXba;G3hBSjSfsbzF-QWz+MY1>e^^gQrAJ2(xXW(OTU-G zawl{4mNsXXP4NTe_X~U98EH>xCVmQwxHoyi_sM)STP1uykkYfo@Af^oz7Bj12*{N) zKoq+JiWmrXc$MNb>h%VaIHfDr?@ zPXF_#VOko}A&BGs)l@I)hYwK!Ch7!GMW%8Dq;AIx1jjA5rba^QB~G?azPw!(M?MLe zKO6KsI!gNBa<%7$3w(se{RP+wJtHHd()ipJY(S*o&9Q^GYd9Q~(GX$gB#4aVS8BdG zD>y^eqWEJRx2^g!bG9Bvg%;1ICmMYAGn>os%X{3c*q#Syh+PqsB`in!W+0ChDa;&h z5L^SngU$FmnR4LMktcZ{IKVv_L2&qi%$`J-4$7v<#Q^ujpRqSXdf?7Z=6B?9Br?Mf z%c|>~13(NtnH4vf!9DE0N{-r>ii%MiN+2r1Eh$HBdwVvriCkY5{v2Q&74rv@p=^$5 z5C|_XFF;VWZDS*cC(pvkOy9dOfN7;74G)*6*;(uhS3RuFX;w3JE-MMfrC!&bVT4AY zf&vr~5dO!gk*o3R`1l#H`pc4|05=B;u;jES&;tF5ii)a*id{uqWsz5s`SRCYO5p~j z{h^`f25pU=muGx$e$faD3bGmX5&?hO*h%E?^n#;e5BL6?UW20pWI2vI;{6~Gt7LRUbg(VK61E4dw&FH*!geFp$QtcP+RpMavz4kFcJu4#tv z@9K>}fYAhAUON`;lr3GCHa6aYS|v(@t5VBsY;4?{#M{5NZ>@IqDDe$n^qX1#^G89U z{qzT9K$imFlV>&f#0Y`{Ag1nI52e1ep@LlSd_K<$J}{67PZJj)&j&>ODfqboYm=3X zv!3Uc8HdYYVzZ>_3?1ZqSMzesYAb;7!)GTMLozZRzyY|6+i>U3#Ein&tkPy}pU@VL zLU-{r&kLMp;cn0eX5sEkrqBa?^v}aCFZVAF`VBy+bp`zmHA%QdMgzkQ0r4*H=Hvce zf}vF}bYL=StQIo-g57YwQ;(9ozO%9t030y|OL5X2Cr+Z~MXSb)(NcXc*M?zWf&z!n z@SR@w+%zU@^T8t^+}<5U9kBpXrQbv6d?-T^Yatk0I{eR65i$f|llEuo&;M@9Ttc=hI*>k63Oa-sPQM|#%Q5eWe27bvh(<8q9gyPec7_IY})Da_SMZ<_<{&==V3 zv|0BB`1s~Q6@F5p(^!#mz{gGM5l0y)$lJ_nZh!kT9_>LmhL+{t`C<5;)907F%0Kf; zIS+AOBF%^v7MfhltPQeCXk#KbHzExuqm6g4Fb$P4{Z}T}4 z3PnAJ!N?J4IK+Wf0zLv&?u@%XJ!zlyeRH^l*cx^qHYUm9s@qY{u)nHSM^&$5{_$ik zskEw!<@h2se6Dp2)k>6sK(D7DIWoDRqc<$>JxjlG>H`9Vk|Q%e-t$vE%`dkKg>9>c zPh>i&#hEA&0el7%Uk0E#9|x=g7*b>eo$rztKLc`JDi zZH;s{xW_|gVeRn!0$*E^M>0$M2rp*JVE&l2ut#|4NT{d}1O>@JItdC5_0wWuwG9Uv zEjWGiySs1|9`2K)#jRn8@y@=3MfFhrAapyjNN{hagU7WtLVl3j6Iic6bF#2`U}re# z0s#z>^I@9tIt22iM_F&DiVe`sT8mo2YDihq_8RuD4){;r zNT1`L15AqzIyq2?H}RUQ_N_nfLGU!Xt`kNn0PqMP_R4?EMK=wa{&3dj3tZ5eJOS3? zy@f!^bjQsPA%q`6WdgCi!fL(>rfx)gPjjG&(AC0^Y?mzKc8)0k($s3U1*=jb zd>}ZZ&BMrzn$gYJtA5UvM-s zx^f@Cq_n=4z{cf#M<8&yGVvtTdbcR6@|VA4&a1NkY#QU(X77z>?TL%a6w49U&%Bb` ztL_YdX`2#OXNi8JCW5QR}1Q-FsXiM@Vs(H_@L61emXG2x2(})h7C1k?x zM4;HVfiB1}5$!k749brL6!Y5bxC&fdUY5UzmZITv;Us>u;-ru`wb(pm%YUTJcc2;N zjDk!=I}z@45;4~U?e^j>{%Ns~Qp`hJHFtTA?#V}>zJ3J&+x?&Ip7GOPQJ3*8O?N(d zgrYyE!6mDUNe{msW}fM4F6@Riwj#(@DX;sT13(iFu=@iJ4qQ;MpF*K{fCC5wC~*li zu{gm6~6obo==Idu+fFQS$Jdriubv)e@lBIzVq$3an1< zfRoA&iuwZvHQ>(217$X@80=%)ssP^@^;%1&t5qfii(;qGqVI%^t)tzNtNeDCppU`S zPUZCG(emo`PWs7AbJY9b_xf2cD`Gq+Y*vI#>o)j(*Vd8i*Vk!4nE`>D9 zgnNAueb=~Z9Sd$_O(ZDY*Y&WzIL1v#=u(iVH(acb4rwDRHn8MRZn zm(>5vU~VKmb0ahbgRLr=5P)ED4JQ_|qP`wWgR8pBFJkKngU;o>w)6TlDAneLM_~TM zkGaGtfJp!gbM%yRomE7t^D>hO(gNn4Y&II3at*B2zq+Y4rC!&EY-zpDyS$d5q5kQ~ zF*)We8Jm8%FG>;q5<7%Zb<=&QmY(b`Yku{WYl)rVVvMBRO(t|NGife&{6*TllUj)mFxPV7w*A8#4P70t5TAuIU<^H_b_wrbx{peZ3 zI*q}11#OIRHF5?mEwHf;xwbw`b%*z^cY%qG*TLfVeu|HDCHviVugJ)?kdcvhb7!j{ zhCBhI%+VI|eM(eJJ&K$AbF6gHQvp&mN)M+HUab~dmA+reIkk&HOgUX}h%tH}M@y^x z$rfl>yWuOWp@})e3f8DC-C{|L!}X1fBhH3e{KAv!(5kGMxLdQNgGdlSzI5?br?Dmy z7R;rDKoRME2{er>;a=evDOXkdR{tOxasoJRb2yaqW z47nhF-I=O2FP@p(7kYhabQPd`5uQNGs!~I)J^lR455D?F1-;8dFtza9lGOfr@RIQ^ zt%{jbJ+-{Qu`1z6Uv+u3{$@e4%*Q1&^Wa8nSjz`?W<8ci8%r0LcomusL?DiqI zD%^>@rNf)cEx+!2eM}6SND^b5#uOq4zlOrZD`3Rt288lBEx7l`WoF8u_k!*FOph)e zlm-#jyHo6l(DykPib$|q|29PNQ4M)gc%jeF%A5>*Fw)4DSB@oF2`hw#>h3lNr^-z$ zT6;aNqfOa`dcHV)r;vx_UUrPaBAG+A7<>Y98+&be3BPBIG%{G!r`H0(nq{ZK7NDdE z=wcSxG%u;9ww|6pdeVBb>yaUlXsZ5%05Z5-8-JyV_MK4k3qAy>;m^|Igsi%ZqKUj% zpE0^XZ7<@s>fdrd+$FG#FwIkb;pJL)!_fc@05g`aBz{;P!MfWM^@04WV&y!XuZ-pv zj{-R{6z6OhFM6vpg%{#2X78GAOJ2`Vt*N7%8fFnrST{Q6GVA;E?%~ObpR3#XruL7~ zG4)l?mlU;O*1qou3@=?=lx25|r%rb3aed!RwMqAWiwlwf6NM0%PFQP<&xr`-2$^!d zNq950r292xvG9lG;|GYCecS#ZDXCb+nT3BVlKcB>NA3Wfy0yCV!?w_+_R$9m-e@4a z2P9|VLDGQRMHN*n(s}@U${~S#kx+<&5%cl4&pdJZGW+}e-@Gstw{K`bkthaU=#sJ2&3M7$ zOl{#~^-md!uGTAzfb{I5#(4w-`>*!qr&Gch(InhiGp_UbSh98u{_1sjp-^yzx;A6w zyxAuTPb;)b6NqHhFM3CdiB`=Ta@BogWp2}j_5Tjo*8ekL8~p}DNXWr6K&RFY8PG-n zVF7=t9En=ZCW#fkObZL;82T*BC|y_{HGE*a@iOFF?gcA7;(d80Dl-emZRX)>UZgqJ zgXst-txjN4ID-9xdvu^j`*G5pCsz8TU~Cj0w@j*0m#)7(&02mDOeud-QfWl$J*2=G z7@AXQytMpb2{t&-t{!^1{?W!77*wmQ=d8v}e!onR?AG3q+64t!)-1(P*F7L0bD7G< z?Dtf_Y|8uO?fz4J9NrXvT~udpiaDzil=na3>dShK>EFHBZ$GfHU1li+d@-Kg&46x7 z9AU1FFNC~Wsx_(5bw~O%pdufB%~5$v%d&68QeNHbd*+gS*C+cnZR|tcp+9es%O4!~ zANP-?uCX~2DWS<=JOg~J{=BgGJwfl!@84DQx8#jw3FODRtls0jVCX)aV~ys2C`Z>_ z_(EbycdnD9r@NX*N-$lYbDI3!h?D$x=&QpB z1egRS^>Q&DctMz6z1bb*KmXOKSw1 z3w_c3u)e*3ghj=G`?wnUPqwD$`v*@WhTtCgG}HtM)bD4FOg+nWYypoum9R; zwD|``_-GgDwKFPjYq0Zq+NXjrSKT^6EalPEZeV!{)QVKib9z<@>xkE<4d(e+8__<- z$a@97yy3X0oLxB>7TUz-DCz+(dF-R!Bli30t8N|ptdaypX+XpV9&f@y8=Vl zeEiM4!bF3a9qIYqRFwjrwAo7AETn{Jx~u8`6!Z>NeNg>w*Z|Bb1#T0cm~^Wg zIsK<*C$yf`yB)ItasoL^I&YQ`7x$l1&(0nrv$moC-n{a-Zzb)#LrjgumtLJlrUo8=;;YiYdVM79%+;)2r)Cb&*B3~JB5j1tS z@0#1^JvD$E;(-n(vvn`H(`2-e7|yXwIs@NU!)!sM>-iHGGJ@U4w{ZOrtVQYC+~#r> zdsawEm-! z)GL4XueBpx1J3pB&>A5^e0J#;lpONU#-E8LrTgdjwi>YU@;(FfA^0RvhQp1Ko_UX3 zEpB3oX)&q;ms;m@+8sHo5D4a4X?%XR`VRFPPyMBlEdS2K*QSE7fzoV~6}`m$KyQxj zx$lE_y&6aHMTF-FUK&YouK{P`kM*7mHT%Wz@0VTxermW9#N?lz{uH9Y3%zcYW-*c( zLA^=j_=(7Y$&R-L+@NASSz;Gk`|;^k$71@h7SQY$c62;1?LE|wMFpfnn9()p+W~T9JD}1qNHPB8 zGz4uonxUF&9eo1faZeTSj$rWui?kJe>dI162hL)@+OzBRJ$8H)_t5lQA)U|M{t@_X z9=X-2=DKxwA#`IDrdFDHxTUYUxsxY@%7eGRkl&PFCd|WC?$=ega`;ory?EF(jC&FbS;z;5fA|p zQBt~5N*W0jrAts!q`MZi)}D{=ch1=7>@oHj{_(!L@>$P)-!rc3H@hL8sNH`%;=eW% zCnTd-VAof7`DI1Z0D_DYio1Lk+M#kLCX8U;!)XCI6gUsT7J2i)zmPt**#T4~pl|~A z*`pKn+ZXUbY=4(M;R*W2aXI5;$g zj9|XYmP9?-xHjW@$B;=KEH-@-w~w6z?p#1R_4kDZm85~`_&ABa!F}kC(&5c7BG4yt) z=}~IB$wC8v#^(fgcSofsn%qw)DJX_|QQ(Pz&zmfPvGIknXWDpE=lq}to^M>k z3swO!j6W3%OIa`$a*D?v1%E_6`p*xP2|ETf^E9H!Et0r!F)VANq8|)cX)N!jcfOWr znYz4{my?r(KGvJu$=f{0yOJhDC+6q778fl_osz%hyFl18CXlTf6$HR9QP0H-U`IDw zM;{*_XM+ndr&C6wK(f2q>=oCy3Lf2EFkB1(bigz;~zF92^wd zffg+KhBh`dL^|3?>jpF>PUW=ecF8x*JAvZo4lQYw7}U&8`kcAPlgpRI#p#oIO<~R8 za~-)oud5S#BjOedmBzN=;b998>5^T34A@m}!v}#CU{x-fejlF1#YK!f$;Red*VGqS z4QyxecuhZrA)gDhW7L>qCn&*!*2HQkUu$!FyDhC;(bsxso?_v(YP)ZB<0Z3=;j@!H z&>RIP!!g1&gELpBU_k>ak*c1qS2pkxtkj(auZt@$J?Wz;TF_{;Bi{i4 zcwBMVp1#P}AB2kA#k4E(nF5L=Kg$5_zxZh`W?iP+hwkJ{rYt@2%xs0(hdz8NL0bWWwHI|D%%%uLGJ6n!R_h zA3|=yi*8Q0s<8Q|gUq)-NA;5D(m==M-gGce7W{c!NC6J@2UsN}lZ1;0We zW3w(-2crJ`^{97iqwL~;%VHkrUsU%?O$w@<6>JaD=xIQU$=|*mVm1*pegg6w`2IN~ zWo!3e0i*zogRtJ1Cj5eBk43EZjf2&wzJ8 zC>HNMDkzRD6UJ)4nOGmvQ6`Nc%MqS{3yKHr^x^6#h_u79Hwo^oR1tui3 z2`?X?E@%&v?w=e=p{1c9dw!xl)jhzSlp-g1F4?&5O6eU8dL!jG*`Dc67i#(Fktkif z`J@8=^rZgh!lAg#&Sr>^X@#9>fBpJ6s(*8RL`)v{ps4tu4WLW_#XWB>4#=HQ%^3i>JZ*xmh25QJ;T4aM6bqWLihw4bc9Y* z-@lWRT;i1jX@Qq${r*oNYe1v@LHYg z=jvEL{Dbb3%hS-P_dmQJDXd*U1?nmVXl#;=D5}Gb0{83QcFB2{@87@k`S03e2FpMp zD*EUzDSRp0a%oY_I2_`z$IpQ_m~iDYd=%@>=ax}YWcYVlK!F+yU8g~dp!{~b*9WbN zwBz+flM^)fxOw;9wE;+PchdU`_yD16JaUp#lahRqyVpV!q8kgzD@+3M0@U z`=D73Ji%<`1ontHL}sXF2U{Ycdi9yxuCBaDX*#s&dTD{M+oW?JD0exjhy%C3a`+z> zE)Uv)91tFuZE*ss*DqV6)6m8J_e4M;p~FBg`13rDl^*Z?pdA9(Zr&eM zYotj!z$YP2lR?-4y1I#z6PWpAbL6S5Xw<>pLTzAO{;Q^(94c=b`5Yq%{HZEFaz}WA-YWA6^yAos(mUSV;h~f?oF)d>|a)8zAmzLA769V$Cr_S~ zdoF2%rs3R=R1t(?icm}FZrNFYR=3t`g+| z2%}Z&sOTIba5oP=?BEPS`buzl;F+)f{R5+D$W-w056&Qu6IBTAZuwSLfYz)H%%eav za!SNFKIu-r$pEjI?|w2jJNtaVTpf^;wxJv=#PCwFSV{n)#t5Ig4etk#j;C>PA}T1M zRyeZ&d19Bnn*_iH4e3L>)mYaQW1S z;5@O>1RgOQXGvPeAcyM^nF`E45RVqpf+#K+JwueeUjW!%kO1Ay)TFJNTIOVD@4PnG z48KY&suiyl8dLm^>3)8Gh~{;Bn`=MrbdVFogRt`nIi`otmFaTDjJtUyzJ2SwyMTh* zx~mzGzm@&zSVk->^b+~dA~({nC3hn><;D2}6e!i<>gOicdgk;lXuvJj-z5XsOelow z#bJjKLYnuf3rEW_Pm>d9Oid5FP|n60p010e5~^!p;uU*D4M(KV z?Zk202M^{zVLP+Ia)vX>{ZjOf5AZ!m;d|ExpNb=d8}M9PK&qAd6j3fcSGs`DZQjIa zXlSUgaSS3nMDP|f>E^|H7VmzsLFNGgu~+L>Z@NppRR?k7%@=vmpoKr#>S9sYs1b)P z0D2ILuCAs1$AA(R950?-{+2kG{^EtjN5j2gy%}`sY-l=!%|_T00Dpi1BVD;uMq0XQ zBzZ&!dZg9PDaz8mvCp3uZx^q(EyP`?NQSsnFKyTqA}{nQGy)!jOti4(bOiyx)#Xgo z$f${7AXX6tXLrg1`qP+2caf?4-r$|u{hycd8-G(Wm@PlmP!yEEtIzN>L-zME5pL4f zTyxNIb-&&4C_A*|Ay!m?*7g?c0$C7Aqv6(3r=){?FQpxT31r&6+WJ+EX&c~HzDQ5+ zSc!oX;eOG|A+vN~t(=sW^)c)fj$TqzaILS1i;vr!rb`9T06>O)WoigItIt5m__`Pi zC?eMD*T34Frj7$EX>)VtZo(dFf7S3B2S;i#N~iweJTdTjZ7MOLp`lKD=nY_qKy)l( zhy`j*@xUAl1j5jQUlGcEhM35K55pC73fq^u(Kxc6DU9RaGzA%3_%iyOvQ+1X7urbbEEKn|m;6|7b2wMom0eBU^jQ)_$@< zES6F1Ni!D10MynlP}TK;Atn&cNQi9({&ih#1i|B@Kjk|9@w!>Snh>DTt|0d)u#*8; zgY4TNCV>o~*rZOo?3^qVA0hCug2fI}nOsip-+58FU2UM{M1({CzzrZG0@ZD?HYpH5 zKum|=mkWpPsq2oQFFo}1NK$^7n2*x7x3XcxiiP_ zqTx>ZjD^^6MXUP5Bmj>8?1Y54MHY8^oBlFFdG=h{4546Xi zh_`?&Pw&WEX$DPB%a<|WGNfx8)0~&b!LE_^973k^tno^7a~b6D*^n#%V)(rQGj&)B zV6ONkRfe{?d%?`_3on?+!4-4tmLd|K|h#K(u?{-mt#G zC(r9ZIST!nz;X8)g+qN9><^B$Ab2X68q1u%(E}HV7xWW+@Nm$E5hI}wFrdjG$)}}# z3IYB!ERGQ;MkEj{Dr+JJP)%dC@$cUaew2`{(8oFWb0c({!<~gQI0`ZJ2uirI-Q&-f ziw)b~ZumQu<$~^v5J{K*iV38s&Fx@!dS#FxahIYCmLnoSAN{n2+Fgtv3Gadv6wyH9 z;Q)D~zwXfkWb&Z2eo|NGmo#4Bz%1#T;pL42YsAnk@~TFf-FX0{0|@Iu2?G}3-0zx9 zwN5IOR8+LF7$AR?m<2yTAP7?ayZK&oEcEn7vlBwFK`kGMgzp~u+)qVR-Ed9IKYlFk z^U~7NqHlh;`DcnVUdd*26hUi1P3C^)3anofNAKp`uG@p4%66Z|G4q`v0HN-5U91^e zN)*fB23>#5#maxQSnz5XKSW{&)|dxzEOe$GWXz5 zDh8xtd#t%YO@cqL62Lu)rj22P>jxDSf47=XH&)Vl)#Kzn0P0k_DeH#loFR!b za%?u?T|hf!t{s;33gA4f`?VO&exJxTY5O|kBdU`)3YK*9!C{cF!!{-vLC#_}ga6g3 ztdUSgrdj)#nmAm!oBp+mUrwT+6d_21mkmSVIDndH=|e_F>`P#cg+-FH6s~YN1@J6J z%VxHK?Pz!0PCY~QdIbkd^ej-{3zHXIAi+@X_J92?0fqYi*lN1V7F?b`lvr9?N;>M( zoY-0T+N>23eEMyETSW>b*of`lrL`Z=)9C2J?r8C-G9Ejo?@y`DHwJh6muaSqu0t%| z52Xn0UolTZj0Da~%&u?CRbmhDe3jy20*S7JeQj-CPw6yj3>T-x#u zykrDOt}}q4wj2bII3$At-3}KOv=3jWKI1(&{Mv;_;P$1%szQ8A?^lE0&IKwed={2; z;ts2C;(v3qR>ld&)39&2jjKuFX6XRQc?Cp8$dM0f<@tRrhIH(FQtm?!k5)+I`I?V4EK-5x1cVhKmDt-p%+guSGpr$7|fmCcQm9+hO1Kh%-5Wn<;GXp$KI3e&E9Jsr!U0q{gcYAew zP+MIxcjc^X!2zRAu39Vd-C-Y1HuEp|zJieXAwz{yTy8rCo`=}HfXv_@K6`y*!)@!m z*f&3n{SiaX+MWccKS3f&4&brsqlK@>@1r@)n>9L%mN54I*z6^K&J_;_I46Po_8iJr z@JX2r8vTV}X^|J`I$4s%Jc~n_9%rR2An4OA%;NUZ@V?p1*U@!gL2dO&Y_$CNp&k?q za(Li=NkIlwbWj2{w-piA8{(Mo9D6~(hYbL1iv(K_E)I~)^_TCG2T2lEZJp+2E+)F) z9Lm#RfjnUbHd=XKUs0nPSC`r^IBzBWC_w8R5*bMZ-fQpmUk-f;i_Y-_oc=MlTww3p zgb>XdyofKp+T3o{FI)JY5{if{KG^->@(6}00=XLLX7j$p58Q`npjKnl?LalKYmhN5 zH4dCb)pu?%CjeM$ci0mwp=Lt;EYH^=bNsTHnBf96DE%=`m9D?Vfu&9XSS)D2<3lUy z!^5%ymtHLBf^F>VUisaF*cNlLqk+h3mu>D_Hf};_lZe(V)5=z$6>(*R+b|ORo^&_# zOOdkI^zw3{P63xXi<#69II7~4lJwU7G^7cE%qS1!MZ`V?=XXh!&2K0{0Qw5{Z1p@h zx1r9h-ku)bs%BU&pep3vi(ywUBcMtQkBN)xLi{}teOW;UFMe}Y-^7Ihm7;ckef-Qg zGYQrA7d+B*{M_86fKdyTW4-QWrl6ouM{>8TBgJ(_PUmS%49{MDw)-(C_vs%{$Xth7 zVkjXQ@a;gcoMaScJaL>}L_WB=9YJFMX%nYOMtfI8Tu4aol&qb@;on_Ff&*IS7T8*g zFa>JcAJ8iz8U<~&!>#svKd*341~8pl%9#s1L05D(H@{&%;}WL|xBMpD`UnLU@pb`g z3!&PfkB-`Y{;ZSTx`e`hunN4f=i-+}oG|+C?qE1k`Lcb#82otP;j*nRSZi!cDEr;^ zC}3|{FY|SDz{8Vt9$M_pgWtEUBK~fT?jIa{-I9j39|a|4h4W7VAj>BDP8F7QWmGp} z1>Y01{lW#e;2dNo?GSQr!psMH_Ch>Ba3P#Purk;Jfd1)Ir5y%tDCQxU6NufkQNJsF zP1~M7f3A(Sfno;{!lXMA>Ou^Z@XbFXxuNA}LWmVq=KLT?wjHq!98XN19@#aZS_S}C zXIKElEdYJ5fZJ(zW2$*b25YOVq?E6lm76=T$MSqT4f`)ygnBF7Ax7)^6_A*!1m&BT3>|M0pB4!6^of&C+%IQTh_sw99BN6H|q=Jak2E`b-`k)5-+Y?k(mSMQ>$ zu)pudxy8OxX>dAfEcv(frTlLUNo=R||3D-){(8V}uE-J;204@^gj0wkS15RH6%xqh z=4Mld`XnWzv}bBzlKSB?y);2Dv?o_;iVui2n!L66J|ib4^sI~~hVH*S51Q#cS~^~u z=h$A3jjZEQMOC)Rsz&Un@Fe0Ffe9jDzRssW>2wE>LWM*nP)PtPW^kGn>ox-stZI3q z?26uMJ<~s0FceCTV*Z}H8$sIo;>umpaUwXE=Wk%DMr2_~j6BqvAbgL3G;aK&VcLBSau#Xso!Zzk3%G5`qIGhDwL3XlQ5v)c3UWXW+P%BNTYp z*42OLOxBP9S|}9RnlIpk=>l-BRR0Hn6DK4gfs&DlsmKH)aQ%A0cT{aU`=`MAyMxw1 zIShwE7=#ei!E!`Mno&;B$L@ou5wS^~FqxaFfw`Z$>84P8_0~-@RiD}RsIdgp=RtuW|PKuU6vmNx(1-#P$aLKFoYsmOc$5LafycS@=i5$a9YKtW8ug>ZZ! z&x9Eo22FutnmtoL5u|lkSO(NS5RMqXecxq9NncIV?ZR4EdDftDg`m7GFFp7f9Ql^u z!CIb!T+Gc~l%nGvdST$I9J@`T<5knN$lhmkD>Q&a;1`p9B94l=%AAwFtU7UAU-Yw9 zGP%&VES`&pf&;d%a;hOUYLbQU7{>by8Ld=vLqb5@B?e8?mDg^Q4RjEW%GJ33o`&He zV3R|Neg_*XqE@-toI$VtI{QtLLMDxyRVxO zn=ns)P9RW(WC@I+^eoA3QFO4ZjgB9Ac-#T%B;xmj#ytE%jEk`S42v?exR8hcx_?X* zZ1^l|Yr~m3PT00MrF6;THeH!14)P---Oz;v{enul=JdK~(VVK0xx=~i=Z_9v&Kzw@ z3##)B?2Cg93tYdSBnhdtQYWzt13F3W=9M;4_k{Q%r^y#gQW<1?`ArKdwQ$`xVRY6E z;LCYEiecsYLbXBbA3&59ZZ7*%@qB4(fvPb;i&xsP!LLC<%zXa>`cg3U@1CAg z729~y!?*daq+aH|Z^h1lhYmU8p#=Jpn+y<+{)3FOW z(r)}I+A4NSTN{JzWQ}Kj%`Cmf#(8gzuMT$%Zl8>X>lQYnRAGCJfAi)UJcm_OwAQFy z_cz^g6ByMHvT?8E4k<+ZPoWF4^47CVea<|7Psmdb{UaBuV}Z`aGTrF>3|jv; z#Q1$s0fImb+<;dEv>z>9wC>bpT3T^?clj**SZz>7iUS*jUO~wN3G{5`cR~^C!T3C` zcNdbL$=lB*$Q0Ganh?@%k~qMM1k(l@+&-R|zo95oB46dT7gu^e#~A!5^I>>&?h{~` zhJKOx6qeuHK!hEXl%X(>%038{^5O*!v{XdJ#S3N50w1Dugzo2@_)u4e?u}ouH&7?P z=N$;?u&~c$z_wvD`kqTQB=SrHn>XkTXYA>tcheZo?nzIsKW4*{t$&&r)_e7rUiPy~Z zbjIjDVoiqGcbB0!1Xb)v6W&OOKak!PbTC(R{Rbu|&C2-o9vm@aXW>SJWEH786+ZZM z$^3;T12AS_C&++16J|i^-|QI!Pbo|vL3qY+_9OBe#4-$V{ncByC=u%6R~!0nBKMP` zbvRWPN6T1XJV`VV7Kwk*3;l7b{N&-|Giq!MwZ1O6FWlio;;Opkrpp1*+7;u>_S~I* z^b-0V1&Qgnaf;=HlPNBarKPZ_d&aD-qGu9p3P74dhC;xxsp#!340NgKnVC$l)&myv z)$>rV3&zozm0)FkT8`f$LwQrF$$Fso? zht_SVUVH5PRR=x{4qU&{PreNwb9Q!i6IMonQ#({z zE*E%(AaRtabmCoXuDkb(b|VSS>_{kaSVOR0 zURfz?XU7i3)&l++SD@`Mq@EnD1$(Vd+q*;z75~zX+Lwh&oL=k(BqatAIU;Og2w`yv zoaDfyXJFd);Ok2^1dM{*LeRpPhSC7NQ+|D2U4hd};}q4+hj9@I0!1pB`L3*g@PKJ1 z_tECJ7jr0J+=5C$xl#BzFQ6EP7mi0O!b6kj1}Yz^vW=50tsI(9T5o zrigyPyI@Z@P*D5GJx_pxkZYc^$N=h_HU@gyu)2zVphcX=F2GrN%ZpYaTf1Ph8GEXc z*P#=W2_+~b4pE0!f#fgnc&%pGE^`336Kgnqa?gLZ-`?H^xJ16=&T$^}`HV&h6M?gL zLzwA@FtbzPVJ&<+ZgkpF76p3yvc2!((8m#K(V6R;D9Hk5-gioSVv4B!@zA z-;kvwb>SW<;yQ%lvtpyELHa3z*@sG{UE3E};*RITWuvO{He}O`dt_d+UaWMHvP|_J zHONdV05Ngy`8!2#P1x?qv(L7#;hXrqj>vzn_TF|u_HK&u?23k%Ix zApL}q46~Ds%UdT0ySsv3XBF6hh&(g%7<$5~;#3(laVY3%7u>~l+(IiVGL&*F$q!Y7 z-6O|-;JtEEcgv!xAqvIwl{T`?*?B)@iyW|iRZgSNFPI({?i^#^ z7uG^#_O`Lu$S$-Il(P;?RjeFbb=5572SMB;s z(toxoHH=94=NHXCnXGQ)@;Jpj*UI^mS*08QtnT%Yz1spKvwKZ%}cCE&sh^(i=Yh z|DG)Z7$@+Pt1)%zWWyzbb5BV`(Y4*`$JcS#ATJ9dLL3=5(w9C3Ti570oXJNaH@1(i8?y=Ie_J1SA zcscjyMM-p4?L_Fb&bGAryyWv(Gt2;{#P2+QIPD_kOm_DskzfUy%OC^vZ}OoYgiXsx zuetHXe_+UO#cM94$kc?SdCt?*)1nUa@!{d{_*PAI^@zhA!@FHtsmnE&h~bWbk`Vms zXztNkIPk;6fs76_wSK(!@Z6YWg7S*^TSILCfw=E3YC&kS;$A(2kB^_fQll>i=zz^Z z4Vf!aQok>IEEPgRxO{Z@CQ!OCM;sWa=4(g+9JD)JfS{ zun^0?62s{7|AXrd-%ifbE?+jd#;d?~m8bsXP4-`He$bNtg9Gdwf6$75gJ zW{tOiei0fGBhjP$6aa71w?8;vC+dBRIggdnV@->mIoIYc`)H$gksQ9kYvs#l@g8pL zE^7;nzg%1QrmqF20Ccyuh5&Cs3q9J!*>u^bKEC7wG&?5(FNW&&vwNPN}rK zLz5!gg<&f>7x#~LFv3RNH#<-JyOUDt)CBN*AJe7^9^V4v;%%Ei!bv)+kV)K}OUg+w zbpVDF2|JHzrqt(%L@;BQRaoOQKpTw|Se55skXecHu?P%0MFw=tKxWMzlU*GP+DCaP zFnr{_=E}_o8tdyY%)=T;|1eTIT6qrWUAj4?2`V`VsSFaFU1lA5-TgxyQ4H#IFL~0s z@T_TPb7>=imF?k_!O7b9paz+b*Fjx}G^Rn=z;H!njY|RpG4!z2iPOrl#@&Bh%6!7w z)EAGzxa`iwdhu%tabj{RsGc`Hsyn~j-{Z^Hw>C&w;9!**_oGIo{YatFj z46ocO+d72_OU`D?+=!|I}i(-rxkOAMYa zf1UuwHM_~F;{i6RgS9xYRK0E?1|Tx9ZXuUd3qS6QgwlK#oTltc_2TfcufqS@RT{>^ zX#^!qA?2yzJ2U8R8-aw~jg1X*78aI-T~j8ACCB*aJt19-w)Ke-2CcW#-O zn79_CPt+@QzzA{@t4cRRAfeW)%m*S_0C0MsCA}!bYbpfbLa6&DH3dUiQ4~7nUz==y z*0`C!`&Lm*J4M`E)~!+8y`%e7BjNM!RtnQko~_VAR2Rm;aw!@(A_?zB=>&CGf~K{2 zs`LTt%yr(Eyf9$~=qxZR&*-p94nmMRior+a+h1H5>n_F_q%{2M5ba>iC=F#J6fO!C zIXY^U@1B)}U;4zCn*vUA{!cL+FcZFW2flv<+*b5KJk+3C0E8wDq~p|0!Z$U-Z~0Jq z%zCo|$+z{io%_Abbx*S|y4-kRDAxkFp8Cqqy9L@;SfwdNtZn9BEmc&#$bvdXM0Igw zg-fG_Q-R;TyV?rpgT;f1en_otsX499p@2b#AZcn^_P&ga(10c|G&))}yiAWXam?fJ z;(3#}j+iciYcT8e``^*<6gm7$437j09>iVwv0`Q8q_Gz%-$?}mA&^lpG@8R?MEJDT z+H+XJsMy#}K*GgLmI3?O(qFc)%lC?)ylG{s^C>rhx}h{_yygT*k1 z@H0Jte+MQJQfewLDT$f%@p?GZM!;=Q-m-Wq4zr@bi~~iHd~Ki^{%Qq1cS%jHr!Cac zlg)$a;C1yJ7fud$&=5%O(Il5bZ=@WWIq!D7W2DE3Y+JFMJW^{F3o*v}~ zj8asmXDq_^o9_8mzvCDe$(L6Ci)?c#57Js;0mqD&mCj*5?rd${f&Q8M)~tN?zJx_f zh*7#T5e^8RKDtcMKru?du^EQp&% zsp>E=#@PDO+vi`>qfl#F{UT40CxPsMJ_y$!CEGu0 z1s}rTU>Sy(l1t3fuCnY@-?mlXiW;P3TA$(gzWkfEB#5**}4%^ucC6Lg?} zDPWpb=_)z0=s8cuI=V=3!ULu0ww1!YaJzdGhAK1jHsLgB=NCu5PzR;fwvNa?%UIbO zV?MgDa_{$NeInOaKO<7)!Xiqm7n!D?LH)aJv}05G-*|bbl_?bENkYXP5n{DVL%@=7 zF>1{3kRKMV{9Cp2ey#+U1gPg_d>B4WWNCyjz=Xu?JqFt0uOLZ4rg_58N}tmV0Yny* zDHWEA*b!hJ7#uu+fttNL3K4m5(x=y;(PD*(=un>*QbB>{=QgxzV+Qoqk>QgF=nW2c zg{3kWehDFNl-5zV&4}b~}TsbQxjUto2XF$8Dz<|{^52A)GyQEJ@M#C|ZJ^e374gn6z zJTTrhAcTZV-@cumt z46$Fxhl7_F6JC{gJ=USR7S;H+q`$G^2D|5`LPm0S@VY$#0D>B@TY0tqOHb|`)7^5# zW51X71c}t+89bgo?Y*sXpEr>@rP^%s2d;<&$;VyKmM{02X~(`deh*hGk^o$&kIV`F zOfvNRdOyr@%nm1;4;fkIR|E8|1NL^(G|!EZ5(cQVcW$9%AvHr36PxcLG5FmNk_*r_ zgWePoFhduCR&r?)N;kwD3{IgiiSj#k+WOad@>}*Y3As%n4m#{Bji&H+|MS2P4>Urr zsebtIf&bu?{G#9Q@>?Ao&6})duTKJVN?i`W;=W(_gO!=Lw~gpdC)H&E^)gTr>su4n zL2xDum504aS12?6ZK}bE7b#t8T$|0k7jRC89cnf#Rdf$(p?XXArQi#Gv6#oD%>IHe zU%uWrIB64L)A@w9@^p%GjL%m~xZ%;3%Q2ls(uLMsJf8AMQhFv=#%$m{bw*W2?EQ|{ zeLIRFuX4FTfA7U#eFUeepI|W8AN`6lnR}l(>dWSIZSb-ZK6I-wN53#X)2wsmlH^1W zr71&QKIL9+q70_-^26S6od(Q_Ytlo%0E0Lx7b=HB0Ud0;L=^U#S8RF%hcQf`d!XA-*op z6fs1+*{rIpEF55cq*33t(46^l296>|tN@iXmP`x-11B%wKW6cjymDQ&<$7dOxw~HL z6)mi?dD0l^)?{OaL?do)p{_rw_W|_Z5!C^R{mzmMVj~H`z5v;g3=m%n4yti4^Q*Sd zbp@BZQ%}Fh$G$I9agOj!mmYh!9(_HD5qm%=(yCbBhKmEB2ADr#VOSpV63iTFLHmZG zu~--mSNQRZt09Gep6J>b%d1kpFX$T`f0Z_uLQMtC)dX60(zpMeT=8ipamt^46j?pi zT`9Cbd`nMpVZWI9IGPL)H0`RU3@yL#qwhKcgaaR>;w%S_kye=o*PZvowd?x8E$q>%g(b=5hCt$Kpu;g~)B6VTGcprTxM3?(X zLJS?=@|d;7EuZHObLWh2>|j6mj67C1bz{MHuB@-~*47()JQy2`IM2YByRn~IPDbba zCE~eQb*sGx=OkXoIG)$RP^v$@AJ(3dOF6Z=e?Jhj{6l?R?C{V2w@1Bx%yqkWObceW zHy1($10S)OtxhHD;msu$SuD(d%^@RqV+nI2zkMzTL$8;t{8{7!9^cm~dO^p7^9}BG zCX#;J_^=}Hs;iTM{R8RzgH|)ExLA$X1=^^eySj)Ldeez;ki-CZ*dPmB-xo>yaSBWX zgvpednfY*UV{I*FdfFlc?IsIC-7%Dl3lEfdAS#N4^V40Fk*>N=7^s~fZg!kSK@#=v zMIM{mqJ2C)!$3?0GGFks($LJFHrF4Q<a% zx3*(3`k~|LZQL_F;!UYcAs*8AGq|QtQlY5W1xStE~!yBjP|Q+J#4?Kj=>f3)~~IKwwme~LL* zau;tMAMf$)%bqV*UplUmsJE=4@u+l%s^4VclU>(Xeg2WJzn8v9@l%^7S?DX|!_8TW z$NpB8*J7*r`bolAu|+oW847bqgs`JQ;TJicKP+&kKwiWBdmye#cgr*3&}Wv+e+@(i zs4?CHp{*U%CT|1ZK6c`FZts4P+ohR$9%X!2?R3+y#w!|A@6Yu zdr%z{mLg05lWfTmI672l&sS}YH=CbQ#@O{0P~nd=SbgRcA>Gkc=enwwNs0wE=xcs! zLS!m{Im`Pw)D?d9k^0w5RzH+P)K)Cd5S9cGFoOkY>(5t8NzkZNRaMQ7ItbEBA1z)T z8Xkt(YKzVF|^W^;zD3>q7@vNz*H=HR9?vsAVd;n;7{HYC`IDCG>s2?hPj7ph;WE6NM1dNx4^)KkUSCgJ)eQBRVk7freGQCAuoqckBY0!t zAa_M3g}>XD0cjA#LxlBZY!=v(_v|ZD+)MZv5`45z6M;PLh29X6$1t7Kj}&%Rz&D~d5$#~72N=hKse;H z77N3oj19j%_uu5@NRJ4wVt)rsM>br>^+E2}3pVeI-$b8gD%Wmvk&ERF+ZVZVB;mbY z`M~#W5Raj=_Vc&$o#7Sga81tkisJ(GmYsGqi3?7-pv6poq;-3DnLzZ`XgI^uV0Q+g z!=;SPIv(jkT4qzC;UjO(TjaN^(s*`1E|v=oMATH__9*^UdP`>E^gc!-7j5w*ow|>2 z8NE8lZ4wwCnJi|@36rSQGP8Xxir+&}t@PWDS$O68lTF6_cvW!}}4p zW&A}r5lh29N=BNztJn0dzYT3zj$y{P#pWSN93lVe4DIWDeO4{~YD8KoFBOZ&=|+!P zHk{ZZ-SQ{ThRZTGr9L@RbM3f>e?S(!KT2ThC&}E_)`keo+B-X|!CGZw6NYqsVeA0h zWtXP%x6pXCs6fNn&*Bo+E`j15M01}Wqb`D&vaWq}ZEbA}BEDzIhk?=*6ciVjm||eq zt$SU`2KLjZPe^YY^t{k`;@Iz9*x4G^H@`Em)(0gRYGFNd)A+wr&|HPx>(Wi1_GW;a z`tPrvgLF9Mr1y=Gs-@1}Ftr1QiHQl34{lX{f#NO|O#PKuP4AkU0loiAbPA~CKaY;q z=u9aNzW6)!_3JsP{8QiDISfQPU*h6MmKe~X4!S%OB?*^ZZB7YG-^f)`YhHBDjW#w` zc$!>i!VB?l9NaILg@tK^goH|5r(jWlURq95^8yH!+A&Vc=*^=)&)R!MQW^-}spt3i_jmX7lml`7n^l=@Sx&0iu2f}F?vCc@6kb>Ffq#)W z71fXpp`uVS`GyADv5)Xz#{-=p{$HOPeqbKZ=vyrM__TLF&?lF>sYqF{v5}9I>e@Ox z6|P`VXVu$g>c8gysb&=YV^=-f3JjKcl(jt>`s@8O|u)myU58m!vU{09$~Fv(;O+aBn!5vAkf;X*$fC~r?2 z8YJP6hlWkL0XJZ%TVOB&Y{lAc1G($XarW0S4!XoVEd71gpbFnzbOJBTCdP^b{Re)HzZy^Zm% z)4xcU4%GBKCtxx{L>EbDy2rOeUcRJ=!l*ts?R<*us)Q; z<$sdT7Od!#`E=|@nNf^x9R}Li+Fk)_1$>g}hjkg+1w1{?1GM!E=P7n>Tr0I6$bWij z^+Zu{xI*q+M0@CrU(+XOwOe|=3I_Dkr*)}ev-NyX5flR~Z4MA-f@66n;| zOQ@-<=eP!ZU!PFodLd~Xshr2UkE%R8K%)g}8;%5DdMg;!PT7aZIVtVPeCwj0^RJ8U zHGlT!zKQfJEZ1-Br+C*ffk~ZNaR*G*$B*sDC?|~K+NYRA*{>KwGK})Gl%9U6*x7&a z#}}OR-YyvpaO-4yUMs($+3h4nB#N`>)ZahYdbTLC&MG5yH`?E;tH*%hh@1YK6I-5b z)PtIr2QOsrynDrO@1M&jH1q_{i6gO8i{dyoMs=?V=ZUEvO~)3~v(v6m{=5zMG&0^W@>>H6G7l)fuUV6$ zB(jAk_G@k>(z_p&4{gvmsIRJj%IRvTb^1M}u3v^~Km4l7Ej>1{On z&5^ExHIK>k-@mz=`~7@x8oaOrWhn8DDJ932-(BN4m6%K4H=H7;SZr``DpibGwtm0v z#3b-8ux7Sm@m2M6jz+CCwXV(|nfD(ze+;RQi}_1Ruk%2uRXMexx8>&c%d#8i4pv|>C2#5iYM z#8+dyrrn&LX0HFG{cCw%s$}2%zGN@w9g|XL`7ilYEuBgXXH3=j%gUsVM3vJ83VSvW z15M(1ZoBKAH?v7%ZEm=q8z})@-0OS;b}gT^$*)TB@a5G=J>L_5CD7HYu>B+PU4`(y z2B{2V{9h$xRUY0yE~_1GHMLK*=|2`>Zqh!P@VSab&TyDrdX_#WVrek%s*DT^)O1{g zriTsXvPVBwRn0&m0esh7 zk4{v6(+{kle(0?26Yt+76V1oXEVk44WN`WeoD^EI*#CL*>|nr{Rc&O7$-!NR?Bq(7!i!0Ig)bO$m%sdc z@RK5RO--EImF8KhHn+>Jwwoz)y~J1)v^2y>p02$7x9kAs5Il_a2Ui@cD|gG^Dx^J*lyO7)~U8mjfk0&@*+t z5pv3aTZB0-66Vf4X|>3JyNuXLpGgd+1VDVo=Qb$`xRq8g#2FbGF)>T=kU+504jS=t zyC3xSPEMc-JP%<7ZfGk)DW@7K6@NI}eh#E=R=|nb+}#Z;DdB;;)zT`fHu4y$DS@h& z5(^$@!i29#00htY_!)RzJ zR7kb-^w@$g=i1+svr%eb5$MbM++*Oe*BqE*f@1%xe>vXt@nmc#u~U8h?f+8J#ew%! zx)$d4tm_;!S+y@G>@rgB<+QZQ5$T*Msd!kMsxW`=-u3*J7z1GlCgNLoiBbnK@q?_~ zdnug7f1cdLA^h}ucB4i@c>KkWg4U_Hfs6F1aqTD7gS(nIeGXI}O(%}LEa@71;dM>- zBgggGdk0kA|0=Vmy-&Ve|B-&!B)Fc%`6=Is<;Vk^q zW)O)>pY){d*-_x(#>p1d%!Fc_n#Sp=Pel29JjPE6+-Ccg1Bwst5Gp5s>2+pj7P5r%J!XB^kU4*~wW0FM7AbLOkF+5LT^+Ri-ZAXWqG zFfO0lwvn%I?a(;x_Mh=0$&)QU(}rJT*xQ$M!gEEoKL`b`na2_Err%^HtwI~f)t_vn zFgy)cTyer3+Qk2Iv*>ZS<-}+y-eVkOP~7H`$;}JI5Oke+&dg)Xi|%pXvt`Ek@A`W- zH3OMv-u?0gyik*zQEWUBY$mgw&uEUgheo!v?qA);o`qz0sc+S`%}J?W_g`h?I&rsC z#Z5un%!38lsMwZkn zg|#lh`WNA`?>~nn6r9Ifi|Om?r%lyR%zCBYjH?<%!yL#*eD09CmRdg~kFRQj;Ng__Belo$}G#5*Mm@JZ`XR?bG*FE9; zGOkHtxe+I4Vn(ojjmp9Zp2<0ejV=}lV;eor(++8!nxxv$InOR$+i2^Xyho0cl$3<< zFYE>B0oFpwu2V%$i_D4xx65lNhQO3L({U*rU0q$oKmipI-;KrtU9)0AFmr%BV(k^C z#`$N~wp9u%7Q%LzbfunrU~Xm>3!Ux9trpXb2a`H=SQy-eIA)4>lS)8su3Zora6mS86k=3WQ?tG6dLU4P-rZ5yT&uLp>qJsot{-R_aZmLzRp~AVe zrzfLZ{8pnbTWXr*s!}Es*XmKDb5{;9KtNzYB5cJSx7+poOq#lv#d zyLo@ZHYe@|L*(_3r={o5)l#0t$GekV@ORr|+M5CZM3;+dKmDL$qr%DcS0nWj>5Axg zbr;Za-aG8kHqZ)Xs5ta}VG{P5@%%%TBHM35H=iiywP~jl_^3+lJ`(7lbt9=Y6z0Jf z@;`97CPKxNrE|UZgA2ZMj7|OjV(YD=s%pD;;SGo&jZ)Gf2#AzOhk%5DN`rKWbg2l^ zAs`^~AV?@FB@IeTx6(*ShqOpH?ETI4yzlva=bUl=atvI1?O1Ew_ng~x zrN^v1xn!#f?>UR-zMq-l5TAY&j=4xD@3`kG)c$80{OKIRcRGzLqsP_DUdv|8{vC-f z(RJ~!yy?`wxX@#2dYVdW6U0Qdr)`@`(e^sI@*iDoT%jW zz==lseGA}j=KXyuM}~iaW@pOrcdRZBO8Rp_dqj6YJa)8axC zwn=)+WzCgClYqM|!^N;g{bNA=gLVLLiKXa=ZZSb&e@D$p%&GOuwou)Ld&iWV1)m*9 zJ8jQHjQo6sLumdy35iZw;&)hR-Z=NmXlr_bIx_d|(+%2yrFqnH$Mx?^D%fH_m3*og z-neB$A^LIEA~Q#fYVX;rm_!FQH$@MF*~0W*QBOWf6xrqE2y@27gr6NI*?pDN(y3A3 z!h(9LTn1e6`1QrT6nV^u0s-Z#VQ%1(z@85vBeOtoGfePKf z=ZPiwQrIodbafHJ?h3m2K%gxEbx&uCJ=o=B&-VB7GLrRacLm1yP(1=OmKlO9fI5bc zkFV|)PZ8LO0g}Wp$JpD8nCaNBh=697uNyXM#CROGK106NTb|Xz9Wx2k1>A8M zsAKg?_JDWaJ||AgWRJjfp9;%H9Yidl{H;$nGnn(i0S3f;i(f0aGNs7v(ViU0*DcNR z`Sw>DIw`j*)$6o3Fi&@ z|Lp+Oz2sQGZma6k&hPxtFdjWvaWdv0#(ELr;gvwB`0^2VR@6p%cvs8RE9^;Co>tge z9#iP07t}mh@}3dm#?7u#t4dh^6pw&bi5ZnauHSNeOnnn0w4!dcb?u&vTWb2dMI1`0 z@iwnsPxMGIcr*FMu1r|uts>SRwdc?o5bd6hvo#hiU?oLeKb@7;BsW=nib73bd;+B3 zwz~*#P8PiSV#nJn`CZP&Nc!@xMb5%J`)5z?A`n>j{-dqR+pR-)=m6lgacB8Ss39i0 zdrh^rwj@=G&ty~<=K^Bc>59&od@K6R$KFJgiwbeQP5laIt}F7K!Z`bckdF6 zrZ0MVo$|)_L1RG+BCeH*%3@LHZ{h;amegY7;^u+K3~{jQPmc>SGBOYl4HCw}b}RC) zfR6w2X=Qo&##400r%$bDg_jeI%RezP{gZOVKWCM_le6fs z;iT9a-^(wy`RBxQ1!a}1NU`;q0XEpJ-DC>r^c56t7WW+5!&Xx^)G;6MHesM8dn(|e z!aL{+*NewIVhvs$)js`Q{_J;|aL~mY@;5ymty=m=aJ3)lcP9PKy8T5ppa1OJ=u2+n zZa3H6I&zeM!lYo5M{L;XJzRKys^y)S3%L7YTc-dSJ#dyFdV2f4ef{VU1I7~{ADs8Z z)O{Q^YInW)X`k0PIJW+dn|pkhgHRW1MEzF8tW%&z$-2 zv3>Xwda8ThWkITK>Cy&1o+o;Y;hy0j zdf2y2G9;ifC;*MO<1U4sp56ku)Zn2UK(1(DV7w4=>*h`3hVuhD7|@j14Rg<%et&&t zXkcIgsujEShP*riU|UJSC={t#c1{R(5b6nRlHb~oax`<1x~k?C2C$Vk6VLEIT}tv5 zzF1WP7qV1B&X$rIr=CRN{?`-U@H|_7M~u(i+iyzH4a`hDOn(agdGT&+k*4ynNL0$g zKba+Pl&eD2MTxU$)?!xV=K6ZsA|`4}+xs#-o5|Z#2g$O>oM&Qga0Zbh%#4sJ&()Qo z)lKHG3opbtgm##0oL}$S56?72MhpLSUa#3tqQL!c1+$3!w4wdiBvrWNY;`8s>aGeA zB;9ut_!@t6n*KM`jr&+H02F;aba^touVc4cGm}aeX$S2}YQXBqXN^wj3d4o5tL6#c zu7=cnl#SrRe7AwU2FHE!!nayqZnhZ3CORDYZRTqH?}C}D0>f6Yf{IjpM$6c zZyx@yIWQku^m}%L44>burLQYd+3JQJ(8e=J#r7X$3)d@87qK zWK#1B>-K4zvLYHNY_4gfJR0pez1Lj6bEqRFc7Ba)<`5PQnXUxU(j#xtux5liN341)3d66XkL+;k*jHuSG1s|U6-FMOiwyIaL+<71R`pXd zdGk1GKeYeSKuN;0RyZhaOS^X5bs37IBC78uy{~;3iHFNQ&=Q!tiJ7@ni&E~_cW)Z!46bkBZeUINP zdDY&TR62oL#-l}Y*)~GY(sF{xp%!l=6Ir~U<+FZxecnt0x6!%lG}jUKWKVG#%k>Kn zz1`UvQ7$sM_%c)X+Vkd$^8OlxdhAyI_gLoxoe9{t_g)CKdo4(otQ%mXW=$+$MtHw{ zqDAPZ3AbmDEYN7frDUs99^NDm3mxiZV7AC_edb+RpEA-${gQ?@I^fvx=z6W9kDu|s{r1%#dDUY~ zA70%k-uXw%AhKf3Uz5wfTAC05+!EI}5(Pv$dUpk-i|hYcjVZIZ2GCKe)s9tNO=gmU(CgIS_g-@2BBR*vYSc(cR9uYX5UEos!$7Lq)>DPOy>l|)w6ggL z{nB;xjY~`2D>+H!+(Y!nqA2Vj8`^Jub+)?BwI|>DZTPj&xbHpF^~0YAKSBGO%-CtH+}abb}4v#ob-cEnd78Bnf079fb*@O)LgF z7Zj>DRfg2j(Xk37T{Wr<^FSH|0~!T&^?wv`A6WM$T|ym!Bs?uEE2|V;3`}J}lhl&M zDM1Vm4N7Mq}w*g=NO&&s~oWtiNw5Xqk>V_8{6Wm@!xj0 z?{*8qu+q>+Cgwr#$7)6>In8AKysCe{cIMM5mpnV=Asn?Bd);?K$(6lwDp)O1h@g8< zf2&lW@v)!1+QC=di0AUG7Eimj+JZ-4vU^F;n*Y?_zcIuSDKq^iw4PY2DHugX|MGPQ zQ>4cFfNf;hcdiy{YSYur^~Y}_EhV+ba}KsT!qM}&M{?%p%DMQ&JESNFVLHTq00<+V zha&~H-(gM(4pp)M+#$)1h#a4XN_BY3jv5X$H#djzP`?cZ$S_fgCw*OA@?i7?Q4<6C zdVD(WImR$n0(TA;Ufu__7<&WhZ5X5?92ekTgDqW7-nXB;P$OhNNDe}X0$xXkA0Q?p)wmGV?w`xDubq-fxp2B3HorIr zY#ssaXN==XzSgJ{U&`>EaZk)wKTrSHx@Qv~R|4+k1Wxcb+MI_ePtHiIe6RDpf7g!u zAh`YjA|j2<#ZD-jR&{U&HuKfBhjtpNvA>cAFARi!_=?HD{I2ESsZnxB-||9g&ab0g z4e`rkl#XxH6y>LDQb-i_rMf9`reX~flL64(*L#W7_+v&SPgU*JbvojYcX`Aq<1QL( zl?^J%SX)A&9+;6^BzHPV3)O)86~gV!uRM1%sn}q#c*5vSfU7^&hoyQ^946@18PDJC zc0ql6g;bLuTEi&yZ4M-zw2u?P1cd2q*gMmiIR1M5BOH{xqd23VknRGnt`;FT|C2uB zEjnL*Q+phv$u!@#-VZ+qW#luQ;uLIDO2zI0u!RJhn3d{#tQS@aaqABy!1X|!df;ej1yKLY}VB?vfa7gAg15b0+B$VhuQ-y4w@i9;TiIzs zPn+a$=Y#m(DL2J1@uAogPaerhX_eix^mlggvX57!u`bv@k*OW{;W6#yg^2noG&MG8K z8oHT1Z}s9TceNv4etDwMk^Z{nvDtOCOC>rgOt{!sDb{gwFdj~^ie;`&!&adD5|xyV z;_uIHnbt?JSekjKkU2)G{+RUfx=&$0c$#L&6FvUXeqAuQrmHls#kG$sTTQGX&W&4D z=F3@IKzYjl0qz!02du!1r(3M~6vvC@f>Lj6i6T`3qJ?q(#(B~#+6IW#ZMfb_i9GDR zi-S_hTi@FJ>QGKv)hDx~O#dfK)BjffMO&j1YE)9seu-tAOvSm@CPs%B&(!F3({-&O zFFSN?3+cxrjQjAN$h}RwqR?XNlZA6XQxwW%$z^M}jmBH(QQbM=1#D2^(kw16>I3(> z{URM!6G7*e7x=0DAvL7ZFw8)k*K&o7{8xqA1_QcR8vH3#MHhYF(to6D!h-`{2)t94Rw@^ zp}e=~cS2L+g5sQg&T^VlXAX-g&K|Ym93E{Z0pwl?RNUgJyMX7!K6lSk;78sBFPTAV z_FZb|!7VlX@cM1S?{8>mw6yei2sd9Q+!p*8)cuY-c64i;e)VP`jCs_eE&-^s_kzEj z)0yzX7;RpUf(A@e(7v$&-!9=Q-z;$0O%Di`CiF>qBk(ncA;p?vp>cy^y9PtJ^WLkZ zuIdxj_0-3+x<**<2-kjYZ%rg#4pGQy{^1{d$BPY!fI;MpOP3EnK7t$LdO8_ELMVUJ zmY@9HE%X_+JiiZoet+-H-v%6?k`LpYSKPjccIcjzKB)Sr?oT*Sjqh1C0U z-uW}Xred;D_1ep*7k!sr)#dK|r1}xD7?kWPl8&mRwQKtGE&8==QMR2S;Zh97gf+mJ z#bjDagzTXG!@6IaI`!mz9{6fhdbjpo44p0HePZUaf9Bl~Ih$ylq?>n!S7XqEl;0bi&Mw4~%RK7d@dfgdqnkKjcx|U+fef-GC8D~zba*nAW_m{AbN4T<;?fMMbO@K zn*ko&ISFUBubH%{#!L-zbdz$zYVPRf5q~xQZdC1o%*X_`QrwH)264Fk`5l%WALmwM zwld{-Bu|uUC8s+s%kZsc3`&2;f%CA;OesFFt@EQw4#%5Nx>3jcl?SA6vtXqF`8*w9 z%ALFRx04tsr7-P~<)pBHVM+h6j+A9-jkG*5>;Z{;KHXQ#_|9IIR^Xz2IeA!{&N0j4+WC{xB z#j8&x>Cy=#F(I!>J3hDladvxkVe%5(Mko{~jQXePF5yS^C^6<__gJL=UlY3DrnPT6 zuFT5Xk;BxBnfoh6Zt#1~-1#3yov|udZ=NT(2o1}o8T+vOlr4Husd5~QwXI*8JfAgLT2F<}4^P(QEnoN`%OUS5E@1l){Tk^4;dG(>XN zMHF$X0&yfF$t&OOd-C<)6Fqul4kt1m$9&tY&wqiL0YiJRf};WPA22(=@GdtL6cB+_ zG_ayVc-rUCxctQTgNyGPQ6jqzP4#YtM@8aWcwQ!OL&!)ZygR_488B3=YBKhW+)jm0#uz*;d=+0Cr#|GQ!J`DR5U`|c~#zL z{0(?-+!7PcT6}Uh#;)2gpiegrQ}uL%(r4weB1Sj*4VJ2227|dPzo7Xg&45nI%c`^Yb@?b1~wJ z4yGtLK&6D4L@O-Rh-)_RSrBPx{P>{)4GoRi@6PBdu&0L}Rsih7blmT~vB50EAp(|) z@%u91fr+?XBQY{yodwemfyi_B;q#gPelno0cYyPP3pmca0eALcV{F>VK2aK865%f^ zL%i`~8joP|a63fLI1}1f1(k z)~s12myND!meAPUf?I)RU9l!TG{}4BE385QW3mawMMA5q{G<4exq{<2*r@CW%&jwt zp;{t(ajQl7;WL`G&!*hL?eLQtMSbt6UVh~9&Lq4UAg-CdG>uufiJ>mh@9)FvUE1(! z+-_nr%>q&v|jD_n}dy#`}9;`QtHar)3N+a8PNJ$StyXPX^+7p?vk3?wPotR1W5S<{O+n}%OpfZ zL__Tu5MHY5>yIs-lhTWlA^!uzbs}Qofy&}Ft&uvfd9g2agUMKpb8U6Qf>V#I6KQQC zyeYRQLig>_xC+UGojvq!N0zR$Lm+0cG#{$zROJ8&wmmq3(@}U!;|aL9Oum>G+la* zgR6UfO!P8o)Diuqz&U^#J- zFBj(tRtwX+GFcjX$()JZ+HE#_Q~C3&BqvolTc=vFYdd-66*VY-YZXSq8+a4#FdeEhh!O&lsfph`QXk#G)alFWh;lMveA? z%=gR1hW&kvSI#LW>bZ{_m`x?sc;y`A&C47ywRh6$$kARYLF)nz4)hCe!w3!JF+k5c+Ol!VE)%WdPd?(Fv?K=>{OCa#A2t^wg8Xg zi0kllrpApBguNir3W#g2tZJ^{ag5NNnwn&@&Z}SUa?CF*%q=V+rbO=# z6t051EfG*`TR=Bu1~M>Vw2zMu40JOG>p6pf{uFUO0k54lDJM0OmzR$Q?>4ZXcUr^@ zW~qWfz!!W%Sm^ju%wciH9b7M z^~#Cytqj6f^v0S_T?x}Li7Rxn{3+_pb9AoIVl*&HqhY`Occ?;1akGXts=vy+fc9@7 zH!l-1a$AQpHj%mSlK9EES&t^6BzrhzJvHhu<-}+V+?JRW>xgGxRON*57wWdB^|wy* zsn#QH%k^(%ZQ!lU7>BhK9$_PA3;!T)6!CJyuLoa`=;?Y5Y3*S*apTuF7LO@LWy}oE zM{iAfI*a-eKkNV=kVEQ9FuCy&#*|8#1ku~9$W21|*5|IdC7D4%SzaqV!>6M4#lxTN z$wAqwHuLSTnFJyhFp|@JRaLw5A}VR*Nk34eaQX62Vhmwc}>n(jiN(v(+R17(u0g`G7_GxDPG-EYx`9IF! z###XEW~$duLxUV_KTsEg0>Jq=_fM0zt}YeW5?+K`%we*sbmEAQho==3_DzokOWoFW zvyS_2=C?O8h_rP@_BH%FqVxT%d6KRI--%|+jnj@ctK>@0_&$)i7Kt4t5)L+A-hD45 z^~90UCUF1f#fp>aq(M8PlcnrdHyEhnn}}pG%-p@j_3x}M{k|st4?+7A;8h%Xe1Uk+ zHIZd<Cc^Q6=-ZaY}u=>#z%F+l#b#*Q#zMw z0SZ)zIFaaw6<9UMU!jHba4*n;P{yP{nmy**0NKaGF@2yZmy<^~14 zYW}gq47xqUWeo|_G_dv{{^BmM{veK`h<& zDAC{H<9Qo`I)$CA70LB!vM8-d_PcWBN_T<)4oJOQpg7_;Z@z$F0U+oY&8PE*oVicKln>r!tLZMcD$`{iB|K=7_F`OyVTpdQO|?T zC4%y-bc|lLFR}r@toZ2~VPaet|5K9-a8p*-Q%&+bALtmkfE4OhS;eIyvj3`1-v!tg zkG+m(xgQlk#Q;zvG_66aQjTdqdqW9cS`9;RU;yxol(`BnVo zC4YY9&5$a$sobn6&4?`N=i%SyI2{af$_SlkgTr5!U4FA~>m%-}H>aVpj>fCu&VKzj zpZ;y@Xs$K^qH`Mm=5-XMd^4_wS2#2X%^SX*8XJ3oBs2)*Un~$K3V@Htams^;`UIQ_!KIsWFk1+tsJNl3IzkBoKP8YX1G)D#P>49tl<%K# zfc%G^1P^%Ql&7ZEPpvBVn1Js#K5k%C^ZXK|qgY@ZgbmGYpU|F0y?Jxj%8DJLA}_(V z7F?Fo3#bu}5id0oc?C|ES1{o!x7ha2RMThg8C(i^`FzU$0l8c{SyX0{-!V4J{O%8O zo0*esv$QC-=c@yse-GnLhE~(~%Q}0h58dDzO@$do6bRDF2y&HZ$WHCiZE64(7j`0yfNhsic=aiC`$c`t%A|x2^y?%yjpDV;pg^V@ASe5#Rr@3h+%=l%~Z=ecIc z@?&d1OEh=gbSajLcb0cCx*X&r0h@kSbnS!1q`YA||YRs@7qs$R1i zJ&OxdSNgV(G6ecJ=FzEut4!P|+`xnrRxK|s2FRt)f?+ud#lXO@vRYo;`AqK<_=ZE% z6)rlakgiTa>(bZLrjvsH>~vmw5*Tj7uD8~-&4J_ro()*-l z#oYN7jKFAS9mdo5IM*)z&vdZ~s3{bBDtr|MEs~=*faG_Ik5~~!JM>r6>l1j8sciG5l>(}0me&zj9ErtoYG^q+Ec!TpSjC~w zC>1x3C__ky0pQF%{pY#mgsiu~Sdv#94T%HH@YutH?R_>dIEWaNgCuD7?_Uzo8ijSF zE?<48^y1DR(_M_nI0zOl8FSoEYN->8PINqd2;n=vzV+G&%dmgI_E_fN%~5D6$rW+6 z52B%7&wv$!D&t9cWMsr6jp4X<4VaBVU5gc4n{#tm$hpy9zkKPhx~8q8LkSVM$o!(I zt4ps0c4UzY0h~m@XO2sQ2ulqJg$c4(W>t-)|y3y zkSlkGkcd`c?W8C$k@1QFQQlCE&cLHA{h@|MoKetWaiD){3eIV35VHga%9|#)-Pc>@ z=GI;J}RYWk%6Cp(Vv+86gf?Dhf(fLWMC}Dq-TWgcE+>Z z;hc-3ri*jtb^-|0b+b@bhk=QVAl*3SQbr)>N?f)->w>-=V29v?Y7Qi4<9S6zX0ll) z3*bw{1$X4O0SDLcwrq|j@En6!{sL|>%4jlDm}&^jVV8N0i_KcdFf}sVz{H0(jpW3d zKau8^r%+&EU@KZ|*yw_{Z(W<0TcS{{KtK5=ky}7+ip5jBd^#>%O6Vl7VicZKe&&KF zB6@51ZrYqXHG?0cqzCivwvwtUAu?41?)Kc$(nSg#r8&2}pf%>x3 zBDjxTON#2Yol8~7VMTY1q9J}U1ng14tD(dgtrSTc44F@*nE7yny%WtZ81|qfcpY`Z zirs-4-J^TFpBn=}3C=V;*Z>H9l_DCJ(QxF|U_}S77NPfpOk^wsm^cEJCVRafWPHzP*X!Y<8zqYdKd-X2{4?A>pC2y zfUo5b?y==t&R}5*MIAOVI#u!|>omryjuMj1n*mWnlDeSNNSm7*1aB~SKd^G35&G;k z^bZ;0#S2AV<(4xz+khV>>gkpYgvy9YjLJwl^k85{$nRoy*vY~x_rVXG$AMxZaMeQVtSl@%Sac~%S@}a zwozB#JX`;|;<0_~k!Fs84}3>i89xPnnq4&C_l9gxiE*<68&(E=#5OoMC|=G0{(}x< zC9>XgO3XHhjmHrrCBQ!exf_s0B6q2ODY2Hfe--Ivc8 zqQmgM2Lnv&bo;vadrcWR^Rx)ArM*&l8SC#{SC71L8xPa(3kyz{Z5$pvait`ge$c+!arOQn|9Mp! zp2M-jpP2?G2 zH24xmpCG+$XK(LcZMuMf0ALMDtvnY8<3?8B6BGq7YHoH z4;Si?hycW+2akk)r3?eAGc!=9f+!tvay)XI$CP7WQn}qD87$XyJ=Hr9oG}rbxlY&| zo=FsfLV^^oA{NT!&zQjWIu8{gWCqBA1uepo`0o5Ek%E#k>=3hrW@BYVa@rr9A~d&= zVpCGkkwKub!kPHC=_cZy3beVn6%3qNQ>nH~1!R#WzUQ9a&u`OJULj~L2DK4t}2KM-Y!)fe!UscOObWvh>8e8mV4-x0L^`;uOMY97XwF~{@k z)Y`MNg^!bbMusrOU8jLMNpIkZX61tme6#F6NSaFF-5jbD0=9m$Zm+XqfNJvMSSV!> zz~RQGiF=}lJm11FGt+R7;0RgBL!PX-m-BPGozB?|1fOXGL$@3iA1hw+txbG& zeYK4<-|5>dCy<`kkKU?TY^-=uYXSY zxnKYNE#gTW)YLfN79rsN*Qk6yb&~(b8OUul32(4Vzp{DrKjZhCz@#eU+%nK?Y74u* zipbfZpO4iUEvLE9eF-^VffqlwH~4Q{3slSqavWx2kE_EXpaddqiM>;llUMpw5^(i- zj@hxp{t&1imzVsw6y#KYcHl>wj8$PJQ;ONHj{~xK$%KiG$n~7EX+O>SPK?jWQkN?x z=T>9IpQy`SCaB=>Fkjsxrx&R0nL7_`Z&NXOy@F4HoUON-ltB#k9~v65r`Nb|+<=Z7 ziKhqI4<3*1VZy)wm6eqh5>^E5GmKQ5%=i)IcD19a(8Bwpcr{yFE|6U#jzQoM#MR~p z&WTNrU-aSm^l;t0Nx6vu!Y0Vq<|Ws6(yB248)g7|zts9eht2T^P9LgM48>(6$& zoF2VTPD3M(6cF~YviF(F7Fx^M2)=st2+aO}$Moj+f;sbME3V?_XmOQ@49KecLp$yg zB)sc3D_)+4En@NOwen3xNf^_=-HZPDuHSsn%<(g^NSy)2u~YBQ8@^Pjif!e-M3@9pn{P$Zgp>xe66^BnT5V0m*jS zcr=_QB^9>zh4rfRuy5YJLy6fiRRP0h@jn~(f>18mM@`=8K2B|%RpI3wegywt>e541 zaP@{^bpGF0P%Eva7PIjFE@?i~Tm5CRJzl7PTd{&wZwgVMzLznUZw^jvnvJ`WN$ln2 zbq1L<#x?aS*2)03faN=gm$UxakPsD}4Q29WMrZx=?p+|b+>>LtSs{S}07KmbKS&;g z-<0(7Ivv^Cx(dSHhv%2zm+$*}99^gJ5O(={A10PS($9mL!yYU`V=IC|;P_`Dm&OnG zHy0vVKBPX;L7aYgrrfa-N8bjR=;i(+%uP&R`eOG~Ur2xVXTcA;fIF|Vyn>?L7OI-h z4q?8M>b(d<<1USh{2E{oc38+poxkc%*)2g?Wx~HMpBNG1oSgPU{R^#gfIm) z^^GzH*mRNTW|bLC1h*Y1Tgd^s1!Zd);`t@34?+qcPPc{({N*3E4EWE~97H|Lf*BOH zFf}iluc$6;pAZ@}ZywOb3wQxZW_aHcf%b=lSb&gM;oiMv&4jXG$o2sD#7i*P39k5= z1l+SE-=r|0^peGN$yzzC+j>GTb2LU{_9>O}$zerMJrzI@Ov@S1T#l_6EuM*T78E#s zHFNx5BGxa0jTdB8L7j@{$UzKr27p^{sHkR9k3{3~^70-*Mop*u=o7Hkv{32+!%N_HlKTe={=-zvXdr%AZKEVI-Hq#`$MJe!h`}S`R8Ev&Vv3(4l3%62^sY& zKM;dKQ5SUN3^^|B7`$7i!~7$g{HUZ@|a|Gt+tS zau^Kf)-Y*_Ic~a0>-!L{pm2!6%7RVcuR6y8B^9Sb$YumkTw{*(<6X#`Gy@dW&TAmu zA$DU15&*$ZSbII1>Ia0P<3U=L<_ACMK#}_w7TI6FevOsc#xyfkgv0cw9WI#anaDrz zB*3%Db!MKAKi|Oh;{eGWLsDBOmPni*fQtrT_nBLvg{$3J>)oTQm+fc8O&N$-BY40LW3TJ)HJZ z*+sG#kZf$b)zk}ufw8Edxaj+ zNW9>I*}}-0*WKXm$KOxez;3Ifg$O+I!eB=0Vx_!l@%g?I6P~3SL5ZBMEpbZbduFi) zY+T9>ITC&{HIc9>;N00&yu6fZ?KeZzSSbn|q7zz$T z@QKn;*O*v4MI<&o&jp5tDHwH6@E>yhcb@z?H%5wq6!qVc@)C@c&Hpn}W;Wyxf{zWJ zMnFWf*ZY`k)%@xbA}op>&lYc9-YtdnPO$E}Q9cFU_2%$HsyJ#f%jDYf}IJ$#d*}TQOsjJ|8flySy#Zbjj1R{8$r_r35=tU01sR5;ltNgxOCiq=|A-24VO1S1kGB{F$HFW-v@NjfZjX2`J0j(FD ze5pH8zs|EDJe%jA0yM!ARA4Hk6*zZ5H4c?@2r&A%>Kw6U5ySad#y`0J z2dN!~!17ELVkc&PkX7`*jZge&QX-5jH&N6ppEtqXAI z*ltqj4YOo?CJZb}uwS^L3|9mwI1SzvH z`lJzm&WSjh>{SehLBVuGYK#O0=8vtA;MxyF^sLIl2QZURSp`{WmCGD<2noaZ#yNDf zn#f-O&1gangoowd14Uis;Lk#nhr|%A2t9_1vtjZPkWJnrVq6g2A`Tb|ckcKPPUv1o zLO0<<47kjQKzPv6sr#m<9B>YD27@-BrKJ;mjDL1k<1UpB4WT^pUPqAo&W{{i1VN|;|MSFWYLU8)NtgL?N(W6KD)lb>0 zjEYpoMFa$zz%|w&Q&;>c-&Ip%Z-xu|Uj-V2_vOjsv|mHR#0GogA`C?C zadX?fbfj8xc=N9?k*cD*;4$Tg}AE($X^MzX!tVpkL{f3F-$iFh4hip-ARs`z z9J^Db46S_B*;z5jUJuz;0D&X2%C8G*P}gZx!{Lxzu!6ycNue5Nykr?WE(aaTNJ z5g}N5@K+^J68-lu*lWQkH$n2{mw(R&kKTLSZ~dK^%zH7~@VZZS7}$ENfKdTXt7%`P zKVQ~4?fdbg8C)%pq2&90+4pD1%clAI z^W@ir)VyY}z9y?g++i+@2jhmx8aLH7Pw?A}xe0&d!&XGk8BzZbtNb}x(`63AMTzEDfTWo=S z%Mn2+@aJy?t4zudFK&v8B6H!*7id+uIU#E(Y(4Xw4?=uNpj`V8Ji-Y~Zi%TVfEpoP z*f?99+&B!(0JjBU~dCRi&)U?%&Ta<>BCk~3ML5IYJ!C<@UZ|s z4qN{qq1*aW?=HZVkg7PgafaMdz)-kpLP|nHl`|#*UR2OMFTy)aPXkr?Te6?<$4KyM zxo0$bCgQR4JFL04iG_t_N^mwMK7O>h;aW$yH0B~6UW~t&`z#{)6@m(* zg}n=i1v-0xg~?<7DMwl>9<=czYb!7Ap|28Mq~bGqgE?)$#7uNUzy!UwCl5{2uW`rT zi#DX%1Zl->{vZwusrqOxYl=5Uo8LEd3|d*?t5Y{@XGq{0f`21Yqky^&>6e>9A(QjIf*7e<7zq4uZO&m=?GJ5 zN;z?_10KM3u4&1DwI#%P|Jr!^NMr^>$F}M>2S6@ZEj2=GX%5Kk#zbXT)(RlN9FRXd z02u=hoK<5Wx8Z4iM!pz52^6dsph<9GhK8x90p!w1_3#fagXzwdv0 z1DWZm%(5^C=*9U=YFA!V7qA~Ief8o+nwV5SEiEn38|FL3s~*D===jzt_BrOprq_II zEJbT;Yvbssp3}t81sE!G4*OYl05(h@wi&Mc-~qHG1>=jFxtAm_;m+)$&%9SJc&7$nBeu>aX=xTO3`;Hm~jgalK_@aE=% z&hBQnMd{Y}>#1gdkphDnl7|o|pZPXt z5zHIshGs^b8`crRpS<8S9A4Fs#rV#So~& z0MScwPrv+*B`Re3AkCJWnwsJl+{L%cUmi*<{c*fb(VR@Y9ijDqFbM?qtIQW$Q+;(Xaco6bc9HvZ0kDg6JbCrZRzPD21NkC zz0KPT9TR7TkKTVd&OsqilyyO*^n-R_W@DjWC~lw`!jTH zAS?i@4Sb6%Rs3&zN_^<7y{{u^J7Wy|SqooNud~!wi-iLpFhJ?4ic$B^4G><*WkL5TJz?Vr4N9#01BR?K7Cvrnw*jeQ_pPXY zMo0Hix33ztHSM)&4&5f?Nh*Xg94S`vPFU(;g#-9l296B20PvVN}d()`}t?Xb^oYc>sq zEW@jzk@Fni40Kx|JSZ-EzURTCCs(46cI0@ZQ|70xZSnT_?fQHJjsf6p^ZSuGv*~lq zKA^un0*F{*bh%7uXk;X?%_3}~8u~TRSZwD>83y?NHT$t9<)EuYJ9X|6*hvlw+bhP7(RhJor z9Prg2VZ%@w7v+7t7>|T2*PpEYf6cvjIF^6^KdwbfDnd$1Dv^~<(J<0NMx~6DGD5P6 ziYuIoHs=lPn? z@pwKS{78Qg22wvizrB;v;^OIdXxYeBOHMKQR+qJ#ZXgvRwBh&nJPN=Bd@5_7p8<{cPK4~^O6fX(i zn7W3ke*A&(A`d1mi*yP=B8shO8-y5<_5GHU3homao^_31X<*H=u-N$Nf>7m6l#<^K zx=-g;GjPxsuk4HRy+}3rT@7L4BbaA=^670zW3cb%usg~HB zhkX^mk;8P1uXwz=s5M@~S3<_OL{&xvrd|=EjI_HCyjsX-0SEcjwkU zdy*QhuU#1~;+f7{_sAc;Ho_OzK~XRj5j0mDb}yz2P}jTz$N#g#)UT6!W9eJIwyO_e zpaUl;Dyhp%dOML2>4KWd3Ate$_?EfT^pIaXojv>b!Gq<`)Z$rfS2xJSz}0nrWmvK@ z2W({|c#D)RIJAYVshV1!ntq-FlzKISLRbdr4mP^ZwSYn(5=iu!zaeu+Tw@y>8=d)k zKcl*zzxgyWHMNrJT^?+9((KS=WKzPKeFgoTy_otMt~vgh6w1voMmAN>jk=7xx2r3X z2qD?!5U(p{+kq3c8M^R~B;{F_r#7gr;`fj`;InN$po}e^Ca<8Pr5og`XEs7Rxt+%O zL>IiL3^*u3wZM*md&QzWr*TsP!6lsj*m7F(qfTs3`oXn_-hVC;Zos2e!CtE-bs;vc{h zMEEMdvs2$t|I&UYpcA5FV#Jp^trDJ%V>okT&moZ7xZS)y-OHrCv}W%k*8Qx@`kEf89?qAUVQ0fW+e8=;Q5iiCutw$>pm&BJP(?KIAZ#mE474@|x;{0NPbM~}8| z-AV`dVp&*~BCHF5P-_ikZ^-EnkQH;8b7fheJ~#N@j00%B4`WV*E-ReL&#q!%8#OBD zKXA9(Kbl6&6!`GSVgVX<5KtXD0|Ns(Fc+N9aaafLb4)}8)h+iLQT^qq#_1yh{$+=i zlW`Ew>?7lh=bhB$6OM%bPT`&My}RkCy3Qh% zUj4JKx0>P;6Pai8fF9q-P?S0_brIZn96fpQH+@P|i+zNyi?|N!Ce8P6?E2kj*%LDz z){~QNEl787v-ElZcYsCUMZeTX(M@qt=G-BY*p0+qK5SE-H3|udiH9#=j+LsFnm3RN z<)Z9alkxo9zStEk+BrjUYRk{x`&e?@#Xfan_%n3}CxxfoI^B*M^4-b0Dd{XJ!XsF)v)4D)?4Tl5NL zeW2vw*mB8q@tqAR{xyfTK{@-DmGf{Hz@_(_?@|N=1gvVsF|r8RBzOGIP;xdrfXpNS z7cZFpl)hS*Mw9E9nfH=vUc)FuV-;(q-Fkjqcw#pD45dptaI961dSr&NMTQ~MmaD00 zG!ArQZ{NNJUHyr!9Z?3dVn3%e)JA7$n!HP)lVUJ1Y5(e5k2TNt({!gk<^^ufw59PE zHZ-t6*m}3?^mjH0@3pc7nQNS4I&>; z00lZ)X=MQe9zvvH^f1t`GkXfcEVjB-SRnnpk*71}2`vqRYgixuN~xiM9?yvfu> zCZT@9XRwdKeQOtXfzKEF>d&*MMm+m|A!P>!Tm(2tHCSDd%ZZ9Qs`AGbaF@5EZF0GL4yQCStABL?GYb3n{U+b^ z>v;P?8c8A}&2O$S0VjlhXzvjPiW?l`g!_Z%WU5(>qd{rMrue#Z31PNg*hYwDhwoW4FC zZbc2*dwmi-YEa5qwbOUyqrxLc!mD;vI4UaMDYky;xq^A;RxvRaba)|LD-noRw&hXs zDx9$!d8o?Ivq(!zcNrYA?wI<;di_P{srl0lV`5Etyd%ycIz93Uh? zyL@UsOw;5pMMYFn!F>{(xUYU{Howw8@&_4Qe`Fm=a2<#cBxW-ktS!!^Nz#iA=bz{) z)J&j79et@Z%j8#i@Y*Kow(pY0{hQmGTpsNC(9YG8Kr8gt@tvT^?PciQu1M9-7!j&S zP5W(m5rC@&I2HIIx{mu3kzdG2E5bRGn;j6{b1q{wf~!|YcW(IU)?C=>#;9~t9^c`&JWnV_?>nx} z$zrSf22?YqV=((Qp&>!4sQN7CNI1`Rs7=D1a*hBML*TP{hcjJ)267i!#iG*Aa2<$RD6g~s5iWZ zHMD1jGSph#vORw|+Ur!6yg@dKRZ(8ko%gh%vb5d6gW{+c#tvT(JpVL;e4ON2A(oX8 z_Sqx;Gp0K7S(L_m?zNW=A9+?WBKT!De`17_@#V`+QS2TcT%sy7Rr~Jc8ZZ z@dWJM*sIMy_T8V9d-iep?y;(d((l&+&7^!q?)~bi<0>;P@-!Pf-&7 zvMI9-Pv)v<*>)3>we^>yI1ZR)2Ac*LzA?X@OkqGm)m$LJhoUKp zk%`q?sjUZ{hu&V2q1pt^N1Ti~;M3@ooG`I=|#qixq9NxZEsU%IWgt__gmV8ME!HLOZosU%!4GfP^R_ zl3h3%hH51~CT&^)Xv`nl4~e6Rj_W(0ub8EnUf7{D^sc>Y9L3Ph!Y!OG#nj=7AA0`$&aZ~XptLf%`5AkNbdl%K|*UFpt={zm7`!`IrZq}4dzl2}e=Imk} zw=a%4#&Ux;@8T6Pyc}k90dk4L7Hv|aX4nTFw+nM1q?5&3RGPcV%d^5gh8qW%xbX?eBdoyZL_S*J1JPaDu(fL>!^VmwJZ+666$W9F=;}TKYj& z%J;XnAjFoqH+q1{dHdWX7aPMGo1rPy=bwa~{um?c(~Z>KfugV5ks(8XQ&O6#>eSZB zo|gO9?Cc5}PdhfVwbbQp@$n0b@E_KU2q{Q>y!SZuSxl?C9xE9x_X#B_`T>GxIWupCv!oKVm6v#N}-H4^4QY-92 zrN6+u|HSM3yCOr&Ux^lec_S`mbL4$pF7@}2F``6WV^#a0C3#?R_OB7q!{+o+RLjQ= zHHoW$fPU~U?|bh4($>YBl$`TBKdzTKmGT#kyuk)o5?0y>d}U$D%O3ABLU2 z3Oqj~$1RhJ@_(x~c2X`~-W|&o(9=l*NkzE!%12G)hCNpHA67Oz&?|Az-8Y$2@O^nn zZmoh-ylyuW+k38tc41N@ZmW8Iujg#V5t3FL>zb!62lNmeOJt`_Gn@aOr zN?A#jDZ>hC^`A2iW25ZS6WSvCP6(AI9TxBx09G|Mw}4g=w0W~^lQgNCIg@U>fjUg1 zGF_F()@WT!=Q1x5%f`DRoiR)F;qgC1?VCuN6$}@}ByO&2YQ@3ovy9azrdaQ2X?699 z3$22?cOL|QAIwD$)HApheIs?FplV#cD#-QzufD#O7+@~8i9$WOyvBT4_pOZRM`KNI zhZ&9T1KGYoNN>P&$1k zV|mV_z89VGVk%Ru64l2(N!1EQy`i3aRM)Xj-r(TDMWor$v75_Q>D-%IKOJ{!_k*vW z%PG(EvmZX~OF4I`pe8nkq8_Pxd*39=*Y+b|un9?N0Mh9JOU5<kt+LK5g)q}m{S>T8v7+#!sPPPkh|;h?6Rw!q@y zSdQ1UM?WRnRXG@16wAA3t^n0e!utSBsHu<6{J4R_7aaQL00kFQcg>u;n3JOAlb;C5>Q9GN)W8Sgr2xI_b5bEfFj3k7?kgz3@CFUE+I!immzfX0x zQ5Ht(qvBbwzPMvB;jT zImc0y)LQn*TAMd-hF#VozWDuq00Wtih3+Xp;o=1Y1Gl=m zQzUT?DY4R0dI(E)egEM;3568);kYfbJO|&4G+Zzsd{9y1p@Mk;gy?LNZ`T0`9{pkGc5ckV0QlMov>>W6;uVzodpT9Rj z?zd-1e$SrOwAoG?tO9P#6?(WT;D{iB5FpZY=9AvPcUeWNUNYRo(bd^_hzZ1W-4OH$ zU31-Zy)oOjfq~UBPu6Tvb!B29ITl2Uynp|C&e^+&fq}uwjgFBil7pecvgG?k(@5X8 znS>*yGiM6EXfk|>X?)OQ+0IidScs)3#=&?ax9hiE_S?75GBQ{ZXacos8Du0zVEu?W z`UeGR1i8~yFUiBHD3b1Rc`D+kCF3p)&Ys{VgX?a#L0DiQ1IMCzsFa(&%)jgw6nID= zmVM(!$U<`O-o1kB#>gU5)0Xh)bGRAvgAbo2#ZJukezUu=D0ckSppAZryT9)?U`-C& z*zML{ZH1Z=wr#4kfFjGU0|R>sC@x>;`x5uHsqp6ic?wK=-GNn|AO0vG7i181{vy6& zVS`w9=g|E#2FJBY3IOQdbcaZ*p*Cs29TgNRHkTC z0pv9T0#5sZn(NV0C&jGn?5ddLk8RfCN`bUe_sLnWI}hrWMF~IYSD#<5M+}cmrrev) z+bOu0No1VL%B)7&wU>)$xH?k=Vwzi4EJK*C7~kT%t-){_d`Qt`z+`fCDjHwH^lxTfm=lLPTNY-(E(agfQQy> zXN(y`W~*}F5~WWdqrHGA|H2dI-gui85S#E&!khyqUR<9AZwQ#^xRJ$bY^S3G+JzJ8 z1}$63;L5-q$7If19`67h!ePT_wJ$%Q{v@WUUQGfRwNtYP3&(zd>onjPAG@P4REU$# zzdc3n5U<>vw}HGi5S|Erbiv-+%h0OjD>JU~WaiM%EvvcY&Nu3=t>>Ji*v@<;x>~ku z!G1E+r{i*YR~fnVg3ZAI?5oRHt}NVSnd9E+I-6WlZupv($l9f!zLu77XX>;-Ujv)b zvy+_<2WSb3PiCU_l+UM_s>cl<_mju(bBQkbx*8iLEgtLi1WAgD7DXPsh2A(Md2w!P z)KqM$%16w)m` z$HTpfjkE4zgtkxIT>F$MhFWcVw})G6u(DR=Mq8l^7VulMUqg|8Vy>4bs7mtJ~RDB0>%gQgU^fxy{%h7 z1XZ@27KcCfK=g_qZk^+3ojEc5{reptI1-cQhjMANQ&R?5h5x!BG&Gc40HgK+80{-t zhKC5l5`tK(L()z>Q+s7p#hQMkznvYW4Z>t~tE_oO@F$8#mmHeBjCM)Mw^R0ZrF&{V z!So52A)G^~(eW2$KTV(AZJEK9* zAA8QeUW$sEqn7q#JrzG26T|9SwIo9Ybyp%=9g`_*R2gh>RyIl+Vd-07g{o_1T)FZP zR273eUcMtD*a$4+p-k#yZ5J8@8WHOm4Z;%mIy{{6$FB7zY6ez=W(X-=I#9vHq?;g` z2yZn(Yl!>MvGP0GrY3=msAIG-?^hE$8N6l29Tu41b z(%~U8_2rO0BDEHEEgDyllnoy01lGs${dg$(gXXu+vN8sK?IblF=RtQAqPeA~i|0=N z*c7u=7hN&}j#9gRO^&7Gg-uPYoi~2_o|;fG%81$B{N>AqGC$6vZ-1q|c~d0Wd80mA zZjC;9=KZlTrtgz4CaqcU`dfo6d&ze zZX{zxy6q7WZ%WCXIl5bN{^ZG%xI#JeGPI&K|C2{b;r`jv7C<}8tWA|S5 z4(1Gz0u~k**E+K)+#5?4nS$h6m-?cjCAh14-&MX71?}y+->C4CQm@o(L2i;iiSdMD znkC;@GtfhdbH@r$Ndrui_Rm!JsW3m({Mik*#HbNRmV~NLUC}UE$t~&KCh2nH21#t3 zl03E;>z34zji!)7nN;iElXtdk!pZTg+L`IV?l+kgp)cJ7zSNXKK8fw!2uCc@()L++0~%+3;hl=Gn7ea5`3Ce%)`CfQT|A zRegZqx>a$h(mZ?V&72qU@%h*ft_`+`zcmj!6cbe*CFz|!d-zDqcHVrB&W~%{)&vP= zN{Bs-^43Y38WiCctvc|%F@Nu@;GdNjdoo-Aw8ExqfaqY)R6RZXV=0@TYhUW;31*sm z&k5KJlt?XTVR0X#uW` zb@)g}$D4cv7$`m(6_UlwAoc22zy;%F3k(bZ6#`0K5TWz7jMfd10V#lm<_XRqR02cG zoOoFv@%N-j@ZuvT`8hXKcvqP}D$W}S4h}W|vIrHeL9G(-L6Pyj3(2P!?jEkIuBz&9up@f|0I_o{XYW|oSpTh=CI!$N ze=c`P9@==jqPOAeNIMJ2AQ^4vK6^}CUYRaZ3GhLF4V)y|8s=o)!e`^#eJ`UD?r<)@FQ% zo~h-~?3?mZQiMq1SYTmWxHpPP0offzF2=Sc4~$KO4M2pdlCOIQ7-pi!40JUR(JL;^ z??!Bbq*nkGMrJ>tD}Jf(?V4T`uP;U-!C`JH^+Uw-PsXIE2FeU8<>lo8EeJmSxq$XN z^!X3Qw4Y}rnm6*(%ND7{IWO(7KAJdM|Kt*?!&V5Y)?VU#a`a%`=O8zF8V;L7|BD@A z;+M_4X7aSsRGYPb$r@Z{G=J2rqm3QxA@Xt#69W&?YW**EiL2}YihI&dB8@sa^6fBW zWizYfZxyVaog5uS4=xAeD0+15`t^0&Xn+FV0i1TU^Pt1Nr_D4Fj~G!mBM^h?jCCw5 z3Ul_07aCJgQmUMj2JhXv?U+!!%YmLPrZ9XPb%4&XGM;fXWwA^@1z{D4=<%QlAOOH` za_G>ZwHr3<_}vS=WF^1NyC+nCvLlT~t^pn$uz0i;RB`n+jaf!XSCV;B96r(lN$OUxQryn(xd zYGZ&hD+3BV0Ges=n7n55;O~LAC3ux(vwdcO`uQDJvta$ndTqsf#%BEK^@g+8s}e-4 zI`;=_H>#YM|H~t8KI&vmLsFcy6LK`4M8|yeK>Bw$QMjno{;Bn*gf^79{N`lDAK#;L0xjMFhY1mR4C) zvx^#XL_i}#!|7Q1Kj&dzTXnhp=fp8uJ%IalUvICvz`6;f;n z1`|0R^1p-XYFh1!@LK>wu0$YLf`|#rz+>jx?+^?6dd19BpgX!(WAc8N=RYoT-^#VX za%!_;?&^-XjnKFUBhs@!)Oc^JT67(k)S4YX4 zIWGPn!}2o0V)q6}PeG5wjaQvL{XP@_5`hQ(Z#0`E|JM^PJm~EqIsgxs-xhRtXI-*M z*_nt%bE!_0PX1n8(hn(-sUG<+{1?pleEj4T&f2;ZX!0$S%DlX`W8;s-&dlalH>RB3 z@SgCA|NAw>)}0ayIk45{Y=+bzdKSdNt!8ncxzIx6a<)GXdx#qJm zE|B^9kL!P01gsl^o>kRrXA35&hkc%5pQ-b!ub%WhIvc$l%y6$#)L*$E*uNr!Xu1Bo z*?7A3*LJO4t{YBkT0`%nM~P4DUPbUD_)bFh4#`ThzE^+3%GRFHdR=?vTXUTp-_VAC zUyLV!#Yl+J4~3N;@%X|+_vD=REpf_z4U>qTiVwHG#lP%cLiba1B~@2+xh9`<+JCjZ zczp=CvUQ&lMxXs{S~)ksW=@f>RKwK;%DsA^WImKLH=ncRm1L92xafaAHd-z@NVL13 zog1Ml2rX^d=p80c9bN_%Ile)SD_JvpnJD5;#=>!#oHrMnYqsqAk5^v1{Pxg-rtNKu zq8Ik`2O<<1=$7BkABfoER#l&KW604+{EU5>CS#&tm;BVma3A6>Q>)+l<+zNoBpEv5{s zkaBbgw8w8Aoo(3im(!PHbZpef%^}xtyHKxB2PcK75g;`j5w6e*5#^i$mvLCow^8h>mWXTS*zWnw|zC11dY* zb^TO7=B*cEXxU`gx>P7+!t39YlRQN&%feJ?Uk_u)+Kj>dWU}f{J>9Z0h9-1^K69<_pE`70el0x;p3@4C&T)i#=YY5PYtUHL=s5?Dm6c}d zdKw-vdHa+Ox7cC#xOUZq>(1nV&4OAhUYz&5MYCe-fvG^Y990?x`S}P!U{RQUoCg!L z)t*B+1D0lP#o(@JSRq_n!m_JF{rt02&^+JP*`Z)@mhr=%2L_*BlnW*^jn%(kX={;L zJW(oRZsGCIp^KC$UrwlXjSW1rrL~#tHwfjG|A>q|Nk`}KSo>bMOm1Nd^z9E=6!Fd! zu6zk}7M=5tWq}6R#s8xZZ_F$m*NY7dhJQD>$^L*X_1 zRd>>l{l`UUG=S?bnIa>LR)b+_fv~3JJyXk%V67}{aeXM@*!tE;{DJ+{qO5%t|Fx%W zjc2mavL|Z64R^pL&!T-T<|PGJu*lE>^#{ZU%o=j$e!bqG`8+0O8Ddp9`OBK+mB(_eVI_D?iFnDh5$pXia7_@dXA;CQ}c)>&la zmEWfvlWv`P3LXB%bFH*@OFlCm!8ls}$fxUNUbVlaV6g6_4zr?9TuGOr&-LqmOPFM& zI@-ENrvCI7dU_f+MXS%v1TX3S!xgObW@pFcCAdxGHubC}SCvcH%({0?=Cb-yC)15J zq(%4MZ>_qVp(Y1ccReU3Lq5DH~_SoR# zu)%ffd|z*hD(YhEhFChwG7Bzp`&xtDZHqFtJ*qC%wQt`rJU8DcBmepKE-ruML~=gX zkgptQSHlw&0qou#6Q-At`FsDL+QXw`RYIRzr%7YwoOfjNwGpk7582QQ+=}l8e(i=? z$3^%ko_xd#egU~5#3srwzZrKOLMWpI@OncwS5-57#Z5P`kkeq*Q$RKlB2zc*C0U{^ zq~>mLj@*4f3b)9-^yUl7BkQy?B@sYZ^54RVoW;H8elmRA+&Y;SoCrAi0lZ(bf3l5v zcHoU_vh`Jd^5}HaaVjl~=*Frc5zf3}!-jM1xmMk!Q{yQV&RtJzPK{e@X=#bvm>M|} z$g>7W4wNVuv{{vLrdLAA_d|SA(!H*(E*(w=+{kU_0(p*{k-}B2?Y+NiF*{jtI3aLT%%Q6x-vsO^d2V6c0A}4yUhlY_jy$2en-&S zUVOF#IGMZ*P$yml3pF#HJ@k%0_V~l~aDQI9TGZ^HyoWfIB4j->96vmPurx+vzN)p* z1%Z649}lmT)=;Rw)1K31-$$Ppv+3VR)kx8OeMtpW>U%5@jAY+?seETEs>C_*+2|TB zYcMz7ufA;0$3z}+oZoWQr2c&0Y0?E!KO=9|`7It$`cV^+r;%a?0N8jQI1M-vz-qlT z`=&;26T{|f`D^s+!Q7BtJzGKgH$XnegfE|RHur|3@5JnPA<9MsNG(bDMIAJ`mN}zJ z=dV}nK#SXhDvF0)C$mpXq$DJG$31o869kG39#8WcqXhIbDC0Pt7#AMOGK{b7Gb)!W z66#QFrTLqVu?B&8v$RfBfxi1<4J_ffguW=?UsB@@8qcrPJRS9?%x&*|NG?8d`hCZ# zAINz49pCw;x@_Rf8~d55%yzqTX{L<{GoKK4eEfsK&gJ3p*pGhiAPv_jM9zLm|&5WbKpRbhELrG&r86A86^D(fjq~s>GHX zBL$rA{Ih2>NjHkE9(OwSkTdmCMIeF<7Km^1NLaM7TlaqSg@0Vy*O*xEM?X+F0kRw! z`Lh0$ye*i^;w_mdy8DE|kf~XUn;aN43gl6#Ta&s26m8ysA~?M11#)$ZGM9^uuOAqb zHYDq$dn1vggurP3)*Y|-WdMrr3R0C*kyTPq*lgE)LF9T*dD=zXi%xBcBRF%Od2I3K zQIT+NNW03=d=~z@s_db3i}rUhoTQ`NI4WBUIkyUcHST)LI&SVLOw~__hX3mhhq3)x z?iLdA7u0OF-qod52}0=Atim@A43hos+im8Po~s12BK1CoR9xz6F-!5qYc*E= z-OmKD((NAGcQ}d|*G9_hS4PmJd!|3d|DvCC?8$#^i6((|bZ$4oaB-V;jW4zdP{&*a zM+skCnGheJx7o|LrImK%iRcA`cvJ%IJl~!A=LppMEg4uW2P$%Q(aXnkrhhz=mexb4 zr@QW$kZsMvmAY#-U7ArVr7H19=aq34L$_(DXi#3b$sE5c~Dq0FS6nV4$~ z@pll*1KGGKW)}m1g>ztc7-XF^1MtuWDl+fvhqqv!`Xc4`*;yMG(e;I50F?pOg+5|2 zWUL6E!~Kd&Q3#KK7xy`8>hW8h-*SBQ0Owfj3p(jKWJh=f1bnezvG3qtz)d9+vO(ez zblnR%7k;{a;M0M1{Nrj;$Og$mG%oilrOp?yYNE~ z-h1JP|KT>qfp%{1f_YRF6j0F+!?}!n&rMei5kT&s3Wb5bJF|d_U@GDmGErV=$bc>F z`u9rXFRzUh6fOl?hPn^m{QJIF$2QUTsp0^z0kt8r2Ri$&scHQ1Xc3lgxI6t!;saCq z1=o1S--pc~aG4g(scp)xoEwnfZ`*|Fhv=Y5S@U2zYOfDc3IhcH{iXlD-dESe6^p(Oo7_wK8?A5NdrC0sX}?(BwQvW_abQRTlwq@yC%I z6B;&W)oPwua>0WW5!*CR1Zm44$Y+Qw)1v{h+k@OvKMh=9sFD2eL{>6Arzb4@Lk%T+ z;B^&-z8IV+{o=c(U+nz-dvMq#*Rjp9_sNUzJLRvY@E;H4u|QS>fmtuSnAFVA=iT7c zJ0fmv&f8Y;785yZexmgvh?7MSz5j_i-^WgUFBoT-@63?gLGe1}&FjdLBb`Wv9F-?0UR51cfL5d1z}q{Qg|}`{|8xHyn__ z-Lb{x&nE)HA#6rgB^yo`BO%tepMTm2r86Rz$^(eBDS4VvRJ|x8Xq%mW zQeB?pEj6l-QeRZe-RQ;`dZENq7Nd5mV&QLdlau?=@M!)LCIy7>L_bPxZyboWbk_Z5 zNttcU!nuACtRW)ck>SPu27H2?cCt>0-Jd6cDmZpzmuBZ899#UvzGEXy4XYOQ@{6B! z?R7~)bQIfb4CfvCpNT2C-WXi+*j>>TE1O(iGPa-6vd23rC12 zse&iQT9=>fkY|-(_MX9b*$*r2`x;O}(e1VCsV69bi&0_w)Nb=w8^9?rTelE1P6^17 z?tsHTNSvQ|3T={mNPg{4KR+M?PN9ttkC*DVt6faV89SN= z?h#@ZWc{f-){Xf03EB0G#rKuBY(y&E57L8*fjlB$G9^&tKmDJD290|NltgKcR=3!$ zA@s*C*!>`e;X+c^a|zQv;S!sk>_J_M+;mTn19iGrAm@^3=MX7%Wd~`Bf3C}{_AtVi zYe4|xhqRw)W0LH#ZzrFSnSU|m{e(B7*ID4Myx3LjWtG2(0o%&HNn}yVuqQ=gpgT`WXWU(Wgy3gY6_t5zGcu%BROP~A8aUg4H2X2~JPJj9#dD^t< zdHZ%-tB=yX3fRQz{SGg=*5$RU6nhw}P~O~i6y)+yJU^j z!a;_7i&f!@UBxbw?QCfHQp>0E?J9xAu;(_AUu}@n8k7b|`CmxR}ZM(|V3Z z37Bx;KHoPtQuHZG(MM|jPksM>u4xl9-ETN6w{u4UxbkSA6G^c?bH)=vX-i(2@xk69 zCL1Q`M%2vMoOk$khh*4eWLtx)FO%^mHkPNSR8PR+F6=^{*!xPBv7HaF+sEOC9C#UW zDBZH1({NVxc1Sc=;eW>~Sey8d6dB?Br48+K39}o)o;$oi6KUbQWBC8T8)@*iv z!%%}4`n_Z_k2a4TSh>xv)%+8zJYv(dq?TKQi1^X`smo-O2M8-V)a&kd=gwI@fQhyf zrv!7t7dot^c&{iJyJSagd3E9NW80>)so;wu6?=_?18K0X$QvMg7|nTS-(=%y{SrpW zwzXKm_E0I4U+~;yY>ZcLmJ%L%*Z(rD`~I$%SzX=;L|g}yX+JC(GGX4NPdg5#f9}F6 z@df{sV$jYLQLw5|q0*H#)0cP=hQ5lp==AfQpCdl&ISZg(mM!f3b(QzM+bMYIJ=pX- zo3Dz`!eD*(C1LXJp>HSO9|c28Ln1es3VvOQAz38u^d_5Hg8ZWfMWmh^{06qc=zq`f_#`Ro{ z9Fi8B;V`71@A2SKF@#$pg2T`Ob>ISg1|C-}T|c7qf^h#C0-@394_O&@5km#&%!{YD z^>}c;rOv@Ux_6jqzZlAOwNo~loXP#Q5^3Pgii(ONpeyP#2igpvn9B-CX=_wxy=gmj z_i^^OyPLX-nN{yWBB>Mx6_(mlPppU?a7_d4#Kzi?WFnpynafiBNpB3n<79dE%RKr9hSc^jABC^k)!3?{fn_zJ~6eZ17}@;1JD&0f!HEzyD#Mg z@s400czRBugpg=|!;4tAPW^pk47Mew4coHg2CHkZTHb$Id<)r2C43wl78VyAenUN| zUsXW?mgL-Y4TZ!ZVjhIvc$5567iivEcoy{))15JMQJXB`+}DkG20VK@ln zSMnaIUW2xGFq_~0ihUG_lrMR$U$6+rP!kmw{#Igd1#LEZ!EC29E!h8m%a8OqHRfgDu-g3D#|1&rXPczTla4Nl}v zau0GkJa*{vGErU(CsC0!Lp-qO@O%NXj+&~{r> +#include + +#include +#include +#include +#include +#include + +namespace branched_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..edd018647 100644 --- a/networks/he-burn/ase-iron/derived_rates.H +++ b/networks/he-burn/ase-iron/derived_rates.H @@ -7,5430 +7,5434 @@ #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_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; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::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 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 = 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 = 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_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; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::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 = 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; - // 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 = 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; - 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; - // 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; - 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; - 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; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += 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 = 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; - // 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; + ln_set_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.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; - 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; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += 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 = 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 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; + ln_set_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 = 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; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (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_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) { + // V47 + p --> 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 p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition 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 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 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 - 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 ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::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 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 = 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 = 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_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_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_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_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_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_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_HOST_DEVICE AMREX_INLINE -void -fill_derived_rates(const tf_t& tfactors, T& rate_eval) -{ + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates(const tf_t& tfactors, T& rate_eval) + { - amrex::ignore_unused(tfactors); - amrex::ignore_unused(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_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 + { + // 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; + } } - } - { - // p_V47_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}; + amrex::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_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_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; + } } - } - { - // 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; + } } - } - { - // 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; + } } - } - { - // 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; + } } - } - { - // 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; + } } - } - { - // 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; + } } - } - { - // 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; + } } - } + } + } #endif diff --git a/networks/he-burn/ase-iron/modified_rates.H b/networks/he-burn/ase-iron/modified_rates.H index e63de5077..0d3f58970 100644 --- a/networks/he-burn/ase-iron/modified_rates.H +++ b/networks/he-burn/ase-iron/modified_rates.H @@ -12,6 +12,7 @@ namespace modified_rates { + using namespace reaclib_rates; using namespace temp_tabular; template @@ -19,6 +20,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 +30,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 +93,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 +103,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..f1cd9a44d 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-22-g7128998de diff --git a/networks/he-burn/ase-iron/reaclib_rates.H b/networks/he-burn/ase-iron/reaclib_rates.H index 901673f6e..01233eb65 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_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_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_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_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_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_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_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_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_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_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_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_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; + } } - } - { - // 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_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_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; + } } - } - { - // 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_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_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; + } } - } - { - // 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_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; + } } - } - { - // 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; + } } - } - { - // 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..0416f23be --- /dev/null +++ b/networks/he-burn/ase-iron/tabular_weak_rates.H @@ -0,0 +1,83 @@ +#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, const amrex::Real rhoy, + 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..94a7e0bcb 100644 --- a/networks/he-burn/ase-iron/temperature_table_rates.H +++ b/networks/he-burn/ase-iron/temperature_table_rates.H @@ -16,7 +16,7 @@ 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) { 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..80fd864ec 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_Ar36_reaclib = 26, + k_Cl35_p_to_He4_S32_reaclib = 27, + k_Ar36_He4_to_Ca40_reaclib = 28, + k_K39_p_to_Ca40_reaclib = 29, + k_K39_p_to_He4_Ar36_reaclib = 30, + k_Ca40_He4_to_Ti44_reaclib = 31, + k_Sc43_p_to_Ti44_reaclib = 32, + k_Sc43_p_to_He4_Ca40_reaclib = 33, + k_Ti44_He4_to_Cr48_reaclib = 34, + k_Ti44_He4_to_p_V47_reaclib = 35, + k_V47_p_to_Cr48_reaclib = 36, + k_Cr48_He4_to_Fe52_reaclib = 37, + k_Cr48_He4_to_p_Mn51_reaclib = 38, + k_Mn51_p_to_Fe52_reaclib = 39, + k_Fe52_He4_to_Ni56_reaclib = 40, + k_Fe52_He4_to_p_Co55_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_V47_p_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_Mn51_p_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_Co55_p_to_He4_Fe52_derived = 101, + NumRates = k_Co55_p_to_He4_Fe52_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_Ar36_reaclib", // 26, + "Cl35_p_to_He4_S32_reaclib", // 27, + "Ar36_He4_to_Ca40_reaclib", // 28, + "K39_p_to_Ca40_reaclib", // 29, + "K39_p_to_He4_Ar36_reaclib", // 30, + "Ca40_He4_to_Ti44_reaclib", // 31, + "Sc43_p_to_Ti44_reaclib", // 32, + "Sc43_p_to_He4_Ca40_reaclib", // 33, + "Ti44_He4_to_Cr48_reaclib", // 34, + "Ti44_He4_to_p_V47_reaclib", // 35, + "V47_p_to_Cr48_reaclib", // 36, + "Cr48_He4_to_Fe52_reaclib", // 37, + "Cr48_He4_to_p_Mn51_reaclib", // 38, + "Mn51_p_to_Fe52_reaclib", // 39, + "Fe52_He4_to_Ni56_reaclib", // 40, + "Fe52_He4_to_p_Co55_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, + "V47_p_to_He4_Ti44_derived", // 95, "Fe52_to_He4_Cr48_derived", // 96, "Fe52_to_p_Mn51_derived", // 97, - "p_Mn51_to_He4_Cr48_derived", // 98, + "Mn51_p_to_He4_Cr48_derived", // 98, "Ni56_to_He4_Fe52_derived", // 99, "Ni56_to_p_Co55_derived", // 100, - "p_Co55_to_He4_Fe52_derived" // 101, + "Co55_p_to_He4_Fe52_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..60010a910 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 @@ -384,7 +379,7 @@ void evaluate_rates(const burn_t& state, // 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 +391,7 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -409,12 +404,20 @@ void evaluate_rates(const burn_t& state, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. - fill_derived_rates(tfactors, rate_eval); + derived_rates::fill_rates(tfactors, rate_eval); + + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + // We do this after DerivedRate in case the branching depends + // on a derived rate. + branched_rates::fill_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 +425,23 @@ 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); + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); } @@ -495,6 +493,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; @@ -548,35 +547,35 @@ void rhs_nuc(const burn_t& state, 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 +584,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)); @@ -741,40 +740,40 @@ void jac_nuc(const burn_t& state, 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 +791,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 +848,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 +896,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 +939,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 +962,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 +989,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 +1002,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 +1032,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 +1043,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 +1078,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 +1093,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 +1122,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 +1169,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 +1189,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 +1214,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 +1234,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 +1261,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 +1284,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 +1305,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 +1328,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..6a8556dfc --- /dev/null +++ b/networks/he-burn/ase-test/branched_rates.H @@ -0,0 +1,31 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_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..862bb7f87 100644 --- a/networks/he-burn/ase-test/derived_rates.H +++ b/networks/he-burn/ase-test/derived_rates.H @@ -7,3837 +7,3841 @@ #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_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; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::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 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 = 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 = 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_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; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::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 = 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; - // 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 = 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; - 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; - // 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; - 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; - 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; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += 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 = 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; - // 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; + ln_set_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.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; - 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; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += 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 = 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 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; + ln_set_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 = 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; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (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_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) { + // V47 + p --> 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 p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition 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 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 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 - 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 ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::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 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 = 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 = 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_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_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_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_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_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_DEVICE AMREX_INLINE + void + fill_rates(const tf_t& tfactors, T& rate_eval) + { -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); - 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; + } } - } - { - // 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 + { + // 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; + } } - } - { - // p_V47_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}; + amrex::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_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_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; + } } - } - { - // 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 + { + // 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; + } } - } - { - // 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/he-burn/ase-test/modified_rates.H b/networks/he-burn/ase-test/modified_rates.H index e63de5077..8810eba61 100644 --- a/networks/he-burn/ase-test/modified_rates.H +++ b/networks/he-burn/ase-test/modified_rates.H @@ -12,6 +12,7 @@ namespace modified_rates { + using namespace reaclib_rates; using namespace temp_tabular; template @@ -19,7 +20,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 +28,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 +87,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 +97,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..f1cd9a44d 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-22-g7128998de diff --git a/networks/he-burn/ase-test/reaclib_rates.H b/networks/he-burn/ase-test/reaclib_rates.H index 9f017812f..b26968c71 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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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; + } } - } - { - // 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_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_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; + } } - } - { - // 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_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_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; + } } - } - { - // 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_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; + } } - } - { - // 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; + } } - } - { - // 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_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; + } } - } - { - // 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; + } } - } - { - // 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_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; + } } - } - { - // 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_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..7cb5ef66d --- /dev/null +++ b/networks/he-burn/ase-test/tabular_weak_rates.H @@ -0,0 +1,32 @@ +#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, const amrex::Real rhoy, + 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..ba837e6f0 100644 --- a/networks/he-burn/ase-test/temperature_table_rates.H +++ b/networks/he-burn/ase-test/temperature_table_rates.H @@ -81,7 +81,7 @@ 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) { 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..70cf91520 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_Ar36_reaclib = 25, + k_Cl35_p_to_He4_S32_reaclib = 26, + k_Ar36_He4_to_Ca40_reaclib = 27, + k_K39_p_to_Ca40_reaclib = 28, + k_K39_p_to_He4_Ar36_reaclib = 29, + k_Ca40_He4_to_Ti44_reaclib = 30, + k_Sc43_p_to_Ti44_reaclib = 31, + k_Sc43_p_to_He4_Ca40_reaclib = 32, + k_Ti44_He4_to_Cr48_reaclib = 33, + k_Ti44_He4_to_p_V47_reaclib = 34, + k_V47_p_to_Cr48_reaclib = 35, + k_Cr48_He4_to_Fe52_reaclib = 36, + k_Cr48_He4_to_p_Mn51_reaclib = 37, + k_Mn51_p_to_Fe52_reaclib = 38, + k_Fe52_He4_to_Ni56_reaclib = 39, + k_Fe52_He4_to_p_Co55_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_V47_p_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_Mn51_p_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_Co55_p_to_He4_Fe52_derived = 97, + NumRates = k_Co55_p_to_He4_Fe52_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_Ar36_reaclib", // 25, + "Cl35_p_to_He4_S32_reaclib", // 26, + "Ar36_He4_to_Ca40_reaclib", // 27, + "K39_p_to_Ca40_reaclib", // 28, + "K39_p_to_He4_Ar36_reaclib", // 29, + "Ca40_He4_to_Ti44_reaclib", // 30, + "Sc43_p_to_Ti44_reaclib", // 31, + "Sc43_p_to_He4_Ca40_reaclib", // 32, + "Ti44_He4_to_Cr48_reaclib", // 33, + "Ti44_He4_to_p_V47_reaclib", // 34, + "V47_p_to_Cr48_reaclib", // 35, + "Cr48_He4_to_Fe52_reaclib", // 36, + "Cr48_He4_to_p_Mn51_reaclib", // 37, + "Mn51_p_to_Fe52_reaclib", // 38, + "Fe52_He4_to_Ni56_reaclib", // 39, + "Fe52_He4_to_p_Co55_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, + "V47_p_to_He4_Ti44_derived", // 91, "Fe52_to_He4_Cr48_derived", // 92, "Fe52_to_p_Mn51_derived", // 93, - "p_Mn51_to_He4_Cr48_derived", // 94, + "Mn51_p_to_He4_Cr48_derived", // 94, "Ni56_to_He4_Fe52_derived", // 95, "Ni56_to_p_Co55_derived", // 96, - "p_Co55_to_He4_Fe52_derived" // 97, + "Co55_p_to_He4_Fe52_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..e7c383faa 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 @@ -364,7 +359,7 @@ void evaluate_rates(const burn_t& state, // 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 +371,7 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -389,12 +384,20 @@ void evaluate_rates(const burn_t& state, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. - fill_derived_rates(tfactors, rate_eval); + derived_rates::fill_rates(tfactors, rate_eval); + + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + // We do this after DerivedRate in case the branching depends + // on a derived rate. + branched_rates::fill_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 +405,23 @@ 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); + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); } @@ -475,6 +473,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; @@ -526,32 +525,32 @@ void rhs_nuc(const burn_t& state, 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 +559,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)); @@ -710,37 +709,37 @@ void jac_nuc(const burn_t& state, 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 +757,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 +811,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 +857,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 +898,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 +918,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 +945,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 +956,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 +988,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 +1001,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 +1030,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 +1075,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 +1118,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 +1163,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 +1184,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 +1205,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 +1226,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/branched_rates.H b/networks/he-burn/ase/branched_rates.H new file mode 100644 index 000000000..6a8556dfc --- /dev/null +++ b/networks/he-burn/ase/branched_rates.H @@ -0,0 +1,31 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_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..3c9fe29a8 100644 --- a/networks/he-burn/ase/derived_rates.H +++ b/networks/he-burn/ase/derived_rates.H @@ -7,3690 +7,3694 @@ #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; - 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_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; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::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 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 = 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 = 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_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; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::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 = 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; - // 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 = 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; - 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; - // 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; - 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; - 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; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += 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 = 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; - // 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; + ln_set_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.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; - 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; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += 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 = 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 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; + ln_set_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 = 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; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (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_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) { + // V47 + p --> 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 p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition 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 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 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 - 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 ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::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 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 = 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 = 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_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_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_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_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_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_DEVICE AMREX_INLINE + void + fill_rates(const tf_t& tfactors, T& rate_eval) + { -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); - 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; + } } - } - { - // 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 + { + // 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; + } } - } - { - // p_V47_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}; + amrex::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_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_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; + } } - } - { - // 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 + { + // 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; + } } - } - { - // 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/he-burn/ase/modified_rates.H b/networks/he-burn/ase/modified_rates.H index e63de5077..0d3f58970 100644 --- a/networks/he-burn/ase/modified_rates.H +++ b/networks/he-burn/ase/modified_rates.H @@ -12,6 +12,7 @@ namespace modified_rates { + using namespace reaclib_rates; using namespace temp_tabular; template @@ -19,6 +20,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 +30,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 +93,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 +103,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..f1cd9a44d 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-22-g7128998de diff --git a/networks/he-burn/ase/reaclib_rates.H b/networks/he-burn/ase/reaclib_rates.H index 3a36f7af9..c3971df83 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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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; + } } - } - { - // 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_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_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; + } } - } - { - // 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_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_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; + } } - } - { - // 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_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; + } } - } - { - // 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; + } } - } - { - // 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_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; + } } - } - { - // 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; + } } - } - { - // 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_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; + } } - } - { - // 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_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..7cb5ef66d --- /dev/null +++ b/networks/he-burn/ase/tabular_weak_rates.H @@ -0,0 +1,32 @@ +#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, const amrex::Real rhoy, + 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..94a7e0bcb 100644 --- a/networks/he-burn/ase/temperature_table_rates.H +++ b/networks/he-burn/ase/temperature_table_rates.H @@ -16,7 +16,7 @@ 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) { 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..5f2d5f193 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_Ar36_reaclib = 56, + k_Cl35_p_to_He4_S32_reaclib = 57, + k_Ar36_He4_to_Ca40_reaclib = 58, + k_K39_p_to_Ca40_reaclib = 59, + k_K39_p_to_He4_Ar36_reaclib = 60, + k_Ca40_He4_to_Ti44_reaclib = 61, + k_Sc43_p_to_Ti44_reaclib = 62, + k_Sc43_p_to_He4_Ca40_reaclib = 63, + k_Ti44_He4_to_Cr48_reaclib = 64, + k_Ti44_He4_to_p_V47_reaclib = 65, + k_V47_p_to_Cr48_reaclib = 66, + k_Cr48_He4_to_Fe52_reaclib = 67, + k_Cr48_He4_to_p_Mn51_reaclib = 68, + k_Mn51_p_to_Fe52_reaclib = 69, + k_Fe52_He4_to_Ni56_reaclib = 70, + k_Fe52_He4_to_p_Co55_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_V47_p_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_Mn51_p_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_Co55_p_to_He4_Fe52_derived = 157, + NumRates = k_Co55_p_to_He4_Fe52_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_Ar36_reaclib", // 56, + "Cl35_p_to_He4_S32_reaclib", // 57, + "Ar36_He4_to_Ca40_reaclib", // 58, + "K39_p_to_Ca40_reaclib", // 59, + "K39_p_to_He4_Ar36_reaclib", // 60, + "Ca40_He4_to_Ti44_reaclib", // 61, + "Sc43_p_to_Ti44_reaclib", // 62, + "Sc43_p_to_He4_Ca40_reaclib", // 63, + "Ti44_He4_to_Cr48_reaclib", // 64, + "Ti44_He4_to_p_V47_reaclib", // 65, + "V47_p_to_Cr48_reaclib", // 66, + "Cr48_He4_to_Fe52_reaclib", // 67, + "Cr48_He4_to_p_Mn51_reaclib", // 68, + "Mn51_p_to_Fe52_reaclib", // 69, + "Fe52_He4_to_Ni56_reaclib", // 70, + "Fe52_He4_to_p_Co55_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, + "V47_p_to_He4_Ti44_derived", // 151, "Fe52_to_He4_Cr48_derived", // 152, "Fe52_to_p_Mn51_derived", // 153, - "p_Mn51_to_He4_Cr48_derived", // 154, + "Mn51_p_to_He4_Cr48_derived", // 154, "Ni56_to_He4_Fe52_derived", // 155, "Ni56_to_p_Co55_derived", // 156, - "p_Co55_to_He4_Fe52_derived" // 157, + "Co55_p_to_He4_Fe52_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..d7195e338 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 @@ -584,7 +579,7 @@ void evaluate_rates(const burn_t& state, // 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 +591,7 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -609,102 +604,22 @@ void evaluate_rates(const burn_t& state, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. - 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); + derived_rates::fill_rates(tfactors, rate_eval); - 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); + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + // We do this after DerivedRate in case the branching depends + // on a derived rate. + branched_rates::fill_rates(tfactors, rate_eval); - 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); + // Fill approximate rates - 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); + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); } @@ -759,85 +674,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 +711,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; @@ -937,69 +800,69 @@ void rhs_nuc(const burn_t& state, 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 +871,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)); @@ -1260,81 +1123,81 @@ void jac_nuc(const burn_t& state, 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 +1215,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 +1313,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 +1329,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 +1385,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 +1455,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 +1478,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 +1527,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 +1553,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 +1601,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 +1616,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 +1629,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 +1675,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 +1703,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 +1747,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 +1759,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 +1777,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 +1819,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 +1854,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 +1894,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 +1906,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 +1917,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 +1967,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 +1981,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 +1992,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 +2039,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 +2055,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 +2080,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 +2113,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 +2125,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 +2158,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 +2190,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 +2204,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 +2265,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 +2281,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 +2292,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 +2338,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 +2356,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 +2367,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 +2411,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 +2432,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 +2486,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 +2508,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 +2526,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 +2558,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 +2586,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 +2631,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 +2662,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 +2706,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 +2735,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 +2744,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 +2774,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 +2795,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 +2812,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 +2849,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 +2870,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 +2897,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 +2922,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 +2943,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 +2970,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 +2997,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 +3048,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 +3069,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 +3120,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..6a8556dfc --- /dev/null +++ b/networks/he-burn/cno-he-burn-33a/branched_rates.H @@ -0,0 +1,31 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_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..dbec20091 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,6166 @@ #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_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; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::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 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 = 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 = 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_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; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::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 = 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; - // 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 = 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; - 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; - // 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; - 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; - 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; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += 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 = 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; - // 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; + ln_set_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.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; - 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; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += 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 = 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 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; + ln_set_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 = 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; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (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_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) { + // V47 + p --> 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 p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition 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 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 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 - 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 ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::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 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 = 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 = 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_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_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_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_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_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_DEVICE AMREX_INLINE + void + fill_rates(const tf_t& tfactors, T& rate_eval) + { -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); - 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; + } } - } - { - // 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 + { + // 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; + } } - } - { - // p_V47_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}; + amrex::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_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_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; + } } - } - { - // 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 + { + // 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; + } } - } - { - // 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/he-burn/cno-he-burn-33a/modified_rates.H b/networks/he-burn/cno-he-burn-33a/modified_rates.H index e63de5077..0d3f58970 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,7 @@ namespace modified_rates { + using namespace reaclib_rates; using namespace temp_tabular; template @@ -19,6 +20,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 +30,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 +93,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 +103,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..f1cd9a44d 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-22-g7128998de 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..807782df8 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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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; + } } - } - { - // 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_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_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; + } } - } - { - // 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_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_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; + } } - } - { - // 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_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; + } } - } - { - // 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; + } } - } - { - // 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_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; + } } - } - { - // 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; + } } - } - { - // 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_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; + } } - } - { - // 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_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..0375af9a9 --- /dev/null +++ b/networks/he-burn/cno-he-burn-33a/tabular_weak_rates.H @@ -0,0 +1,115 @@ +#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, const amrex::Real rhoy, + 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..94a7e0bcb 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 @@ -16,7 +16,7 @@ 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) { 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..fafed1184 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_Ar36_reaclib = 66, + k_Cl35_p_to_He4_S32_reaclib = 67, + k_Ar36_He4_to_Ca40_reaclib = 68, + k_K39_p_to_Ca40_reaclib = 69, + k_K39_p_to_He4_Ar36_reaclib = 70, + k_Ca40_He4_to_Ti44_reaclib = 71, + k_Sc43_p_to_Ti44_reaclib = 72, + k_Sc43_p_to_He4_Ca40_reaclib = 73, + k_Ti44_He4_to_Cr48_reaclib = 74, + k_Ti44_He4_to_p_V47_reaclib = 75, + k_V47_p_to_Cr48_reaclib = 76, + k_Cr48_He4_to_Fe52_reaclib = 77, + k_Cr48_He4_to_p_Mn51_reaclib = 78, + k_Mn51_p_to_Fe52_reaclib = 79, + k_Fe52_He4_to_Ni56_reaclib = 80, + k_Fe52_He4_to_p_Co55_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_V47_p_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_Mn51_p_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_Co55_p_to_He4_Fe52_derived = 179, + NumRates = k_Co55_p_to_He4_Fe52_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_Ar36_reaclib", // 66, + "Cl35_p_to_He4_S32_reaclib", // 67, + "Ar36_He4_to_Ca40_reaclib", // 68, + "K39_p_to_Ca40_reaclib", // 69, + "K39_p_to_He4_Ar36_reaclib", // 70, + "Ca40_He4_to_Ti44_reaclib", // 71, + "Sc43_p_to_Ti44_reaclib", // 72, + "Sc43_p_to_He4_Ca40_reaclib", // 73, + "Ti44_He4_to_Cr48_reaclib", // 74, + "Ti44_He4_to_p_V47_reaclib", // 75, + "V47_p_to_Cr48_reaclib", // 76, + "Cr48_He4_to_Fe52_reaclib", // 77, + "Cr48_He4_to_p_Mn51_reaclib", // 78, + "Mn51_p_to_Fe52_reaclib", // 79, + "Fe52_He4_to_Ni56_reaclib", // 80, + "Fe52_He4_to_p_Co55_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, + "V47_p_to_He4_Ti44_derived", // 173, "Fe52_to_He4_Cr48_derived", // 174, "Fe52_to_p_Mn51_derived", // 175, - "p_Mn51_to_He4_Cr48_derived", // 176, + "Mn51_p_to_He4_Cr48_derived", // 176, "Ni56_to_He4_Fe52_derived", // 177, "Ni56_to_p_Co55_derived", // 178, - "p_Co55_to_He4_Fe52_derived" // 179, + "Co55_p_to_He4_Fe52_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..3a3ca9c75 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 @@ -664,7 +659,7 @@ void evaluate_rates(const burn_t& state, // 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 +671,7 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -689,118 +684,22 @@ void evaluate_rates(const burn_t& state, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. - 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); + derived_rates::fill_rates(tfactors, rate_eval); - 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); + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + // We do this after DerivedRate in case the branching depends + // on a derived rate. + branched_rates::fill_rates(tfactors, rate_eval); - 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); + // Fill approximate rates - 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); + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); } @@ -870,179 +769,117 @@ void get_ydot_weak(const burn_t& state, const tf_t tfactors = evaluate_tfactors(state.T); { - // N13_to_C13_reaclib + // Mg24_p_p_to_Na22_He4_beta_pos_modified 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; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_Mg24); +#endif + 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; } { - // O14_to_N14_reaclib + // N13_to_C13_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_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; } { - // O15_to_N15_reaclib + // O14_to_N14_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_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; } { - // p_Mg24_to_Na22_He4_modified + // O15_to_N15_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_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; + 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_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; @@ -1078,83 +915,83 @@ void rhs_nuc(const burn_t& state, 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 +1000,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)); @@ -1439,85 +1276,85 @@ void jac_nuc(const burn_t& state, 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 +1372,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 +1473,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 +1489,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 +1547,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 +1619,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 +1642,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 +1693,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 +1719,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 +1769,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 +1784,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 +1797,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 +1845,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 +1873,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 +1919,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 +1931,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 +1949,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 +1993,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 +2028,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 +2070,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 +2082,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 +2093,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 +2145,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 +2159,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 +2170,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 +2220,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 +2236,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 +2261,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 +2297,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 +2309,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 +2342,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 +2376,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 +2390,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 +2422,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 +2454,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 +2470,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 +2481,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 +2500,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 +2529,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 +2547,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 +2558,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 +2577,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 +2604,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 +2625,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 +2656,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 +2682,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 +2704,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 +2722,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 +2757,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 +2781,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 +2799,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 +2832,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 +2858,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 +2908,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 +2936,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 +2984,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 +3015,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 +3061,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 +3082,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 +3099,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 +3139,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 +3160,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 +3187,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 +3216,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 +3237,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 +3262,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 +3294,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 +3345,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 +3369,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 +3422,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..6a8556dfc --- /dev/null +++ b/networks/he-burn/cno-he-burn-34am/branched_rates.H @@ -0,0 +1,31 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_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..fc9212835 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,7063 @@ #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_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; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::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 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 = 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 = 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_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; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::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 = 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; - // 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 = 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; - 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; - // 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; - 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; - 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; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += 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 = 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; - // 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; + ln_set_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.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; - 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; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += 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 = 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 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; + ln_set_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 = 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; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (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_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) { + // V47 + p --> 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 p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition 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 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 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 - 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 ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::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 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 = 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 = 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_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_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_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_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_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(const tf_t& tfactors, T& rate_eval) + { - amrex::ignore_unused(tfactors); - amrex::ignore_unused(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 + { + // 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; + } } - } - { - // p_V47_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}; + amrex::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_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_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; + } } - } - { - // 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 + { + // 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; + } } - } - { - // 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/he-burn/cno-he-burn-34am/modified_rates.H b/networks/he-burn/cno-he-burn-34am/modified_rates.H index 13c5468cd..0b2252fbf 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,7 @@ namespace modified_rates { + using namespace reaclib_rates; using namespace temp_tabular; template @@ -19,6 +20,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 +30,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 +109,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 +119,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 +137,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 +155,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..f1cd9a44d 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-22-g7128998de 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..d269c53eb 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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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; + } } - } - { - // 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_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_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; + } } - } - { - // 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_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_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; + } } - } - { - // 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_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; + } } - } - { - // 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; + } } - } - { - // 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_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; + } } - } - { - // 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; + } } - } - { - // 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_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; + } } - } - { - // 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_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..e269f697c --- /dev/null +++ b/networks/he-burn/cno-he-burn-34am/tabular_weak_rates.H @@ -0,0 +1,131 @@ +#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, const amrex::Real rhoy, + 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..94a7e0bcb 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 @@ -16,7 +16,7 @@ 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) { 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..d2991b843 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_Ar36_reaclib = 27, + k_Cl35_p_to_He4_S32_reaclib = 28, + k_Ar36_He4_to_Ca40_reaclib = 29, + k_K39_p_to_Ca40_reaclib = 30, + k_K39_p_to_He4_Ar36_reaclib = 31, + k_Ca40_He4_to_Ti44_reaclib = 32, + k_Sc43_p_to_Ti44_reaclib = 33, + k_Sc43_p_to_He4_Ca40_reaclib = 34, + k_Ti44_He4_to_Cr48_reaclib = 35, + k_Ti44_He4_to_p_V47_reaclib = 36, + k_V47_p_to_Cr48_reaclib = 37, + k_Cr48_He4_to_Fe52_reaclib = 38, + k_Cr48_He4_to_p_Mn51_reaclib = 39, + k_Mn51_p_to_Fe52_reaclib = 40, + k_Fe52_He4_to_Ni56_reaclib = 41, + k_Fe52_He4_to_p_Co55_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_V47_p_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_Mn51_p_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_Co55_p_to_He4_Fe52_derived = 92, + NumRates = k_Co55_p_to_He4_Fe52_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_Ar36_reaclib", // 27, + "Cl35_p_to_He4_S32_reaclib", // 28, + "Ar36_He4_to_Ca40_reaclib", // 29, + "K39_p_to_Ca40_reaclib", // 30, + "K39_p_to_He4_Ar36_reaclib", // 31, + "Ca40_He4_to_Ti44_reaclib", // 32, + "Sc43_p_to_Ti44_reaclib", // 33, + "Sc43_p_to_He4_Ca40_reaclib", // 34, + "Ti44_He4_to_Cr48_reaclib", // 35, + "Ti44_He4_to_p_V47_reaclib", // 36, + "V47_p_to_Cr48_reaclib", // 37, + "Cr48_He4_to_Fe52_reaclib", // 38, + "Cr48_He4_to_p_Mn51_reaclib", // 39, + "Mn51_p_to_Fe52_reaclib", // 40, + "Fe52_He4_to_Ni56_reaclib", // 41, + "Fe52_He4_to_p_Co55_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, + "V47_p_to_He4_Ti44_derived", // 86, "Fe52_to_He4_Cr48_derived", // 87, "Fe52_to_p_Mn51_derived", // 88, - "p_Mn51_to_He4_Cr48_derived", // 89, + "Mn51_p_to_He4_Cr48_derived", // 89, "Ni56_to_He4_Fe52_derived", // 90, "Ni56_to_p_Co55_derived", // 91, - "p_Co55_to_He4_Fe52_derived" // 92, + "Co55_p_to_He4_Fe52_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..f118c1f0a 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 @@ -374,7 +369,7 @@ void evaluate_rates(const burn_t& state, // 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 +381,7 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -399,12 +394,20 @@ void evaluate_rates(const burn_t& state, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. - fill_derived_rates(tfactors, rate_eval); + derived_rates::fill_rates(tfactors, rate_eval); + + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + // We do this after DerivedRate in case the branching depends + // on a derived rate. + branched_rates::fill_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 +415,23 @@ 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); + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); } @@ -503,35 +501,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; @@ -573,35 +572,35 @@ void rhs_nuc(const burn_t& state, 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 +609,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)); @@ -766,39 +765,39 @@ void jac_nuc(const burn_t& state, 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 +815,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 +872,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 +886,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 +915,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 +958,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 +1000,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 +1044,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 +1055,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 +1090,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 +1105,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 +1134,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 +1181,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 +1226,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 +1273,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 +1296,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 +1317,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 +1340,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..6a8556dfc --- /dev/null +++ b/networks/he-burn/he-burn-19am/branched_rates.H @@ -0,0 +1,31 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_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..a363b82c6 100644 --- a/networks/he-burn/he-burn-19am/derived_rates.H +++ b/networks/he-burn/he-burn-19am/derived_rates.H @@ -7,3030 +7,3034 @@ #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_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; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::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 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 = 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 = 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_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; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::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 = 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; - // 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 = 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; - 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; - // 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; - 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; - 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; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += 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 = 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; - // 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; + ln_set_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.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; - 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; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += 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 = 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 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; + ln_set_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 = 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; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (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_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) { + // V47 + p --> 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 p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition 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 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 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 - 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 ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::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 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 = 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 = 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_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_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_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_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_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(const tf_t& tfactors, T& rate_eval) + { - amrex::ignore_unused(tfactors); - amrex::ignore_unused(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; + } } - } - { - // 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 + { + // 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; + } } - } - { - // p_V47_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}; + amrex::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_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_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; + } } - } - { - // 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 + { + // 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; + } } - } - { - // 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/he-burn/he-burn-19am/modified_rates.H b/networks/he-burn/he-burn-19am/modified_rates.H index e0ca08a1d..4f9b267d8 100644 --- a/networks/he-burn/he-burn-19am/modified_rates.H +++ b/networks/he-burn/he-burn-19am/modified_rates.H @@ -12,24 +12,27 @@ namespace modified_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 +40,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 +50,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 +77,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 +87,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 +105,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 +149,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 +159,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..f1cd9a44d 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-22-g7128998de diff --git a/networks/he-burn/he-burn-19am/reaclib_rates.H b/networks/he-burn/he-burn-19am/reaclib_rates.H index 6503f44c6..c98a51ddb 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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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; + } } - } - { - // 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_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_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; + } } - } - { - // 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_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_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; + } } - } - { - // 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_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; + } } - } - { - // 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; + } } - } - { - // 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_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; + } } - } - { - // 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; + } } - } - { - // 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_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; + } } - } - { - // 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_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..7cb5ef66d --- /dev/null +++ b/networks/he-burn/he-burn-19am/tabular_weak_rates.H @@ -0,0 +1,32 @@ +#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, const amrex::Real rhoy, + 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..94a7e0bcb 100644 --- a/networks/he-burn/he-burn-19am/temperature_table_rates.H +++ b/networks/he-burn/he-burn-19am/temperature_table_rates.H @@ -16,7 +16,7 @@ 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) { 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..f1b69c28c 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_Ar36_reaclib = 45, + k_Cl35_p_to_He4_S32_reaclib = 46, + k_Ar36_He4_to_Ca40_reaclib = 47, + k_K39_p_to_Ca40_reaclib = 48, + k_K39_p_to_He4_Ar36_reaclib = 49, + k_Ca40_He4_to_Ti44_reaclib = 50, + k_Sc43_p_to_Ti44_reaclib = 51, + k_Sc43_p_to_He4_Ca40_reaclib = 52, + k_Ti44_He4_to_Cr48_reaclib = 53, + k_Ti44_He4_to_p_V47_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,36 +364,36 @@ 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_V47_p_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, @@ -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_Ar36_reaclib", // 45, + "Cl35_p_to_He4_S32_reaclib", // 46, + "Ar36_He4_to_Ca40_reaclib", // 47, + "K39_p_to_Ca40_reaclib", // 48, + "K39_p_to_He4_Ar36_reaclib", // 49, + "Ca40_He4_to_Ti44_reaclib", // 50, + "Sc43_p_to_Ti44_reaclib", // 51, + "Sc43_p_to_He4_Ca40_reaclib", // 52, + "Ti44_He4_to_Cr48_reaclib", // 53, + "Ti44_He4_to_p_V47_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,36 +552,36 @@ 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, + "V47_p_to_He4_Ti44_derived", // 130, "Fe54_to_n_Fe53_derived", // 131, "Fe53_to_n_Fe52_derived", // 132, "Fe56_to_n_Fe55_derived", // 133, @@ -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..c4e45def7 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 @@ -454,7 +449,7 @@ void evaluate_rates(const burn_t& state, // 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 +461,7 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -479,70 +474,22 @@ void evaluate_rates(const burn_t& state, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. - fill_derived_rates(tfactors, rate_eval); - - - // Fill approximate rates - - fill_approx_rates(tfactors, state.rho, Y, rate_eval); + derived_rates::fill_rates(tfactors, 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); + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + // We do this after DerivedRate in case the branching depends + // on a derived rate. + branched_rates::fill_rates(tfactors, rate_eval); - 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); + // Fill approximate rates - 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); + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); } @@ -612,74 +559,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 +625,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; @@ -739,146 +654,146 @@ void rhs_nuc(const burn_t& state, 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 +810,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)); } @@ -1020,13 +935,13 @@ void jac_nuc(const burn_t& state, 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 +978,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 +1071,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 +1110,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 +1193,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 +1239,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 +1284,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 +1345,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 +1405,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 +1467,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 +1480,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 +1531,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 +1548,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 +1593,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 +1658,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 +1721,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 +1786,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 +1811,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 +1848,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 +1873,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 +2093,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 +2128,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 +2155,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 +2189,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 +2214,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 +2253,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 +2267,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 +2279,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 +2320,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 +2337,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 +2345,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 +2389,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 +2407,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 +2448,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 +2470,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 +2519,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 +2581,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 +2600,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 +2643,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 +2709,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..6a8556dfc --- /dev/null +++ b/networks/he-burn/he-burn-28amnp/branched_rates.H @@ -0,0 +1,31 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_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..5c5013d11 100644 --- a/networks/he-burn/he-burn-28amnp/derived_rates.H +++ b/networks/he-burn/he-burn-28amnp/derived_rates.H @@ -7,4332 +7,4336 @@ #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_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; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::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 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 = 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 = 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_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; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::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 = 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; - // 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 = 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; - 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; - // 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; - 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; - 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; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += 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 = 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; - // 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; + ln_set_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.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; - 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; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += 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 = 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 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; + ln_set_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 = 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; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (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_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) { + // V47 + p --> 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 p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition 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 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 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 - 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 ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::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 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 = 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 = 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_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_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_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_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_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_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_HOST_DEVICE AMREX_INLINE -void -fill_derived_rates(const tf_t& tfactors, T& rate_eval) -{ + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates(const tf_t& tfactors, T& rate_eval) + { - amrex::ignore_unused(tfactors); - amrex::ignore_unused(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 + { + // 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; + } } - } - { - // p_V47_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}; + amrex::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_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_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; + } } - } - { - // 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; + } } - } - { - // 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; + } } - } - { - // 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; + } } - } - { - // 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; + } } - } - { - // 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; + } } - } - { - // 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; + } } - } + } + } #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..4f9b267d8 100644 --- a/networks/he-burn/he-burn-28amnp/modified_rates.H +++ b/networks/he-burn/he-burn-28amnp/modified_rates.H @@ -12,24 +12,27 @@ namespace modified_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 +40,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 +50,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 +77,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 +87,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 +105,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 +149,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 +159,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..f1cd9a44d 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-22-g7128998de diff --git a/networks/he-burn/he-burn-28amnp/reaclib_rates.H b/networks/he-burn/he-burn-28amnp/reaclib_rates.H index 4d3222ff2..a451cbe05 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_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_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_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_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_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_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_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_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_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_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_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_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; + } } - } - { - // 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_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_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; + } } - } - { - // 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_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_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; + } } - } - { - // 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_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; + } } - } - { - // 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; + } } - } - { - // 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..0416f23be --- /dev/null +++ b/networks/he-burn/he-burn-28amnp/tabular_weak_rates.H @@ -0,0 +1,83 @@ +#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, const amrex::Real rhoy, + 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..94a7e0bcb 100644 --- a/networks/he-burn/he-burn-28amnp/temperature_table_rates.H +++ b/networks/he-burn/he-burn-28amnp/temperature_table_rates.H @@ -16,7 +16,7 @@ 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) { 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..feda35c42 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_Ar36_reaclib = 69, + k_Cl35_p_to_He4_S32_reaclib = 70, + k_Ar36_He4_to_Ca40_reaclib = 71, + k_K39_p_to_Ca40_reaclib = 72, + k_K39_p_to_He4_Ar36_reaclib = 73, + k_Ca40_He4_to_Ti44_reaclib = 74, + k_Sc43_p_to_Ti44_reaclib = 75, + k_Sc43_p_to_He4_Ca40_reaclib = 76, + k_Ti44_He4_to_Cr48_reaclib = 77, + k_Ti44_He4_to_p_V47_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 = 172, + NumRates = k_V47_p_to_He4_Ti44_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_Ar36_reaclib", // 69, + "Cl35_p_to_He4_S32_reaclib", // 70, + "Ar36_He4_to_Ca40_reaclib", // 71, + "K39_p_to_Ca40_reaclib", // 72, + "K39_p_to_He4_Ar36_reaclib", // 73, + "Ca40_He4_to_Ti44_reaclib", // 74, + "Sc43_p_to_Ti44_reaclib", // 75, + "Sc43_p_to_He4_Ca40_reaclib", // 76, + "Ti44_He4_to_Cr48_reaclib", // 77, + "Ti44_He4_to_p_V47_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" // 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..27d79b58b 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 @@ -534,7 +529,7 @@ void evaluate_rates(const burn_t& state, // 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 +541,7 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -559,118 +554,22 @@ void evaluate_rates(const burn_t& state, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. - 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); + derived_rates::fill_rates(tfactors, rate_eval); - 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); + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + // We do this after DerivedRate in case the branching depends + // on a derived rate. + branched_rates::fill_rates(tfactors, rate_eval); - 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); + // Fill approximate rates - 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); + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); } @@ -740,102 +639,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 +699,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 +708,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; @@ -913,175 +750,175 @@ void rhs_nuc(const burn_t& state, 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 +935,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); } @@ -1283,13 +1120,13 @@ void jac_nuc(const burn_t& state, 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 +1161,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 +1250,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 +1349,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 +1411,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 +1468,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 +1539,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 +1609,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 +1681,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 +1692,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 +1755,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 +1770,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 +1827,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 +1902,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 +1975,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 +2050,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 +2073,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 +2122,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 +2145,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 +2405,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 +2440,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 +2477,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 +2511,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 +2524,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 +2548,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 +2588,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 +2597,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 +2619,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 +2656,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 +2676,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 +2694,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 +2737,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 +2752,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 +2769,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 +2808,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 +2831,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 +2846,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 +2887,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 +2915,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 +2962,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 +2971,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 +2995,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 +3034,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 +3065,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 +3073,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 +3118,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 +3146,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 +3198,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 +3226,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 +3269,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 +3281,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 +3297,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 +3348,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 +3360,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 +3377,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 +3427,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 +3456,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 +3509,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 +3590,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..6a8556dfc --- /dev/null +++ b/networks/he-burn/he-burn-33am/branched_rates.H @@ -0,0 +1,31 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_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..d3f2f42ba 100644 --- a/networks/he-burn/he-burn-33am/derived_rates.H +++ b/networks/he-burn/he-burn-33am/derived_rates.H @@ -7,5694 +7,5698 @@ #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_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; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::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 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 = 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 = 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_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; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::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 = 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; - // 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 = 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; - 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; - // 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; - 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; - 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; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += 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 = 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; - // 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; + ln_set_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.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; - 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; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += 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 = 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 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; + ln_set_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 = 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; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (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_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) { + // V47 + p --> 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 p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition 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 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 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 - 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 ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::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 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 = 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 = 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 + fill_rates(const tf_t& tfactors, T& rate_eval) + { -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); - 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_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 + { + // 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; + } } - } - { - // p_V47_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}; + amrex::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_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_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; + } } - } + } + } #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..4f9b267d8 100644 --- a/networks/he-burn/he-burn-33am/modified_rates.H +++ b/networks/he-burn/he-burn-33am/modified_rates.H @@ -12,24 +12,27 @@ namespace modified_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 +40,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 +50,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 +77,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 +87,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 +105,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 +149,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 +159,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..f1cd9a44d 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-22-g7128998de diff --git a/networks/he-burn/he-burn-33am/reaclib_rates.H b/networks/he-burn/he-burn-33am/reaclib_rates.H index 2c47ecd4c..fa1db1316 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_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_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_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_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_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_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_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_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_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_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_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_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; + } } - } - { - // 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_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_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; + } } - } - { - // 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_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_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; + } } - } - { - // 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_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; + } } - } - { - // 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; + } } - } - { - // 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..b47bb5fd2 --- /dev/null +++ b/networks/he-burn/he-burn-33am/tabular_weak_rates.H @@ -0,0 +1,131 @@ +#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, const amrex::Real rhoy, + 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..94a7e0bcb 100644 --- a/networks/he-burn/he-burn-33am/temperature_table_rates.H +++ b/networks/he-burn/he-burn-33am/temperature_table_rates.H @@ -16,7 +16,7 @@ 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) { 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..f2561f3dd 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 @@ -104,7 +99,7 @@ void evaluate_rates(const burn_t& state, // 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 +111,7 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -129,30 +124,22 @@ void evaluate_rates(const burn_t& state, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. - fill_derived_rates(tfactors, rate_eval); + derived_rates::fill_rates(tfactors, rate_eval); + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + // We do this after DerivedRate in case the branching depends + // on a derived rate. + branched_rates::fill_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); + // Fill approximate rates - 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); + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); } @@ -204,22 +191,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; @@ -247,25 +227,25 @@ void rhs_nuc(const burn_t& state, 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; @@ -335,7 +315,7 @@ void jac_nuc(const burn_t& state, 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 +333,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 +355,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 +373,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 +391,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/derived_rates.H b/networks/ignition_reaclib/C-burn-simple/derived_rates.H index 579d7dd3d..a5d72f80f 100644 --- a/networks/ignition_reaclib/C-burn-simple/derived_rates.H +++ b/networks/ignition_reaclib/C-burn-simple/derived_rates.H @@ -7,21 +7,25 @@ #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(const tf_t& tfactors, T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + amrex::ignore_unused(tfactors); + amrex::ignore_unused(rate_eval); + [[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..9373203e5 100644 --- a/networks/ignition_reaclib/C-burn-simple/modified_rates.H +++ b/networks/ignition_reaclib/C-burn-simple/modified_rates.H @@ -12,11 +12,12 @@ namespace modified_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..f1cd9a44d 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-22-g7128998de 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..9afa5d597 --- /dev/null +++ b/networks/ignition_reaclib/C-burn-simple/tabular_weak_rates.H @@ -0,0 +1,43 @@ +#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, const amrex::Real rhoy, + 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..94a7e0bcb 100644 --- a/networks/ignition_reaclib/C-burn-simple/temperature_table_rates.H +++ b/networks/ignition_reaclib/C-burn-simple/temperature_table_rates.H @@ -16,7 +16,7 @@ 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) { 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..36079baae 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 @@ -184,7 +179,7 @@ void evaluate_rates(const burn_t& state, // 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 +191,7 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -209,62 +204,22 @@ void evaluate_rates(const burn_t& state, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. - 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; + derived_rates::fill_rates(tfactors, rate_eval); - rate_eval.enuc_weak = 0.0_rt; + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + // We do this after DerivedRate in case the branching depends + // on a derived rate. + branched_rates::fill_rates(tfactors, rate_eval); - 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); + // Fill approximate rates - 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); + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); } @@ -316,42 +271,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 +292,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; @@ -389,81 +317,81 @@ void rhs_nuc(const burn_t& state, 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; } @@ -524,10 +452,10 @@ void jac_nuc(const burn_t& state, 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 +473,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 +562,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 +597,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 +619,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 +633,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 +663,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 +689,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 +723,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..6a8556dfc --- /dev/null +++ b/networks/ignition_reaclib/URCA-medium/branched_rates.H @@ -0,0 +1,31 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_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..a5d72f80f 100644 --- a/networks/ignition_reaclib/URCA-medium/derived_rates.H +++ b/networks/ignition_reaclib/URCA-medium/derived_rates.H @@ -7,21 +7,25 @@ #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(const tf_t& tfactors, T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + amrex::ignore_unused(tfactors); + amrex::ignore_unused(rate_eval); + [[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..9373203e5 100644 --- a/networks/ignition_reaclib/URCA-medium/modified_rates.H +++ b/networks/ignition_reaclib/URCA-medium/modified_rates.H @@ -12,11 +12,12 @@ namespace modified_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..f1cd9a44d 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-22-g7128998de 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..dcd1313c1 --- /dev/null +++ b/networks/ignition_reaclib/URCA-medium/tabular_weak_rates.H @@ -0,0 +1,75 @@ +#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, const amrex::Real rhoy, + 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..94a7e0bcb 100644 --- a/networks/ignition_reaclib/URCA-medium/temperature_table_rates.H +++ b/networks/ignition_reaclib/URCA-medium/temperature_table_rates.H @@ -16,7 +16,7 @@ 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) { 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..ae7f2e432 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 @@ -104,7 +99,7 @@ void evaluate_rates(const burn_t& state, // 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 +111,7 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -129,54 +124,22 @@ void evaluate_rates(const burn_t& state, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. - fill_derived_rates(tfactors, rate_eval); - - - // Fill approximate rates - - fill_approx_rates(tfactors, state.rho, Y, rate_eval); - - // Calculate tabular weak rates + derived_rates::fill_rates(tfactors, rate_eval); - [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; - - rate_eval.enuc_weak = 0.0_rt; + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + // We do this after DerivedRate in case the branching depends + // on a derived rate. + branched_rates::fill_rates(tfactors, rate_eval); - 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); + // Fill approximate rates - 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); + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); } @@ -228,37 +191,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 +210,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; @@ -290,35 +231,35 @@ void rhs_nuc(const burn_t& state, 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; @@ -382,10 +323,10 @@ void jac_nuc(const burn_t& state, 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 +344,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 +369,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 +389,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 +409,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 +456,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 +477,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..6a8556dfc --- /dev/null +++ b/networks/ignition_reaclib/URCA-simple/branched_rates.H @@ -0,0 +1,31 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_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..a5d72f80f 100644 --- a/networks/ignition_reaclib/URCA-simple/derived_rates.H +++ b/networks/ignition_reaclib/URCA-simple/derived_rates.H @@ -7,21 +7,25 @@ #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(const tf_t& tfactors, T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + amrex::ignore_unused(tfactors); + amrex::ignore_unused(rate_eval); + [[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..9373203e5 100644 --- a/networks/ignition_reaclib/URCA-simple/modified_rates.H +++ b/networks/ignition_reaclib/URCA-simple/modified_rates.H @@ -12,11 +12,12 @@ namespace modified_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..f1cd9a44d 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-22-g7128998de 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..73b3aeb7c --- /dev/null +++ b/networks/ignition_reaclib/URCA-simple/tabular_weak_rates.H @@ -0,0 +1,67 @@ +#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, const amrex::Real rhoy, + 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..94a7e0bcb 100644 --- a/networks/ignition_reaclib/URCA-simple/temperature_table_rates.H +++ b/networks/ignition_reaclib/URCA-simple/temperature_table_rates.H @@ -16,7 +16,7 @@ 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) { 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..6e0f3ea2b 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 @@ -444,7 +439,7 @@ void evaluate_rates(const burn_t& state, // 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 +451,7 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -469,54 +464,22 @@ void evaluate_rates(const burn_t& state, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. - fill_derived_rates(tfactors, rate_eval); - - - // Fill approximate rates - - fill_approx_rates(tfactors, state.rho, Y, rate_eval); - - // Calculate tabular weak rates + derived_rates::fill_rates(tfactors, rate_eval); - [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; - - rate_eval.enuc_weak = 0.0_rt; + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + // We do this after DerivedRate in case the branching depends + // on a derived rate. + branched_rates::fill_rates(tfactors, rate_eval); - 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); + // Fill approximate rates - 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); + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); } @@ -593,182 +556,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; @@ -788,209 +729,209 @@ void rhs_nuc(const burn_t& state, 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; } @@ -1051,66 +992,66 @@ void jac_nuc(const burn_t& state, 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 +1062,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 +1116,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 +1171,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 +1241,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 +1295,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 +1351,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 +1362,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 +1404,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 +1458,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 +1474,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 +1486,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 +1513,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 +1532,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 +1566,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 +1584,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 +1620,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 +1640,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 +1676,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 +1702,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 +1731,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 +1753,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 +1785,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 +1809,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 +1827,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 +1840,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 +1858,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 +1887,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 +1898,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 +1932,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 +1952,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 +1987,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 +2005,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 +2033,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 +2060,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 +2084,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 +2095,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 +2116,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 +2142,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 +2153,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 +2200,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 +2211,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 +2227,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 +2257,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 +2268,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 +2314,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 +2343,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 +2370,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..6a8556dfc --- /dev/null +++ b/networks/nova-li/branched_rates.H @@ -0,0 +1,31 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_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..a5d72f80f 100644 --- a/networks/nova-li/derived_rates.H +++ b/networks/nova-li/derived_rates.H @@ -7,21 +7,25 @@ #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(const tf_t& tfactors, T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + amrex::ignore_unused(tfactors); + amrex::ignore_unused(rate_eval); + [[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..9373203e5 100644 --- a/networks/nova-li/modified_rates.H +++ b/networks/nova-li/modified_rates.H @@ -12,11 +12,12 @@ namespace modified_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..f1cd9a44d 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-22-g7128998de 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..078140161 --- /dev/null +++ b/networks/nova-li/tabular_weak_rates.H @@ -0,0 +1,67 @@ +#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, const amrex::Real rhoy, + 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..94a7e0bcb 100644 --- a/networks/nova-li/temperature_table_rates.H +++ b/networks/nova-li/temperature_table_rates.H @@ -16,7 +16,7 @@ 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) { 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..32ad89d61 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 @@ -324,7 +319,7 @@ void evaluate_rates(const burn_t& state, // 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 +331,7 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -349,19 +344,22 @@ void evaluate_rates(const burn_t& state, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. - fill_derived_rates(tfactors, rate_eval); + derived_rates::fill_rates(tfactors, rate_eval); + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + // We do this after DerivedRate in case the branching depends + // on a derived rate. + branched_rates::fill_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; + // Fill approximate rates - rate_eval.enuc_weak = 0.0_rt; + approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); } @@ -438,137 +436,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; @@ -586,130 +585,130 @@ void rhs_nuc(const burn_t& state, 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; } @@ -770,66 +769,66 @@ void jac_nuc(const burn_t& state, 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 +855,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 +894,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 +980,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 +989,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 +1017,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 +1040,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 +1055,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 +1070,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 +1092,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 +1130,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 +1146,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 +1191,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 +1207,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 +1225,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 +1245,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 +1264,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 +1280,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 +1323,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 +1352,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 +1384,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 +1419,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 +1430,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..6a8556dfc --- /dev/null +++ b/networks/nova/branched_rates.H @@ -0,0 +1,31 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_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..a5d72f80f 100644 --- a/networks/nova/derived_rates.H +++ b/networks/nova/derived_rates.H @@ -7,21 +7,25 @@ #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(const tf_t& tfactors, T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + amrex::ignore_unused(tfactors); + amrex::ignore_unused(rate_eval); + [[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..9373203e5 100644 --- a/networks/nova/modified_rates.H +++ b/networks/nova/modified_rates.H @@ -12,11 +12,12 @@ namespace modified_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 18bdf3328661f8cbeaacd99fb40a85f21ba73806..41bce14f29609ae1cd52716a09bdb1611d051ed8 100644 GIT binary patch literal 59726 zcmZs@1yogA*FJtw5d;w>rA3eqNok~|ySux)QM#q2rMtUDx~03jyX(J>zVG*azcK!I zjC(y7_t|Ujxn?|bKF=ahNbsyvIKW|Vf97X76L)mhW-na%bjBkfo#n7Tuitqow#^+k@1K^JW|AhF z@uu81T-+qZGZ+pEyA5!-_GZYS3Gl!Z`n=|aCk*nMnL~np0RI<_kK*;;ABQ}9_wR=R z?`5f;ejgi?yV#%Y>WLz)phCsL>3g`pWp%${bZKh-GE4gRMn2sHh_;`Wq{+$2#gf@# zVki|Oqoes(J42_NTpj&vS{@(Rz2T6vUCwuWe0`;}#jvW)XZ><=a+GJN|MUH19i}JX zJ3h(Dc%%|ZKOGMj;$vUDdbJVyX+djeEH8=EHP*`uqNb+ymd(y6qDJxGqegt{pnzCg zTWinNT01#8=_woB-<&I{sL<=Q!$S%S3*R!Cps_pby(1>hgjc2f&r$_COt6%n22(gi z=j-ju%FF4KOh+{uBO~*&D=7VYLPAhtA`V4Ne)kN`-|zQR zva-eli&Rv%_Vyy+;NXA{Ng`?xo5Kap-e_`NyJEBHatObWkfF=a+4g8Wy}pRwDIFah z3o9$SjHoZv+Wgj$Nl9W=6t8^zw)k_3+&W0A%6{|P+m6Vh$ z&-o$Y9336~l+F+|Fi-sJ7-SD;WLpCloG#zGQaCADphtlnRBPi)gHmqyM>CR*;Bvv<|vo)5FcK zkH0@o@~9D`*?j%DRZ?W+?{Bb(ELKa9SFc{Z#AW$zF<-xagH={m#=_3t_udZbqX9C+ z_jn)oM9?dWVXRB+3*=h-F&ZG5WM3ffp?f2J^93Tqf!08-^v`?IvTsd4_n+c57Q&E! z4gT}j_CBva#D)BG^Z=Rl2Mf6kR|jKKqW|%CqW^qMmm4NWU}M;C(<|P@AfsX$w|JSE*I$-n3_9+qm zyC^@M{q6)cHnUkbh(RkG8=b)07V}e$&J}fu zahCtROeAKd6j8y-b)O7ddF5BA-G^nt$ut2OpbY`3m4-X4o#xnlbw$klMNl7*@-_Om>Svfj(4Gj%#HKwK#K<%@J zfq@_Y?Ze+E5J7L!S&-CdygTVDRH+KOx^jZhXg2q!aJo8Oug4*7`pZ5ehP?T^Md?2h z==BjC92^+UXQC%HTtma~*hgACJvE%y(f?W(A@*NX$=eyIJ&l~)tgo-PS!sXaa4;uq zW%co}`IcsXwuZLy0v-0ne_y|oikf=ySw54 zeI%1V3qokp$>w-x;9_C@{{J{O%>Q1CMg@%~w7l9{mWSIz?z_9YqsvRu_wS!1OZbO| zB57!7IJvrxRvODDFq;RdsM|DChK7e5K0e&5)!V)B^z{7Q);7Ft2QmxJd4Y0;!H0ZJ z$@j`W78(=+(kDN{%hrNJLp!FYDYd~d!XZftA}w@$e0sIkNXZW$y7QV7`#wcOZgQ1O!SZPbW1!%gm*L5YlvJaO{`&x6Ha@RG@Nf-3qVFl1yA=2GK~(G+rGcmE4| z<5f@SwvsU#8ykzIawT7%Zf;UuL4dI~n=Tht|D^GeSZaD0SE(2bCiOHrpPrz*K|m$) zzFhQ7y}!LoY;@;EGyJz_=~7#EY}t~jgP<0wF4d2WjQn7;rw|IqXA+)8;4PVC0FQ97 zH!ZtVU#UVpnk~M%)ap%QoY;-G-pbs#aYa^+R6@mz37&?3S*gW?6Ydr6k~cEfuiwAF zflNG6qzdPimG$AU<*`}XSyNNfVQ(rz-`%AtrKIH{;e%-G((e5-LC1Io13R6awd1k4{e++)T!Dc~n$X!p=!Pe4sNN#O<&0 zVfy&-d#dLH7XCBr^}e_qP}&9co9|9U>+N^_KyB4@JBC%Sx9cfeSXdB&9EdjU`zQvmx1RE!)4X6Q!kmUFrQ@xIjqz3@!mfw3Kf{7TYest zz8)z}Y2|9Ocx||nMUUH1YSn5zGT9OhP7<*nzg9YemFsLiobOH!$!_Nc1ikleTkka4;8O z5nLj{5QtV^EOn*%?1WFz;PiZhqixl5ec)DZ57(P>b+-OD=erd~!|&Uw$Yry&EG;eN zxX8%^U!amej)0pE=gH>q8Z|jZOGszP_MdV#7LV<7CrSq*ezs%7Yx6_W-JhvqH2UKO zkdMh^@jz!N4!}Bej;A1a17s|3FZP`i-jC-<5|D@|=-Ca<&nJr~GMBmEI<(aZ<&Y+` z*#|W^9?CSkIipsw8L~Sb^pB&F)6&w)QJ{m(2PkRf;9#)IbaJV6s~bSNP>hXTJGM6N zRCdQOaIsXK%{uRn@9Pc4l_%ewPdAQl4_j<6_LNN~3WaTK=$l;5S2Du6==*!npdoUt z*62hxsh`Mb%qu5{#>2ydRov0pX>)lnPjz^Heoj3CA^voquT=IPSbp<-Qqvy}rVDsD ztJ_s+ni$A@n?tEX?z7xKiN+tk;bT1^w>JF@%}^;WJLG&L_yBD^2fGZm zN%+f`kN>fQc*&&g{f&Kwt@m>zonKxsav-k&03%&vq25*nl1nMb=Wd+4plZQdSXz(= zeQRlH8Lq?UborAZgxniT-RA}KG*>#~`SS8I#O=5Pv+=kS$L(s_U#-@PP;$uSj+K|g zSY!@90J!QuTy=Y44$$Gz`FWOpUo6&vu&^-UhYuZAxHvef#OCP08X}1x^P!-kh7Qhy zWN>t31*(7nS=2#y1d%eyTU-{aceIU1-TuC%qkUe6&38mrb~Q0c8B(!p1@R(8}hdL2=Hoe_u;ESKxCM^d3$>Y z{}jqfWOdAlR4*0Lf}8-ejpoZ!F1YMcr+7X%Ln~GgIwd3^ENt*BWqUM-LBBWpy+z(% z*rZn-W8olt;jljwvt9+_FNUFssA%!vTrniiHi+0SU|to_1pbiG77g zyXl2gOx7ZpvdT)v=?eah{szQYfb6Vc;6DRjzXDH$)W!XH#{d8+Xf*Uy7G`F!0mOK3 zmIi%EHdc0aT}w+%;$3=5`TXdTTf3l?U+u4Hx)we@!z1j`o?g_;c+QSQoIvxsN5tdy z1HZ5|aD1>7ngE^KZrbR!Ql-%w_uGpsv3U9oixlWB^Yi2=8k?F}T`$bixG8I#f31w5 z)ZV=NQ;Xt=`go;Eyd8OZMkOTb%9v8zt`XR6Xlgq&JKOLlReENA5w?%Rl&=4LZY2{~ z3`F(W-gHzNpa06*TKh)E1cuRUs`Ss(?|TMZU^}#A;7QYIY~Js1 zD6T${vZ*`ILqOMXKtFQG4T^IYXxyV%GFF696eXQlQ0fb!q!gQr3b9FKRS$^F2P=V1 z*X{^H?@wlr1G!-&jSp_3SUtF)pr9_11iI8uP<-!hc1!9+X5wPN^BAy)7RVPUfUJlW zR^@^hr*nS@hc}E_o0!xPfdGfd?uJ_+(^tk;gkcw&Ee-Jm z#=z3j!W`Esqv0pW$l-32wEV(SD^Ff~f#eS@!?vIJpoun~OtBc(e71VP;j$npb91y? zWU<*jP*iluu9B8CgVu)a1|_gQ)9g?>ExkM$4y?v`C6^Of#BL&gfI$>Tts46ZkL~Tg zR*WLFc4-{W)>t<0V$|gbg-W2jNe~Zw`4>w`HzHxt`$UmSg6^xP3ZqWCDGwQ^=#|y= z7424!M|4M9XDCK7lF^C^CPA0Ulp$Sxgz91A>8q|VJR)-PTP;#+M|Vx+u2>W@1md4pl8t`vtzMVT6RX*( zal1ZwiN_WV5^8**1jNz4*PrQ1WiS{4plP0UT-yTe9d00K!56;e$%J{vp z9+Zn0s;OxD@ZSXFiaW49S!DYh(IAl{EdwV66p zedlM-`pWU|p9%$7tTx0**o;g51Rn25NJxh4q2+HlLrAtvr-Rox<8?>OKf9Ba5_u-C zTyYz|?7H+uCR<(R^?qe9Rj@mpDU9mzc<)$kxtLP$nO}VvyHBAw7n@~xq6n+aq%j~^ zep#ZVw?HD9EdnKdvw?O~Tb_@Qj-0N`6$G;LLEWa)#k8Sx!2l+Ii~*Z~uLRwY3yv*k z4NJs76avd^#p`LI@pA1b7BzF|qqJ(Sv&(1KHqq*W0!lvrSNeZ`^4uLCk~k#Kbj^Fc zJ}XoCL!MhWmfNeGmZ#+%T7znQz)ZX=w^d0ICa|E#FCOa5e*LydV<=%8=i2$V%CE>v zZY;ly8YT}9kE`2TR16G1iJZ31&gY3q(gJ6(S-y(2W%iXiMbO@fU5=2oBT)UTqjlJ%j-@R(mbRG6 z6YlxBPB^an;6}~(z|fG@-N_AWlTFq(Rv|+;Fk%t+e}zZiw7F}`{$uZ!ojH#Bx@h#> zPDAe)rR{J$9ddxggx9~WJK$SjaM)&FT+8a6r-xgm5xjp*($ZCRMXhUWM~<@nSx^e9 zH0Bkj75gNrg`tX2VtMGcW*v_FKBcT>+vJusYK&H3Q4Fj}6^2*Kw^ySXyp)Z2l$h4Y zq3UcdG357#wzU0D^Zte?>riyqN5}qCvfdT)?CzT zr62rrqxn0NrrN(T)27AF5eP_>OTm6NYBB4-0jVG{+u^)?`7yFa2B6 zr8iw5O3JDu`h&7&rfvbOik`i%-HhZ+QtU1J?y^y@r#8j;j$o|b|90{r{xA^P9__EX zchj|~Jsn!)yHHb@D@Q@{K$p-dIXPq{o+=KpdC#%hJ(Tjjz-_Z(Xw4igy*BF2U$0 zyKi_Cv1LYMmzqb9@ORO-C!b>y`e$yC#)Ton6G=@14X z|I4Qll)^81`f(Xk+Y%+|?`C-#kF+HrVf-oUIf*#%l7aLTC4vHq;TMf7G=9*d~Q(&HKBr>wfxl7iJ-q`>m;}sR>gF zPtgWbITgW=*WyYx6V8${=WMThGz>q7ZupMr9J4fGom%U0N+`JeCuVR3o(a&UEsA}+ zo9Oq_U#dqapd>x=0sk? zf}+T6YI&&tImYmGIOA@3_q^ZJlXV>1W!U!1LCS6_UrVpj>~OQ2J!+Lyz>4I*RH3)K zwU~2tkxWolUZr#JHP30xeiOX@6!r-%TgTO{nxd%TLhcPNUSHMcn6CL`6P9}ItcmaW zlUT`?Dicv(nG!~aGf3!Wl>AbY_{wR}y;3bKaw0^Lc32e|cqDDBS99FeSgn%}FC+zY zBO2NR#_{G$6;!{cPhuxq%4MT?n^gYH5E4%+GDFPkc+cQ6wlz@syj^XGT4Ig#9kiPf z%OcJ?X}hKT@y8OQN_9f7^>};kG{kUiJJ0OJf+?DtQZ6HhW*#D9f<$JNYaa(30c2tD zpm6(+Br4(Tm&pCmdb9F$@7YCucvK8hio=21)fal+rgX!ZEX_bkQF@;63QSDAp_8(f zsslyUH<@0+bXb{KyE(BhpY5&pEZ zUFOm;xiW;{=B$hM0)t2R4P+0QyKCZm##!-HXXgGF$NfF=hX-p?K7%HSX@u*=qTaz3 z?G_ok8MD5i-x;!FTm8`if1vyEFO@!n3_Bhk56lL$l-*O&x=lsZWHdvyd@1Q3u284x@byv9gxy7Yv@BA1 zHk}ONbWtL1DN?r!{x-1$@mmpZ2tV6e93x+ZSZw*kE_#k z+$Uw#i#rF%BA?=qD%bZIv9PZ8E{vt+k&t#X&{ygfn>!7h&aLowdO_VzhKh+b2A1HV z{fdj>$XFq{!?1<0sxBpb$RnBX%1A!@jcsBG<=K*V*OTvi8e_ML2VV-xk!NjbsZ)jx zG2h&2nJDmlXeTK@8e7{nR}+d%d!3MwbG;6fB{dr?*fm0eOb7Dpss(p z-+ki6J%#DepPN)Q6Vy8X&{eTMo8VR?q#$!%=PIoT5LXHNcgZ2@POy=Xh`h28u7-d* zalsV}+0wn0g6um99WxZZ7A(1+E+bgyU?$TqIN|jp?(W&&_aR|?7t%x9zY(l4YJF*= zJDi7A>C!-+s{RAKPwuvqFKcMmNJoZx1S|mum(2IJ;QC}=BnIqPS=nuERRoSv8CdQY zLg_L(6-}SmVVb|1-8~RI57`ZG$Wd+Hb&f8CdBgiRG}6buh)b;37~?qQJdmofIwxBf zaO+JB9=FSjt&N^myb!53B`Xl@2##rBXlf;utF)&baWFY|sSICx>&!^{MFE$}Jbv2f zt^6K-@jbixl&CW_d@4`r}xU^@r9xcxT-y9R29Q%%)4M5 zluH^a39f=q+F}VLm`%i%lC%^u85ST zeQI+N6{TxV_yck>oil^P=Lpgx|I#-{>qw4j=q{)CiTs?Bn*#=)L8D(x6FLA?zrLBa zVCgfK>?0F_QoQp; z~b>4tly7LI+yYA%7bR1N9)bJ-c;zZ?h0SFkiv@uwh4(h>%b zeWCt2x)cg~il|(1o%%(c>Su>c^*Oe63Svc%Ff$4<> zG7~%66UU-uFd+@4A!zC*VVAUc6+u(oEPg}IM3O@TJ^N2CL<2~D#kin@os@SojMNQ^ zcuO@UkHj1wBL_8Wx^`J5cNB_!MY7&gu|^tuaNDrcO<9E_pg%1*TfY`j53);hRf5853ds)oz@Ed_-0>>vqe`7Q??9M*2#bd4q z4$)sKEn(Xx@JI=wlO`kEIx(Gj9y~XiXie>>(fkj|Gk<;CjdpZyRv_GC`S@Q)jJR2fTcD&`%ARsKi3>%|@Kua?R%?Iqzb$F9v3 z(Qi-sO*me{A*#03jSee1U#>Z-1ta!KanTbeSi;d}iZ5=Q;ZJ->EgG81_$vQ_9g}M8 z1e-*J^!k$~Kz3xUGO{CAro$2oN7r7?M6uEh`r@%kw|;>w;VX>;@@I3Ji*HKA^&YA; z1I1lyiR6?iF`F$u1}W&{#FxQgao(gK$p5lOVZx=Ls~DErW1R4_CG3f4^mM^z=aqOn zxP9)@>}(2yjfj*H`-(PNYfs^K8`C@b``*U0pqawd5s7TA7f^I5Wnx3|NVV8kADnyekLiPtK>!PB23%=%KyIffq#5an}39+hV6o3LBg5%{+OKZuPBkzvV0HQ{o|FCF zsoX{JcjIgCH#y~nl;XqX@3o$eV!NpYP!FaeO1BDjovSe%YI?9J&Cq8(s1`Og#id%9 z@jbqy6!JQt+3{UB9!ZCVqzOy!!E;LBvJ3+@qmkBF37R^EKhcn$s$(N_8NAE)Iv<~BZHIk}i>Uzt@L&!+ zF)^{Fwr^cF86nq$?*2h>hb7U0l%h&xz>8u?rf)ddI8NbBlmjo65$nQ%=Vk>J5AybI7+?i8Z99 zq6&fD)NlwN&^5MHB{aL;-IELHhC?YvjM+oo&F;G%&2>$$OjHe(J9|b_)~UI(#F*=( z!D|5C2?>m_03Em)vYSu;D#Ym=>E>)(mh2uyS=19Q$!1U43>VDQ-E10Tg^L{Gb}pq} zd=}ZJ)d2HZdeC#nQmZO~(Ri_j9>L^Ko~K;bYp4|R`Eq3YeaOiYLxFgPSH{bcF&&)+Ar0uT z{s*1z(a8zDa$-7f2G)cTBbT}93Ud>Qr$25_xfy%Sjac5Jf?sNUI@#V-nKyywU4)O1 z4@XUFSC>Cn2^e?W?VM*V`PsV;?`Q9_&M;{~z{{JMP%s$uF999`Hot3PA{Hnzpe$Wf z6*c$oL;mvBP0wq?Yy97MmOR%AP*P-ml**{=j$xsa93U22dWr8DZ3r0s?8@)Tv z6|nCCT~H28JW*k3>FK+FG>FxK+Jx#jM(k{yw-UQ413`7_FH`wN-Ti*?TpSV%mMh2? z2?>LfwVpF!<3361oYUsZT?0fe5EVerLS=OX^Bu?r)_S5?tylPIL<}uQk!PWZRoBA> zS@H6g{j2j#ogtPR#Ld+iuQl+^k=8Q{z_G!;;(|c=H^9^ih3RoVA!?5j6#Oh=yhaXe zJiO54iX`g4y*kR8XPiy|2P94 zF0N9&9l3>th3{BF(*8nIA|QGofM^#|Qu?u+pi-0#2nM-gH7GX^^b#d%=DGo| z3}ZA~O-+rzml<=gnd-?LJrD-wd4O~2Xye1k!OT8${BltAL|j zi4keLsvRYED4LPHzo?3@-|m%4i3)cY)iXxL9j^Sbl}tCN25RQfab=# zsmZ-~S6obNt>Lh_PqAesef9bzi&gF-?-x6R21C6;TCel4IKRkC$AdX-AP`b(@c@Lu z&RbYsX=!P}mI8x;1faP|EU5lKN_x6qvzR`)dpbu;D1trh2XsdKfk&(1+$)=#{y-Z5 zR4s#6_t%@Ln}GbSG@YawvM1nh`fj^9I9zMJ>Q*BO$f#Lbc+h>YTnu4J9CAsD$WWwI zQI6~vz^RrwJ z{#~x$$6~wj5=v^8cGrWgVqsx9T5vr~8#g&sy9D9S>ah0~FxrFXoB*fEYTm`VE|lk9&&!oMjx;m`DX2shJs> zCKr1u>H&rjKp&(Z!9IJY*PxIA3>r-?>j%8W0NX2f+yvAJK`=(QwzVZ9B>W1DRi@qc zyzSE%P>b})LL%SBwXd&E*4nL6#J$q&IQ+qVe2F4eAU|fj+V-=DcBIMVxL9Rk&VSfF!Zh zdPrFV6Oc}JceFrHgMXykIrt);#F9#Pz1wwR$k4eZoeZ$(M>i35tX#DBi#5nxSHHFz zMY2}n4O7y<14q+pretOk)2P+{0^EB*P!Ro@=#$sSnUoPQ-GFqwI_@IKlP|yk!W1Ct zD!1E~fihPI*#O^>Jp(Mp(8bNxa7LZWIR$~o6(QhiJIBXkK-GhKqhQ8zK}qxPzP?~U z2trjEAQIa8Xj}Tz1%lslx-f#I1GX<!59m{EZSAiL1p*-G*5fo~ zid2{Yp{Kny8BE*U4LHnh@Q5!E5LTwjbb&3-S7=47U|G4ZtK>n{B9$KQw0UoY1oInzU_BFUgo!vGHAm|&9ek0yp zt%keZZ09_C_RI=!*WbLoPZ>j{){?&=aBc{TN>ktNPJ5)vBxai)s+~yCc4I~JG z+Yt;hC4`b&kU`QBku_ee1Ve>cfY2N+QvC!_T4+oR`alAcE)atH zMfgHj-1&Zk$Bl9ErJK841# zBxj7h)UxNzbB5<0lD7{3Ec zZ(Tsn8**?soB>BFnZk&`HBzMB5DPAsEl{8?R;&9BzO@Zt!q*wfa#EmxEC9qWP#io# z#GqP&>S+N>1+rc^C?8M}0F`(6fAy|)^AVuu_qi6}=YP9#4(}QthmQC__#i#rMJ%~I z#dt|ieB~u9lou~v_$`X^@_rjWq$DTrks1VADS&wmYg5=-d-S~{Q$oE8WoifINR1@i)ZX5RQm<=J7~u20LA_gbUAAE&ST#u!chj) zf8lZ}HPyjmyz7~0u25EXHg-(G!c;KVp#zg}gYAh?3$PJ=$e*L1wBZ+|$%3|?eN%H6 zl-%s%>ysJx2=MS)*C*@ov53gXhCuHlxH)FRq@bYC-qmI3B6;JClXz=tHgbDin|Vb{ za+VyZl3}p3F;rSsF{r2sv<7uCuSGuVkSX$7yd7L@a-A$?-n8CsZC_=?7LRQyIXm6B za*t7P5%ATZ8&Y`*Wif$Pq8nsir`!FS=@w6J5E;DEXw6qEhyV@ww6u6;zfgxtcR^u# z*#(5RPA)DO)_vfW*MxW+Sj9v{-ZL{#kim6iP{`G`;Ka0coa&U0D3)k| z`%QkVA}zqY`MtEWV{%2p%?-2z{2=?3RaEp@6@g2jx?~#}wDoTWhK8GBv(c(hK{`-Y zDXALbRyl!c0>np40Kt71Xo+>d!0CG6>Zq+EkZsbA5lc-|Je!lK?YsD{+h126M%ZO| za@T4N=6pY5VAxsS*iVCwrc}Y(e6Rrj8OfEc= z3J;M6luJ~oECSSV!PzC)=g+Z=0W5GTS5i`v0&vA`@evezkZ|6zI}~aMt0N*JYPcN> zfSE)WGWVU<1*4!bmpc93@2)1TzyRr|~4rt(;GLZKI5UJ4N2`h2a%V4hMOoHr6N zm?%`{6BBz0LYSek1Ykp#%L8#B6ILqK`l?N#ApOwn^U)vW6RhdcQY)2GDbQv;KkCG> ze2s@U0Q$V`KWR@xv6<-qO25#)Jx9V`V?}hT2O>nStEHz4?w9Hc#cIM}?h+Oj_U!rd zlMYPHw+@seMvOoV-PKM#qyaQy(26(N1dA8(W9sJZW$dsc z|ECn!7C1+gHdYkph>SPQY9V!jDS%SUJgv0Nsm{Ozyth=xf_MG}eywUl`OSri$HgP7 z=6z6b@G4N#=}eVsQ)xCQ0bMRGE^aNzoU++sbO{~OU<=$h`PNdP>}pJ;diGD9UN9d5 znD8r5OzRjL3e8rVW6|mG7yG+`rr+AZ0ca-#vvpq(^1rYGDfT%szS@!t&=CU#1|h(= zV8WDP3R)nYyQ^bZ4?&G*aB!!<$Y`}GdpG07>g*(vDQZiGYaKw&h{b3mRUCPtpTp~m z;3u{P0MJL3q0e1QNL}@U$TcXRVC+3b>&gm zC+Ew|_8^jq-iq}J0;D`+T7q7yx!qC%#GY+~D%(I|Y!bb%@k8N;eF+ZkR(oG7rHYyS z*w}5+!#2+YncAA@9mm^*J0R{Fn12bTo&xOv@PcmCpc^Sd5y)~uuo}7)SuQri=CgBC zC=`AH%{eO=M||BOx45U!Y~}#n5wlrKq9zC~6)vCjn zZT@&pPbg1U&)sXa)lr-$<*(=;eie*qz}g1Ac_omNfKb^i;NC93bq5`4$!GiEx#0{! z%j_8V4Ir|XdH)njyJrm@Ew@28A{-hnit1CT_~ zIXBhO>2<%BNa2WISEz%Pu8R2Nsg$g@(rUl;hcBnFX4<~SA||^=QXcP@h)}EWnw%<3kTE_Hw3QT* z9yLpPsx*vKT7g1mtj*{5lH7_jyrQB)7Ys2BZrxuQyMIbsx$LUsa4{NgbK>-$xH#Kq$;}uAkf3ZgV|#9Jn^}*lF~=8vwT2Ma%C5U zkQ|TUo%lZkVUd?$$_P4;veHtrqrQ4@j0l9ae%X}u7tpnA=cMXrYqtXYh9DPLR74Gp zs@cKsJw3*_?DpQC$QsMPv^_^g)W{Au`0U!pzsZ~B`8_)GGQmL@ttnFSCX!y^hZ?Qy zgjQv5MSjVbqu{#PB4WfwQmwI|mQn}vS+O47Iq9`|qbClHLWUZ8m~KCi^Gty)1`-r#aiLph1N zG1Y^UnY}GlAh$)(sM8;Rfg-*9K&4ju9SoTp6%UNznkds~biH?+5YX@O;&1nzl9F)6 z79%*M(0qYN5i}roFB_EC1p%JcYa!f-_XXT)O-dMZ$X zGJz_s5Fkkq_EFK%(W~x3{?sCUrv`WHvtF50J&eTR9+sWTbr@DSf^fjU&j!H^8 zJw$ZGF_Ml&pf(*5Q}mwqu3p`j_bqwA4^GzY?7t8Y&yqQY9w-8>6`1{W4JNbOqHD<) zslGHe2_uG8C87y3I-=L*bZr(IDjQT>SZ>`RZl~^OKJz!#F-{&&pQE zJbhrF@tI+7#oUe-&K0J8qsCxT+nUN{;-swRSx@Y|O3{?9FlNfW=fqHjJB1^N7nYFN z07>KO`g$2WvXc`Fcx0e)ZftBkIzCPljv^T=P?W?-OcVzD_UBQfy;qFrUEZ-V)%KYy z$c^B%SMQr14+i|gD>U;BGg`CY>0>_H$)C$4PmgKqAP=;zNlM-5l&rgx$N#r-PNf<|6OjzW8 z5C8T7t%iLqvRrPtAX3LY0`_HJ)8u#-iuEh z=yFv)F;so@ln{b_i7XzsW6DNHqvbU#HV zd3S@!)XxyM2BO3HGz$%)N+%&a*XHGd^)+rbt&K|vpTkk+R4plW8;5C5 zXo@jpn_QkP(deA+iIr=L9j|dXzBt~#!|~|6%9h(&9S#e0@ZNee`K?--eog-lE+{(uO zmN}riJz>ip^DLOMjBuf*38}3Nkxhh*oMFpUVi!^$lspEAh3a=^*^618Iefj1NlNNG zJA7Df;ZuBjp+Ks!zlahe(lHFLiJ?BrZ)M{n?Tr4bSZ*P2JT9(&A$4UUO?~v`x!-di zy0pWWy!O&dJCW%5!th|;x)Ny5d0FU<$k*}RJ3$Q!> zuOTjS2KUhpe^2$T1j-Mz;)RMNYsVFk6pwEy)_vHY+j*UU+tV#;ixhYV-c!tdGk?q~ zS1(&(voL{=l}gT}66fn zTP`akbH(7S>gkKx`y(`N-j`~s2y~4Fw?yU+xa}wy$jDUnYnJ=dp?c;R*gMAdIW<`|TAR>G7t<1>=IuZOQ)<`3?^w;| z86RfxuGy%^xU>Z@u*iO}WCjWWgQ-295S0s>SOsJTnMv#X-qRR%>4_U{zpbsYTD1o` zz`1?>t9X;9m{L(fz1NB>kaJHMW&$CyHB<8OtljLrj1FW9!zRR_n2STcIZ$~fQPm;A zzd<8wi~hn?EE%&71+#m8?Utu4?2jxXlj~u z&7g8Q*oXwFPVf(e8^wo$U#X3`P!WgL$iHISto95Z|Cky2HhV)+*XG<)>>VMD01wA? z$0w+5L4~2$5zU=Xf2l;3X@5e*qu=jsfK=7 z)_8yV%00&Xs8zRxwolAMlQ$sp-#NW#1oC=++8u?R{>M8eo1z|5`G!&oEmFvfdOa@A zTcSlKtU!PB`1hu!8kro}UV6hN&uPY;DpV8|=B8c&jkT}jAeDi}=o`6m+owzI@sQ>R z2THc&loC=7$$gRov8Fpza4rL9d|hYz7ipD7+BuQz#K^w7Ct3^YWc>A{5f#;84LFNg zVZFdjMR1F=Fkt%edWf#Jp53ta(mMRPg7ST{Pd63o?V5UN7yTR< zw*6j_sPokG$$YMX=`GWwu;%BV`9-KQ2B|h?{o1A)4>)!|rDQrs<-5`4lPaEl!g4sl z(ZLt(pUM|g=gPZBC{_r=+K~(p*1OK+-a6wI#jYxGf5hU6=y$P&F}zUw33Mq=t~aJi z%9|F9tHZ{M6Cm&L7Z+)^qyTmVI!kV2{q*V6U$t>SdL~(rH6(K2(++l(A34&3&RD$f zoESXJJ7U&I$)ShtB$7k@n-g=1IxHBNKe=OK#z)TyQZ?GEu5L&34oHMfH&QHz53RM^ z*(FDF9G_w=PW5vW3WXk2DX7vH3Ua$BnkDMfw`m$$5Rw!6I%Y3uIyFCr6ZPX&zok^A zG&o55JZgxuk*68{(5wdz8#_Y}J_4T4;J`pncmjIv-D$-b9SVEjUG8Eru8tO zUmfjTVtorwcon1cXAkv8&LmF%=#3S5z<}rly_TKj9PS@(59cI{T%}PKG zk!nnN7uk>2tZaJVcuMm<(v zGUbKVLU_Xqgs=@?F7fT@IxgM&Sd>^4U%{*+BMJLYl!idG^M1XuqIQv||z#VZw?6Q`6nhNAvdeFzZ*E*&Ake+W1xM@L7u?lOg=esDP3 z_?-xa;kHgrewt;|1X7*e=($EPto0rT*1d zr8w~fMhJGr?DuZmEFe_tUuPd%aj|ixx*A`i-m3@HwPqr6AIp2UD(P4JY$}}>4xwke zC?BeoRaD}~MU30mU;IkRSg07^qkAizVZsUyfiPQCO<~(ilLiN~rrR`>7XB(Ei z0ipE_KSV-6Q$PPugk;ha716#`qxO{YV=D_J@9s;>$cWut^EEN(zB?x-f{rs>kIgpg z0pl21N#5UhhvWaA=IwmRWI@1q7X4=L^JbGPg=$k;AX)wW*u1KtL}j6G{=;F5(xm2$ zS-6Ea@_k4cCD4nC6|xY&w*x0;5k8mGYyE;efB9DGr{T=Z3<^4WOmL(C-+!VKmXls) z$w)gmN`FE&rd(z|?R^C{a+`*(E{h}aNL*fX%lAyC`MLc@C%b3u61oCdl&+O*oa~o3 zCmR9iRJZ!vMX4q2h_a2wBh@H?D=A$w;^MmH1BJsIolO8Xmj&P1R~XZSkS@52=JL1h z)z3D58vF){c>{T67mMniZ^&LtYyL0+S-s!N6xu2dL{~Vh zM=^+g8JS1U4&%R~yKBF6n?6Endv6C0H(hPgZ8X({T%q}@i02>gA6P3NgvDrvOSI-| zsZNjuH@wc4!kzF!i-rDX0T8akK-vY!edz^{exK-)!pcu@Hv=EkSJh-+YL)Vf#PBvJ|H5)314T}ty7#phl|BtKhj_302 z+t)4)$_ho4(J&%JMhTUfP?X5ZPDnN_BSMi?Mn)uiXIIEh$)4Gp?9K1E>b{@ndHw$A zb@#pLGp_5r&hz~~-p5$q8>28%OWW_OB@m}-x|x@A<1VGc>r{)Lwr@v=`#OVw)&>0> zGL4FM&Za0n_)wc+Wg@J<@%?$x(Pb9UGpI8YIXL@6f|pm^Sjj|5#2IKe#oamjEBRTu zCk31QpK9J(0?LvthZN#0}H~m?`MV?klNn9ENw)W-OITBdOt^K@KUj7eS(uS zB`a##I}(kXUS(g@i{U@`qU~r)2YpWC9gTGBU>heEEwYD^(v9zV`g@WM)?Y+jdq*YG zHU7oB!EI@|w)^a$j%P;*yN7nhb_wcto?l;v`4z*EL>BWsRyBcZLH})SuZw?Dlz(3N zFvd0_aa7%(@vTo}s^`@8%+Y(3y}v9ypF8PBe|dfFSBA;z${sGS<^AJF-wqbeo17%n zPbWr5r&^@6dHI9 zi|RV$o-->h+?SJMX|revpb>v9{8y7`6S-8{d0HrGT)9Hm3PvD2@jtmWrtDgWR$J_w z4mw%vD?GhG^K?6#)o||kH*&pPwU>!&u0as4i9=rm2J3& zR-`4Jk*x9^eVd-o@Q~?s2HCxc^_sKJm3+5%9#21Huzo>_MBF!0)yh&pKPq`J{RZuA zuia;a<{u`Qq~*F?4lIP?<-hD*_9=+H&psF;59HGP1}GmB49xoZ`T3*$Gr!dx-*%gi zE#YL&)rKz_yG!|u_Fgoajmh$(NndR|SXkh5`MFko@V0!l#B=nU7brrh-RP)((eHh4 z8+Ho&#yLX9ZR@sF7i8zh#1}Ac_{+iP2DFWwo!zH{X zYr;NmiuQY{M9K88PkgKCCS)ojDg${J7++l_i@AMMr+huhO8KCr`EfIq(Qn_*xuLI> zbn!^0FOa0q&dnLQaqZdx=mfvk*7|^0v!8+C-lF4iy~L~P6z|?_p;NH`crJ+Z4y8CH z+26ato(iiM)&I~o1qEj~barhwesuAR>Wv3l$!Tu-VYb^dTjBR0^xF8ciai;)$-$4F zT_wrz@YWN^qN^NI405zZMf~E+mpcBc+@!8gHTjc)_m}F9Q%df>6T}zxX0w*obMo!` zNG?s@>F)lj;o0$ExNaM?s{!wx8c^L1n7fg3ylO>sgZI#AhS0i3zNaQ@lBD9DlJ@MO znR_=bihr@D$eS`P4`)}IU>v0ssk&#v+n)UHk5|{^YQ5c=?=8B)KJM;!fT$9~{*scC z>fPJK7B^Ok746Tau$c?s2fRy@GOzC`OmnKTJeF3ZEN%B?vKuqba?2tR7-}(CjZ?lNby4CAsGal8qFZI`Po`%uaWMItb_53eUs~-) zkUy~JmJ${x@9f6L#t4fOVqB-zR(IUv>$i7XPW|b6tryHipD%YSds#w~EyZy`a=q2b zHP3oq)K53cp_Z(yELmvAGv7qDyOTwz1>ejcncIV**+J7_`u&s@z6v)|&1#s8vZwF% zEto0AyG%W?1DE$%;DC9r_z};2a$j;1w!D41k9V?CD$UL|NPWXfDA0M4w_*5!14xUY z+D4sUOG{1F>M41iVem8Z{G59o$J*hPwycP|d(S_dRlWAH>!KcE(&K*MB1o=|%MUQx zxcWO6ZVt2p_YQ%5`_5@?nblBJ$X{BLZ-ulaAlSl*g>OBvte;oQ;EYjw=sn7_i=Y8{ zz~h4(|C}zf_MkeRuQaE|yZl_u-ic8h;inicGznlJU1~VfBNEcuTXnK_AiwWoN9jAn)^_R*}cN2uqQkLF;jBTfvdK3=r zEP825n|Jn{>&*i9M9E{jb}eL&uYvHmbMIch6NA5he|~r2X)}iK7>w66%p5*^7}hGZ zdX?=8`3If39)qA&8g4n6e8slASR?;zF4_F|;N+H1=BHnhg$GMbehH&hn%%PlBDAFa%pHMP|Zp2hwY}cYHx*Ymng-W#0Qu_AS2` z%0r$9Ls!4Op!FNIo9xId1MNw!v-8q5AKfeck+E8bY1Y^6ccZpEV_5erO^=sVnph&B zt$g|Qi?^xP2P0XuC2XfTUo~iMRE#!s_4=4?MArUEO2|!pBv9nQQuX`jgvMsgqJp5x zPKJEG)S{n!R-8QHU2@(%m{$-ZON^lF@Ss-u+XvOcnCmH8odX9CUcPhZo#K&TKTKf< zzK6;jUtL#rXLJ3BfiM${HH-^gk6!Y|*nV%6F(|4p4xZkecpXFmUJN&Cl{z-o78o() zc@I+1(!Fq~Gqzo_T)#$sNkM(Exnbw5muYGe$;0mfs?8sN7(O^=;CET+0YUg|QaYuP ze-Q3K4vvn77#O?S!R(<1WV`8x7+k^AclysoZ$CLp*XnZPo2WtyX;MpPl-w_#aWBad ziIUUSO*E=4s&uy*HPQthQa850AY=K*C_QFMI^{DvDp@Ok>UJ)rm>6LvWzd;#>pEy~ zhOWJ%W7p1|pV5LStOC|4YPQW)*r_NC*3GfAXM-@4#RwM^H!#WX+Q|{r4Z?y8 zoL9RWarmJUlm>4E%;ZtPHGeXX>b?o`CLz;@c?@@3mPor$V`pbrt=L8g+(s-=K4qD- z_{NeP6BP71*(9E0bKKq2>B6GMK33NGb#HYmhZEc>m+V`!=VLzJP>U+<5^nx>{r!0Z z1NNejApd?|jEkhf`$55I?poS}N!XwZjmB>aTS1@wC&Z!!qBc6b^}BObF@u7`T% z-S|#hN+qeaKGgNerX)OBz&rAq*EDVA>vZ!0zt)Ya+4Wf`7dJQFp`nmd;S}WLpFuMN zO)eS)C~QGbz%!(KgtN~zP}3UzF+`Vhl_<{8rMBKih1@eh%%RANbIW94=26o z@c&GrTN@?VDMc2I0#8FQ4G`L8g~X0vHmp-34I49Gw{WdL0|B$V;q(OYrXSYXm5 z2l4|^a^OVz^V=m0*BHY->PIkU#O|i^U^40}bI-&MI;Vv#`!+_kz->1%<%qi#&s;la zB)%r(|3N8!v-dv!mMoR1Yfnj|9~^=0?-Q zo<3ZdxXo`?82;Q5Uq3;!hyesra93bg2fpiWkl?__*HRUT1XbgDB3)M2!c6QTF{hA} z6z=v8xwopU&51qj{4HZgrn||o(<-ZH8TYTO#r=z|76Ud^0oVPdM z0eLh*qu>o5iB04O4v3>++p=SyZueK0;6|9gK<*PI=^60sS!eIS_~m<@q=QoD&lUzg z-L<=@=yHCf+wQp$<><2Xy&p7V4>WxIgz===6+QViym=7_fv!88N8y&}HEjU80&E?= z-7+gE1<#Q;5x8FO=%@^es5HmM?nHf6(P1);^-pZKcVysHsOzs!zSPp%itqVzn1NOP z1!&iB`q;xD90WR=t{t9zII>;YO#X_?*ZoI6@s&S;s(|@tE$DwW9hCpNh6W4JR!A^a zG-ynq1*74?Nd0rzmZU*-Lu|RK3ctt4<&>3QGvVNpSp-`(_^dfIsK5HIw`1yR!m`7H z`ii4tIu$k#4c)nzdE%aMM+85JHAfC@Qw1;7}ktdfmi`nQolYZ9=)Ed zVR~k|x3{;LFdLG+r~#z|sImR+Ev2+blV!UhDyh3R@F1w|lQu=XUr%Uga^@pwM@{7*P0V8C)7CD`7_ z{k=&V1=54xLwDC}FiHG8Ikl-AG>Qj%KkQ`_nq&PLx2b(sp18I)vv7GP=!12a%pxNrckbB(GOY^= zt8>2+U6R47z+bCgGF@E6aY1Mm(%@S;pc1*|CA^vVO`1Q0E0xX>=<6#kE$#8s5oM>e z>+J6>zrh_TQMB_a>lDN1wK+DBa9lGPe1xng4&eq>&8v|RhD|utVu3IO&x`T# z@s$ZZBQI5W{(VcD-JB5^_%^*>0%;rqD5XL|L-&T~k43=+^=rOtPL4bD7$Axcgj#o2 z%;x&5{A6L})hn84&nd<>VmlaW&2u<4HKlyfF-ksGf8dAS)~-D|m8}cMl|*}c>=Q*@ zeniiN_}na>_&t@7Gqu^+Y~81Ti6ZASqcYIuWc4s-BmEopjP4C@5{x5Ixz%y(yySfJkT;IRf3+U<@R9QB-a5v{T z=t%~?`hBi2i$SO7YN)y`6P!G!rGA<)r{&>2O+2Gb(^rZt9m)h*6P?0G=0p@Jq1U+c z)z@*-+1KH@Y>w*_&f9?7t8ET|Ct&9tx&XEFvjz>NIYQ&Q(VNed-ghE3Q zENzg3bz3tG1p_j(viQfCVPP7nOPoA_%z~3B%6(>kKB<L()cEqBvO6!awh{wGuSylxbk?1!WY1gxw7e*aP{* z>v%2?`-!r##Y{B8E>DrN_l!O~yzsr~ynWWJgNin8eV!S;=5A}WukER5cU{3=)?K0# zN{TII8ErjgkPsDfssZwXaw2$EP~1IIk@?bjN=f2mBB=i^S?8YPk?)Cu*CK4Rm^2qq zm=!H9FVls3dU$Bh4*mQD4^Gq@B=`qzo}QjpFkiyCuaC`SDc71H)=_t`v9eC%4Y}@U9KeCxT60GgAO}*Wi0i%Zsm*K(3)2RJMACp?!Ew9 ztFv~q24Ue8G&F(3{3TFeLE1{^O|Wjkc>d?0^;(qhBx&9BkeF#gA?{~3!m4&zMTu=&KP3^O^~w(ZTgKG6*6_w@IdzBMbXz)3iB`_f&s zql-gPKDwk?dJ>ghMO6z`grm;`-I=>*d@Q>|WD_O78<2-M^KV32NYmJatVCll!wCR6%YHBM?q_Pjc z@cgsGd3})1%ayBe@d^A!??b`4xk1m^xC*q?8XTpH_!$b=L%=GC-Z>>VfwGlMF3Q2w z@tg69lP6mFN`Dn{Xv~|Mr<~G!r{6E}kJ5&!fUwtoJd&1`b@%JDU8p9%>cZwZ$W6MU zmYRx19gib)FhDAFn_U&LB~8K9a|soRDk`mu9i59PTBqjcW5h#8WM8y< zd#^appJ>iaDJ;I!Y*4*o5f*G8mwlFIjy`Z=;@F=(65Btx?^E`Bpx_d@!;9+djUT-u z?|&=aa=W#6n?I?^gMPt0ahK9iJK3Adf?4|{#ads{L!od;*oK^FneeXe?&tBYrlxXu z)c-^Og74o|>bJZ7eD}ZXxv=@=wPjBlarZjih>b}|yq`(EXFA(?p#OsSi!Xd(+Mg6? zECp(hFfWnnM_u1fUc^}55w4%8A*Xv&?G0POSD&?w_jjW(?p(Q$x>xiWcP#qp0cR)O zMv}h1-Ihc@{kH*~l92gjyu{W=Li+B;?5CFDT?!d6)XYx}*YJPSW2o7fV7f<6s5ZDf ze3!KFE6=(G|7^qZus`hLN+CZY24tH>jrilg1r|BFdj)GGJR@fo_-iLKC6PzXXmBRr z-L>KS8PZIg4R6j!mNn4`@D%m887ObNOcADFZWwWhOtZXZ(J`km*28fJoj>j6kndss z)^`tnk8l5CDJ7UN?$Py{hslFpQZXXP@SOVpxUzvtrCpu5XV8Qr(_qfXH{*K9i`*}j z^eeXUQiIIKN^eA;&nU(VG8WK<`o7VzrJ^%BD=HJkliY1|d+#HiFSOa2BIH&fMoeL| zaf>Dq8Mk&a$zJ$3gUs+e-NY+0dB@-5dNQk=*%$4N4rnaBq>@xfGdW-vfAk(%*-`3O z@Ag)u=1b|h_$YDF1=vzyPj#Kaq};S@{i$r7O#H#M26j)CT&)grzbbY9 z-B8(ELJ`dzsWhwZk@ISp&!05J)K@VAUFIo~VEP6|N>9)CMN%FjCND`;KoBR`QSTepJ=vZFgmj(21_=F@{; z{$)ZaB)pya(xPFVmJ%D1`L^3eVMvmH`+yVM$1!$~FwdVwGxncJlD^%m>CU_;X*yV# zuWH37S6TSV@Q?X$GoPr#{7GMmYc`IGT_)k<23iWYW8bh25o(*Tzba%KZIvv`OJ1aF zI$Rr|l>cmq+M8I#|69ICq*HYI=uOETpAQuk84is|%3bnt5EBp`=iG3SKYDCf)>}`+ zg#Kr4`;Jd7i--qUXgylJ@`uKVFaFyzm80${-rD1~e0H-^{SJpdPCZz92t%cvY%*>R z*_!Tbp$t?fs?(`2ni0p+e~C_Qadet|4nEl*X?+f!u}Zv1yfa^GD09`};4dm>==eWNOg)PN-^qKem;3nQEWOk|FO*Bu;X3wPso@gQd$4Q&+}4uFzD+k4!52^ z;73gcTe7oQ%hyfIrpiYTkrr+K?6t^UIJ4rGIu~9wXX$H|dMI~=L!fuz?k)MKv>3(U zCajtwnqAb@VbWFrI>bUH`){N*27ao?M{m?Wg2g#v|k|3IbKwUEDt z>F(EfMvqj%IdIb~}8_o1g`X0a3bSNmh}H(<>% zrFpa+#?%ZN_o~}?Im_T=F!$NX4m|$%+1b$k=P(>kxoW%^Q(>%Zd0!wTFZ5tVdGASg z>F53To7MNZI{KOZQEW+~T8m%zjsM;ITQl}x=e+})0w=gli_7+euS+LAC1bd?pcNM| zN##Ob8onARP0U5XjfF9Pd8ub^eCC$jxAJR#=*aAnMJfpQX?MN#r^j`u-t;@t`ST@K zdcE_WnGw9Jr0_y!pp2_AZKmmI#^|rtWP|&@#>sZVYU!k1h6hd-=44%(Q!~DVi)IPM zhzro+18^`Lgh$=kl4jU7@UHEq3bclYypkQsVdfJm#AxTsp;&VZi%}! z`Axoe|4B}{re9EM8pX54@cKjU5tGIMlA#Qt>$U4|`O>qm#S?_=rPEaLIr{br59?-} zqb)ODZheN1;h%G!LjKFXol(7{S@&ow4dyDw_6ApvKfCznh`!rfD^q#Nb$5TEnK=eJ zf2vU7Z;BmL!-v|)9eO#_T{#9vf=M)1GRTr&j6DA)?l&pA=^3jV{bBoN-LXJ&=A*$+ z^fdkrDSKRwiBLb%osM)8n${;qpg33rdggW2^q(|(xYu{)-|ISF#UrdrQsmgMiP|~U zo2NfCIDO61NFX^Z*-3a}LTA%u+qV|1aWE?&_4^Nf!^itk^R4Ed#b(M=1(E&I)tWg; zT&G}?6Jd3w-X%(<@pN4GM#@iBJ$4!j+OmAI8x}UBw7Fy>pHmFEbVgrVZJ*62b&S?* zG%^n1IGoPG_3V=ZoOA>K_r;Z~bzdK0pE`DYxmmrT->AVuWfT9gky(@6(s`a+ z8?QQ)<1g`X%<$uIxT5D~?BHO*VpzGB$+T`Bk?&-)Nr}EdqQUQ#--`E$|*G)4-3U#^DkUFuY7koC~ska?cY*vZTQqCRo3YpCRK(y zZXlPFX4FWkY$2($*vaS^|Hi=`++|S!H6xZ#HEcP5`P!NIdt-y*8RoZ0du}>B`e|-u z&*j$u-ki&ozb;YiQ;;{DwdmUkOIh{2hhG0PXEvxZ`jPW3>SOmKQ%N@A@k;uRw+RJ- zdIdfo2Y%2p#xjtUNR`f1-JoxouW}N0Jn^U4vv}u%d~elmXWwX5F-#s(t6s^> zO`jfcV!qY`CYwXos@%=o1{j+_g6Ty_DjvhW7AD-4YA?s=o=VD{GdU^vTkpp4S}_48 z>61j@$$#gZU`oJUky{JUHz8$Y{i(jj`FZ2 zrx{;;ESUYa-3pBv8zeib60&=}Uc5LndlH_yGvbfQ);Ge~DY@9@+1ARG6hv6gY3*Y2 z5b=+ET^MZeKQr8?_+~k8kD{{mLHh&IC```TM?W8>hkwQ(hGyS7Izpdi+~@Cbay!9J8+vcL`7IUS4W@;Fx&WOwM7`4eP-@R%Nj)GyN`m z#|lQ@_Rp-S-21+`olCbh89+oja)}bQ_?Qr5Dh1J{X8=?NBQwa~D=eS8!C5BT&`&?dSXMjkYHc)**y_Ly?ms$yZ;_h;L8Q_&cSd zcD{;OP(5wC#lG?Imsmp;sp>;7byzJW6&E>vADQ7at4gbGziam6JCGo_{!DdPcclUl z-8@(I{ku2P3+kX1-rN8Ooy(iiqEJU5goFL`|Jw7AGcwjfltnl)kW6G*nWsB`vQ$xj zAS@=g=J%zh%-mvOo9OcT-hqi_W}Kww-(OQKJHEn4s~K`zMt6FR!(q-&1Xcr_gwan> zP&ph{K0!+Lc=SNe6}`g4Db?BY(f^#8C7!1`t=Rz}1RBQ()Pz6xEaO$Ii0ujsyq5x9TR`TOM5c3)yy~@6k79#NqGCsI$s1u=79v=Uog=Zk| zOrzEA86Lg@sq1iCc5?R{yb2KT_mGVVug(5~p8ttOzeQjWmypmKkYD{mUVdH9X|qY6 z8cbN3V9X^ms;$+JnQ1Jcx&I)w*3#aRw`fUTdn@5c5F76F_17;yDKEOIcFS5?e*&-H zSn1k;g%cIVyYC5sd*i|fSpPUJcJGkxmNjOwhzVL!s;uB7qLHMZm3q?ny?IlKi6~*g zlbk>8LD&ru+T8YBtKE;FJc8uZ5in|CeC`6GzvB2dMYpT`bi8^=gSLSp+aqb4(d4B} zdu@HKnwmv!@Z*jRUAs~jL!K;m!S>JgY3YWCm<7HD9blj~Tmf^tgJ%q0DvDqN(+@KR z63jE7z+Zu!oc!f5FQYX~9*8h5$OB31Y0$g8KXCXFJcSO>(Me+n09_UTIbT`Q5)_??zyEek6PJu+;};a&v(Y0q>g1tS}%Ebx^bs_A$uaSc1O=?`%A7 z7(`fP=gyrIzj%?bZUSz-E^vs zmI5+>U6@+3I7U078Tv6y2QicId_l9%9kMVxtBb(`@%!+7B2?(&;+vBT=IMa4Z8;)* zeCIiuc=6GTU>dmif7>jRxeahjRRbmL{!bvBLl0H~nDe>L04~sm7mbF3_LU|IMq zw%`ari@KErlO^BGBjWDb?RiEbCi#iI=Ar zi6AtZ4qu>d#~hD0xUZmjMBH&n6-41SmGPFYE!&p-07kVAKk?z(2FICBJ?VW>zE) z4h}zzGNrgy)L@`>UZ+wwdoX0w|xYiSMXWO=IU_xBjSYH#gn`IYXq&EB+DM|S71$X-Wn+A0+ z{#@%sV@+um7Z)d0b`q{z8SU5zcty;Bcxh{EClw~xt*W^U|9nUK8yPh<8S1L42a(Hk z%XJ1*i(_nTQ81rcJ;fw_&XRTOYl&wp_qW1hfC$ffgY=iHSILq7LX3o=+y|L)Ty`>8 z)KLgHq^nPCtp2NP04x&gnDkQ*t-~H7BqU_d=Qos%f@R<30X2P`zcRA2FS;oX9#qvGNAijyH>R80 z?9{|;r;m}qdZ;?p1lMtTEhOK<%Br-rRj6xW@V(}+F{=wX8T*MDCuvAW9uXulhCNqe z;lZ)v9aj7Q=OS^(&@gy(tSdOjc7_!NN+0~e;O|m4bQ6#6aDAL#cQZ0Q&YRZk_L91Y z?P}U_15Rr#S*G-61#{G}@#D#bC4nFjU{h@V-~04U7f))9WvxgVAa25k&Lff=mS4Dj z+OwC47RfIPETe6$6^00B%b#n!g|M-=cyqWQ$l+}j zFFk^>rQekUqm}T1!OC!T%DmU{hO20` zZfhb{WFMRw6VgmJ8=a$1&$tjCRGnyDc&cGC0(-)<9nR-5>n_8gU;THGE%^>}DMdcok#8}Yb2&{GI%*wqng*gpO3SS6nS#uyuB zTSn7%AV4j_Fhen}I-OSzS^(Se%q9ea;An@3V`|GXi-dVV*p9zM&%Y=l%Qx(8h8?+? z6(i{x8M=V!)g~fUmB9i(k9;55>)|lTLV-|RQ&XdBMauLn?ytpgWC`ZScL+=$8_Z{` zmgZ(|3{BGI3hZ9P_6t0xcbL9xORB=|g;TDo{v?w{WYF-@zb%hq8ZsnL!w}Jxj4^Do zx*xY(4>X1|W}WSQ<5gTIPo9L&MXmj0ft#1y`oqDv+j;yj26~5i9IIJ405|F9?c0cB zYdGeo!BAI`Sf+8K-m06XuP%j`d~D5>D1oFSPzXkRiUzxjc8g;efgG&~owXFdK~^Q4TxKWWoZY8Of<-7tI1w#K6NcH55~?CAX6luKb)$*@ z$RDqb2zn%}kC~mnl4Yj1R zk(_8KKCXxI5XrD8y&Wx7|Ek3(jW-28X)c;Nmh4mq&+(Qe>781eJ%Ytp2&N{ui7>*p z7;8RFm|Xg+%pYy|w;CFqLUXoR*YZ4|{n6Mi2cUn`o`c+vd_1`fa}w2GCQ@Hp=2D{)x6CZ4-hQ!U@K%rDH(x? zB9vUq^W#;J30dT8t{VfTiEO?p=(yY8=+jJfRpMV}5xXLag-f5|+u2AYB3e#LbI?c`p0%Wbz9KNPp7SRsx{W}hpGXQ z6j?$c@jhrlDTou)8O)0RVEl$|WDNVzMcPpLvJ|aiBA^zX1i@`3@)(zCL9L-hEd%yK z=nV~97nn2CJ@J_}Zuw`}oSI?ujXK}q#E)T@fPbs&AnJxFJP@E+vR3hQIW8P_UY**3 zFu>nvcnA&{VFQMTa$tlO8)G?7d61ZMArsf->x7^VmGod;s&PoW5)V--HBzp}g>c`eQ&_3 z+?b}(D>5>~I9@R8-^8l4G6%*Rc^f3?-M_+m( ziuRlM{{}{KP@a>#=D5{3(lD#DJh>}yMxky zpn3bhbxV(NvC;BfBmU_~x!P|;ht_jNWlvW3-0bWbArZs6WAG3PiCDxdsOCL1%~DCa zmF&N*2N-YY-uLyjvyJQ1WgQR@Ems9pDeW zND?q@J=6C4-^o+@L_S_;_*qw6Q!Xn{~c`4`XsJvmD+h?_8XR@g~es`TR zk`NFLyfyn9{0IJB0GH->g8qP;wnvZfZ^Z08$7YHd#2!KPjj&4DX>GlrE~0~0jVLeC zvI00~zm;_gPB48$SEV9;kudgPe+dIqZw3+c#W#qUSRo-g#KfYZLB&uC13vUx*U*ky z3aC)(7#FU&^_5U|9@@yyd5i6rr4`1LRdC(2Jk)al;EIyQgcM&FhQ#;R$SOC{%q^B zblWKg@FjQLqq<##-9y6g>Ym0&uXR19Qz%f3YghQP5P9U-p?U`f0($S=Bo^1Sgd%0u zy^cyeqL-zmE9V?hCk}v(Nu(gdW3XpzO#Q<+CGuylIR92}e7xZ`c6TBMyZ$`w1M5NoYcMrCyVlYXD5q@5+0!uHDe=>*&5c?NFDS)0VDQ{q zJbry{(x)e5qfx^i15L1Np~`v6gJQv_L z*%b7&wZALYh;vH9@L1j*s&bs}gvz)Drn7{NZfmQ}-Y!TZu)S4GuM2NGf;xS<@T+M<{?N@y;DJdL$w`+%r>_okF0C80lFUJw}1z7-J>0Xi%R!el{% z-7^TrkUjW=hJK%BRO?{+ ze7(fzSc2Y>w>}$o$FBPhzv-r@oYGxhiuY<3Qk|JD6Zyv>UgAbexVa;IkOZARH@YWk zPW8)R;Uh~}GltgNO6V{eI*YKOM;E)n;PEzbf77Kt9 zJiISg2LKGicy3FIPT4+!$0+n*=%pcvFK}LbqBu0j5%ZEkUH-oWTGA)j8LMp%+q2!W z6d;@(Ifv(#)y)q2hJCpDzS5zp+krz|Gv&@ENGAHg;Uga7&!0c9Dk~jSsHeVWw`C)+#$p-u6#_`)HyEu z3#O%|X`><_paiHm5P^IFr!>6PeiKK^Ec$Colp%jjLS0&=n8GMgf2nDlb6h@yz4ZIM z9gsyLUs_6vNEn@;=^!j8iQrO$#QU?M1~8>>=LnG*2yq8R2UOFUC9d>!cWb5PLKl(V&PP^0|AxKA!AC=< zjcdi$vS;_}#Fq=t{E6y;&0pGo@b?y_7muRfp4QopuSX zAE9?4-~WRC8 z_wV09_m-fZPX&)f9T=8rFaT35**y&l@c)<6CmpI`)e2C^hRTem89O-1i2r2RHx zwm#sp|Mmxsu3zmn`^DYebhnm76Fh$G^9Y~+0_${Cc0aH}PsQp}Rer3+hwg#b8R!HdW)t<7!tEkRz^PABY1z&*V zsdsDWS~Kl~?mWZ-{*;$DgSCur64cEQ{PN_paz)&+;h*Vl6{B!E+=GmAZrg&d`8|=7 zgR4V7l4&{e&T#)deJPny!0tI$?dswZ(KMRgengtTlSaJHBgXjPeBha5TZiD=2#^nj zC1R&5j?F#q(J6hsH=5O$c0IFi6%evg+V&D%BFcSvVX_tn6_D*dur-O;2}0H+BU2?i zNpxYaq6(}xj$O77rJFo^Uq@1SN`RF58E}Zx0JTte>ZkF0^mO+qI%g#cf41-1^D+eW zvmz;Byh*TgF(1O}hIOgd`sxy34W=r40_f5`$v(w;PP}RJyHrI*oex{A7ciS=+s4yX zf8y3&dj38?1<_X}PZiz~&w%qOK`~ULk6t_qdX3EwwVQyD_3*}chqVo*O5657_A+V1 z1ur4U^ZoIPxnL{z1M*?!$Rng4%_RNBuI}z0%ypFXb;`>!`(Jmyos~a;$imCwc3nI( zYnu|Dg`Tfu^{eSD8f{&$`W`GesJ6vCTx9&~wr8%cZ$i3uupW_^Ww*QF#+WScviR9d z=Kal0Mfc|Ko8H;-c1weKx2p21wo%a!808UITdwuwzW2UWwI3t-X4Wq_$TAO%ue*!s zFf*TQ0*w_aPw2gnm)feW$0dy7RY=GSe6gb^PLSfim@UYs4RkTp2rfKp0b(v3#F}yuMEz@}XU5Rm~D91eI+fN~? zr}7F9-eh8|5xE%^C`NWT!H9o7jXri>y=1n*Y^IuwIc-m5&xA};VSEtNMb{wN%w_Dl z9{J(BcJ8NQ-nrQ+|C&ul+0(FHHnbWKB_~a$-bJrU$QCU=PfeWLWlSDO@7W~Yb;h{* zSomU4+oE2j(X4F_#T%=Eq`UZ_cToWBgu%sem?D!ZpYZSFRcE;@;bJ1YxL0lYK}GKU z!EXlR4ey&x*BG)(j=d5Lb~;pc%_l%m-Z%V$+2`sT&MtvP^ip!PN373ENR+Zwu6`89 zLBwL)c}cNi$Jx!|5@gcVK4p(z7qN^UQvQB$zi^zyct@qo%Tt;U#xE^4FEN)#NX7L; zS8A1xakz_8d75R(_SB!mZJq{+Ks>%dx)G``=CfxHVuG9xd+Omr%#ms(jJH}I`T<_B+NcL zn^;r+&1By))uXLS!P+>9o!&nsE ziG`JdocUxxjNCWx52Zh0S%W4TFh1H(DLtSgOiR7PhO44!`%y?wR#bacJr)lvY6S4>uVk9?~={MhJ% z#@~g-Gd(v~iUaTd@~k1+U4|z|jtC1M;<%Z?-O1~)_=h=Mf3vvm`-iMa7cCyo3LdU$ zKT6(bkZY=OWj0y#;QWalCNk}t6R+AN|2gkQcaWARR~8rSio*92>&a7+qhVe@`*Zk- z_fdXm;Vq&3c>l|lFq@uT01=AsaDT3-h-<|O7`d`rH!_q|T{z&JCp z4GetQ|B{Ee=0tQvcBkELkO-bizyFHu=7YU%G374cuM3}JL8g^p3K@>Zsi%k1m}Kn#Edsh5PC9+9iP(oAyLzG-_!F3l4* z@x(Ke)(5WrN+$U%U$Heh?H2bi*)eswuWm&Jq&xJ_KV#Jbq zY1h!d&&}QaL@;6)4q{YLj3)-2cL94zG;Y;WgY19J(YZS@CN6aVoRUi zpw4nR<8PWVuO@wqjvf0|wA#1DR}+mEYSY&vYB=#!LNtD8U8=iTk$cBY=)-7hM*DIA z-6q8o%74=OcV5;z>cKqlLet}1b{)5VnOlnGkMhF@aF?0U*^!s_=qWsW=%aD2eCx9h z9=GT>j?PAYk5=C#nIl(_t6;RXq^+@S%(EkIY`w#YI`2ATX>_=T)E!km;vSs1fltyW zEF$vC&rd1AK0Pgs!InozY#X_X7V;VoDYP9`Ybwv=Q#Tc+)kh~=bi8}nr}9$7)$?)JBWtTd`}Vou9>xK`e4EHYT#ow0{Ieyx;rx;B>Iz;ue}e73?_1^rul!Sg#9dX{wBdPCS#r&3?N)__R~R*pHNgHx&f#dqYCs>}GtYH^TL%)>9ID1`{?nKzG_0u6%kpP6xpH1xgn6iI?u~ zeZ{6WdZon6-=x|o(9L=4#rDSj0ly3*62!h>LrsNJN>@+sN*CpBUB)f%NXCl!K2Xr^ zv*KNEjk_Glu8rfY85DpR+2AKwz{MRMwrU2wY4+1+hH7{+ z9ihex5n1U9X2uBV#QL(&C1Usl_YMdhgn)Nc9pYt4p;Gac<{*l^?$vGp}Fs#)U;D;0_p7 zXQ5I?`{>fw*T<7-+XZN8KMjq3KvsgJot+TSsz->8(#BBQ-N%PuDacOPW4el58x8o= z&Au9c9_bD!2XmA7Ls6{E%(+!PG!b2&%(n;%3Vy)Mos!fAWk5xb^HkC0fHw9sL%kc? z!L7gq0=*L?+F&ZEt z0og46o%MN%W4vKom`{2#Y(kdeRv0y1&AxXV-yG-9t5X@`qMUl6uM z^KH|o!VB{AuVTX&@A_~~NQel_SnS$Zcf(?)MJIe-LxX`>U-ikF`M0xyx05DbzZG*f zu>xZRqU`Clg1}Y_g$d8z(dTSop8?MLKuS*_zW}0HO+!T;>Ci+9AyjkExpR4>&k={3 z@V3aeFCvkOk^7Q@P%i9NzBQV=s+gn`)>4#&-W6CU^JF`t6zLUP7-`sz^-Cu4 zb9VGCUKSxbVhFymp4oRr|4wCYUiVIi+Sp9!cXEO8hQdkaDU%-`|LW;&aSV&xD zr^F@VB~+>y7L#Mj##2Dg%uEZa)OG4}n|bh9&yF;BZu~qJ&$@H7_j~C{jrzts{ouCR zni@&u9+H3x8-c2mfUFr;Lf~JIt>MM4T_lhzZvjyfXCO@qKz-s`;8z6h?WaF{`1XKJ z{6_$3s5DA#*6vSlB0-4?G6fdgP(ys+lqao=_+ucC`#^M*!m7Gk9rT!pm>sF#1z@xo zjr-|4pC6Grib+W5cAT=Ha0fI6XPPfQ)~#qF^{gtyC7x(13Mz%pACmYcw3mo13+wxD zV5NEbXT(?ea8WPdfTS3CHy1kEzZyLYdSl(MUsH85Tui7Y0U2>9i@`n-gKiS&CQ-&p zf@(&_c8oc`)bB^Xp82lJppLN0hq&L)dw3!0C*^4HlP8-gDOat}-nx7DuAtOqW%Gxu ziGHWd`dV|Vjm7RGBh?Y82EcilR|`lAI)JVHG0+aglRYI`7UGh?yJ0^y_4Z4bE)f(u z!gI!pUW$;8TmR~zBUgfVn-pMCA_^5e@SV8JlB`VNq#lId1CgkNn?#*++^wjH(086Z zVuym?kUH=YQRic=JVl+495stfOHSI_+y_ZHq@7=e zYqrQ6C3^rvNAIGwItUOZ=opi&tt}|LgzXzD>|h7-{fh7P%{_krTlByrfL4>3zuz|# z%~76yY(GvG4aE++>MG5+yrSqAoVT;%}N_r#VF;b#zIIM2q|MkhKOW{E(49zeT7?3oo|Kf}-O%}{W7R($E2{EF?) znhshtTGdT6f8spY)ek1>r!a<6`yah3kyuQXibh-(!c|$3>lJ{lmyvYTbawLNZ!&q#Fw?wcdo})IeOw90=`dRYh%NMhuFYF)2 z&?4Ur$`MJ+03DDCc;5Y?JP}3Qs1G8v;unq&1ER8w@%LJelXm^G!AN#Ab*;Oc?U}CM zY{Kb1lxmreerGyAfBw6SIXO8Ce0kbnG!bGPEKq2{RIJBIbp=<~49n3XOf;aey zKPSEL@#C|Qj|0@SgQpHe=d6@e#Nv<7j{5Rp_8C{pA0;98%3J}|^Gv8y8Jni%@9%ze zsPk4)KJyQmCHCKRG`x%no!cc^?boyQ)ZJ^}D2u*$Z4fO}D<(W|(LJKHW}PApx@%i( zfYtE9za<1VBJdmtoA>^9&NdwRwkla$p`$5bcY|)ldHl(~HPNRIf$%r)I`m-j^5;dj%m%5aW7kNEQ9%_3LM|XtWsl*rPP3I&gP9R@!y=)BD^%xs_7^ zjji2rxrel)?yq`Q-!Nh}sQtx*QZ0B^^=;*GeKI^V_bglMgF~B!Mn(p~U;T>iW7^Y| z-_KTRU7!8ATy}1RkOd0s_Ubqkc&~k$JMSTCB$k+`zvmy>PpG~!EjeNYO1|{%9^c%g zLK}Z_SZ(!+mv4f?LaAJlP@A)Y#TG3#M(b^8%i7r3h_^j*bEPi;w9iA1TKo;|?tR!^ zp4eWJWk0SsiM?Dkwky@_pA&399lopF-q&m5P?=~Q;OFPU5y$w>;QLm|BadI$=3!4w zfw7LY=!0>s?twSm-(2y~VW3@%fhNTkd_F_Tg!=A+@bIj8PQ_U;Vhx-BrCfA03g) z>ggP|zhr}2-5$0bNk!6#T5exnts_G#$zBy=AlekN&yaE8{t`#ExE35$E%1Oi9@=1_ z<1kgqbR!p!w5fgP^$&Y*bhu?%e-X%>p8Yhh=6SoxQgF`naZc1Y)%CtpqtlI^I?LiR zTZ$IPO`c-N>RQ;!5uZYNyXQ2ZFtCH)qI;nB>B@Rc^${b5>lN$9o#K`~O>;?#MN$mD z(&fr@Dq6nhYxn&K6;`SWt<(#4y;X5d<&BnZaUB)gPj^qxdg2+?>H3TWhsKr`IYnTT z>F@gYeVxYMGuc-+VxwDCGqaP0KUC(l>NeR!oue*(fzp-V-W>MoEUBH05lpQpsqXH4 zBVf7MCDJ+luJp!c?zmr=y*EIpa7a2~ED{Y9za~=o$6Cr$31{Ce-t;g|n$_d9#XZl1 z_a5%D8sCS#X2Q$2liu_D%0276h|Z{6K3-Ql)czb!b1M46;67Q?7_%YEal+`Hch*Vp z{t1f;ZpZTOLwg5VERh7TZPvavsbkiYzQFf2#=4b}Ht2E)Wh}moOr@`UV{dscX1R z+HWmSq;fGCH2;WaVQ^=bF})R(+K^qkT343Ob>b)E=^Z7KCcpe&tr!Y@z1oqH8T8tF2j4uq<8{9oFAvQ!VxQ6r#rbxtA7|A-ehUhk!ks$(@Ic-)`zZ5#-B>)+SHi$Q(f0fUv&H4S_sMD(Cg1K6tg(&hIg?vTwik|xBpF!|k(>q@ z@8h+o;N#e7s0wx@ijIo-)9<^X@g}K#fB5SKbAV;TK~?WHWK8aH&D`Xl?Oi>lCo$WMw!yAY7L0av%;#D75_n#Rt zANcjIXj{RSv&jy3s2Q1A7C)B`zV~->8PoFX2`G0^6KLg5dqX8Q-gy{U_-cgqU1%P+ zVstfVivqyJ6Dz!MZe$&OroQ~gTty2co1cTq6@NEd)B1{^B@RBjI?UpRqtW>=dvPs{ zL90;x`N(_i$Tw$Q`xgp7K4)s#b9qMMZ0`rX`)&OwN-ifR^1xk^2`UpEU0tlonz*@b zP9K=@#Xv~QowNYiZ>XBAPg#PTn!w2B6e=+nr?%GzW1aS1&&?U1r1{7D*OtvI!j7w^ zY4fHQ6Ao9FO;*qVs}Dh&362^24s*_`@k;PDNqKU^!tJiXc&^Exa*m$ zVOYFuJrYSoR_=|*OXrUp7Up^Voc;9iqLU|k5hFA6BID`IGik$WDm zV!kOTYi(JKk3r$m>XHv)r%&u!;$)DwZe*dHsoe9tp=WEF<+)>WE<@t$@_)~l>@Gbw zyLQ$oYI=HF9_7rSayh8TaCvP2L&)Z96}SnjC}2@VKs$%2vjU8v&n;YCTTZ#4CKLGk zm9Efk6Me~FRwUzzT#}{VF?nY5_lv(~Tc3|wUY{OXIxk&W_1^o3{a|>k5^mUb9itZ@ z=#d_3pG^=uA72Cr;UdWVypNvz+I`m*fDjolkN&OPkyko8X31Ne%tx5bZRH8JOkWaL(UJLZj%ldoGF6tnLg_p8Ns5|E$i7k+STlbFFB4%1Zfo z{XAp&^#kkjN1xK9l^>0?pF0%=W^yaw4^p)ek0Du`3X89|qp`SyM5If)E8N_dZ7O}! z0#=s2A(iPLF`s^H1%$35dzvo>7c__pdmct%f<8x)ZV5%CPnpJs4P-~2Wo0)F)KA)k zTTosk_2K6}ABED}W%`A0I%L;-Sg9t(Z~AiI?!&NYy^|QH_r|MCErKU-Ov6307ED+| zD(ypC`cjQ;H58aeKv*c%WJWj;#X$^neF2gh0Tk>Z{BREgTy5F~uIQx;8)p-^$kC2A zs!d_VC8wA6Y6ug@n%rsQy~W-B*;l5;Ik^yeyz#@xx|hj0>{mX^UaGtHiLdU(3m8qU zA|*VkzYq*g*a(Ck*RYcq{w)E*tG_^oBv!!Mw6I=ZM`!JjRiqK7gn)L&3LwhO({ne3 zZBq~pi|pK4p}qK}gwfGrpG_ zCpt<7t?HEqJ=79yE7-b?>D8=JOldEABT=PM63ve>t;Iu5-Osl?y!mw9bT>~8*G2_*qHHaKYx^t$K zj@2_a88$@mpD46l>PPu`Uo=Ig8O*3FNT^6_5J&Mm0+NxTVIZ)?n}faM#}u%OX=G0% z$4k2oEYHshu9Qy+>oCN57$3?nob{PsdhX6J5YSR#eL-kxOiiEjoaqN>lOz)KAoO~5 z_aR6wdN_;`8H`7`$r-#gJ!-^BpixQeb<`|EFK71cW>XkTF+)nKJBvVJh| z@H>ojqtyKuZP7IlKj#EF7*U?XLNFbn1kwaev`rLFw@W}(s9Ss!hb$;v+MKn>ngF#>vl7D3H`Fu#ZLPs&OInHMLhjz8}#uKQo zs_v$Uj{5yLz47BhllF1nn!s;7H-uXzds+B5YCp}mrXOY8U~PIFa3HB|-eocY@(xBL zG8Jm4?I6abDG7LdZ?C~gs({UFRq4wGtT^kD>owF4SF|{Md~r+p}V)h=pH&`9#%qB^v-@`n8)abQGIA zMz{)=Yachx3IeomyfYlw~n9ZTJ*XtbRcEyhCL*T zZ^N%u;3E@0G>TPvC^x3i#NcoF(-+Rb9vk|AhMxWKmPngbanR5Lz6Q|WD8Oj+pzBq+ zxTQ_ogJg$=H=RF)G+m7!2CnVS{!>yOD#SQHJs?v71t8b91PGtFyX&0Or(^bhX z`SGiS%}(Y0p4Cdp*}v{hE#`;R&JSMF9Z}X(x~Jr~dij@)V^n3fgoK19)MROe=n{e&D?vtLL9%5cBYyDKz>!glYI?wqy zRofj8toJw5Xhlm|(u;PU8hgugdbm3_>ez!s1=Z6YX^Z1HjLQ?gJny zZpjH~$1n>#wPUp4Os6tw`4fyn$FW{XsIah$RBh`V1$HIZY&~VBd8N2#W2|fIK<(paLJAtMEjrrOm?uJ5 zgOFT?HOfRvL^Qr`4z_Vs2|C{!zxhxrD&4R55?wpLZm`Us4~qJJyhHs>BR}oh8b<30{bkGPD$THZL&^5} zfdO}`H;WT3=VOB9?zIb26&WA@5-xM_fTOH>z$xL~B}qYDxjVykZ>#5+tTXC=PYk8O7VqcUNRBuHW2p z_NMwYy+c=1z3MrekjV13jT2ty&%Yp_4_Z~$`_s#BghWInH({egP{V~o3~iQB6kOo_ zTn6dAzmDf z`00Y4`Y{<~7+-pS^@Yuur|uRAFgW^0d1;ql#Gi_cjAIJpuY{AI6DRi_ z*b)vK{IYCv5BSYjAE2IG%t$>WJ|~e@vm`abc&6mH-s_(5NuTuF=|#-uE#1{Ku^K`$ z3LMu1HbjLlzaC~md<+-0utJi>^(CCJQ|qu0z4~*5zgK>*dcVsbvlhY_vX1-Sz?H?u-j1vR8xJhA^>K_YdN;yUdj;zD zzKY!aQ26y-8_r8iNh|)Pl|Ll5b*un_ksEpEI`|ouF?mJhHJu={K$S{L^LuZmc#J2Xeo4ygF@%%FaxP2{kR4 zr*XL(eD?@iyUv$>hUsKjNA05J@ROXj-?II;I(USo)aWN(`LJ7u6%{oHup;2^PWPS@ zGw(G+6F-(&he7-}-*9*Bs_35B%V)rik&}KH5RxWffQa9yc-3s@(Cdha5 zr`yW2xQE2NEC4#0FcL`9;-R{JVb_6S3Z*ppoK>OviwEVV;)00>t!g{+|3q}2^^$j7 zWSbFaTc?*fyI&2H7Jl|?h5W^3YK)&;i5mvp?CwxQx@O~ztfHEnG`S~R@QoA!be0lZB_Tu8dpJ}v%;CVHLvq^Eo$guBLRi!jAb{s;_Ir?0BpXKzU1Es7ikB_o^v0 z{VI0^oCN{3s|lZO$Z>cu;Z$&|*ZC7!?UH4?a3`gnpVJ&7Xh)F4=+DW8 zh2xDJ?zTT$516y)RSs=YT7S#bz>TZVvrFJrz?|1o`48#CbIw;gs=T??->d!mKuPkV zE@yPxvTdDU@*l3VWmis)IWE2rYoC##WMRqyb-L71-#Z&dt9q{;Kk5?lxO}6!jSBY} zU!_>`l?xsJ-(769Lp6yz>cI&2M*S2fis9a?m6CQqw)N~*dF|H>ePLlEyS_4L$6%t! zxH0wOH6O;>m3%p#Bo35(gmp7~vi9|=n>>{)bW_i02KzHND96~W^q(FyU#7ZoJ$Gik z^x}CL<&|O{yZxv8$^`_4#;)+Whv`Cx1pI0Yw>Ke}I+(k+!MVCVBsjF0zw|?(_Sp=> zq)I)hPnX4#SA-)(Jo9%%gbL;cDjy6hILe}%pQxgp8MnRX4uVSVT0G2KBAX)`t}?x3 zPrPN3RdJz+o7Xglsj9Se#pViyi{_)`U7pkqkEq>1Ru%Zm|5pF| zmXy%@DYyRJH)23+8x5G#1G&zs7R-OvXpLNvku=x7l(@@Rc>go{EpmDEl#fzOec8>4 zw|za1DwR)0FqFS4eCPgX36iz>moDB5<^643uIajom;Zi4ldS}<#u7QYNy*V3wOSGw zQGCcHIrqe)=7LAqz~1JyRxMFa%_Vm#FHiz~jQkaL4mIeNvsvf29cz;-FBr>-Vw<71 z@qQ+kyzVFG)?dYc`-D0P9VhME%W?L?+|V=G|YNf>9w)q&;>TDGwTZ$cV8{& z;=bGN{I2i-7ZazeG9b6xSqZuhFU~|7gX^rNdsQr(HPf z)x2rm_^G=xi-!Lb#{0i)wA-%DPWHRzi`=#G`1^o}Fg?dE=e%~;s`{0_RLs5Ck|sUX zN;KC;S#~L1h}Isix#q!s$DfZPq`BJ2Ue#vvhGH$psPZSqF87a3&8*mUPS6{vwezGr z^yYZIk)M|Xdsig#c`(CYh8)fGn#0mpKLxH~J(HhfmL)H8SCx+5BS_Eg>F`)gb;s1F zI)(a#6SP5mza+nP=Z|yf3cZ^+v*lTETvLlo^=I17N7Loc>~acfoUpB0csh5TsXZz{ zg0spJr^KMmqS zMa2jb_Z|9OttG){!$q1~USGI4>U z-=(wu^fzpJ>H05myr#0%oMqufO1w3@VPa|Pb~ovJ$%3@(A~S}&*r<-PZ@F1GZ9RG5 z`js!fOk(ciZd)%dxrwD8c#&?Ma?ktQb*f3$saP>?EKRmA9x1iwXjj}6tYkS`wlB1~ za_d9y{5OVMe@ZM{3b33$(eCLIq;I*2LZLHSovAHfc988-Y*E#gT{B|W-IP{G-pi}2 znr&eJP)g_M;>)w9)1ux|6l)@ectz0Jz1rF~j8)N=(ZOD5XL!tH*vcCpvCPt|K9z-ZxQa{I0yyC;KL0$G{sja9As|#)B zyYn(kI4O)QaZ>ndCZ|yXY~Z`yO9ioSlEf33m9m$z|)ho%~GpG~$Du5$DAs+LM&(QaWE@Qx8e zq2yz=N<ZW@2q8_VQt^c4Zic0eRxqic`<9)VR^IB!P1iYUs|utHwA74WEk#M<#>*D6fB~f4x_7)5(!jpo~ zS=LB{&ZzneYTMb*+z#K}8Q*`BFyUR_zIvC_PTC6zKKDd3Gc$1+zP?X~)W9yKrhsWp z@Kvd=)pnMZ5Ua|v&%I%V8ZpQCQW^n)qjLcVcj zbQt)Os446)ISf#PiW~~zk0mY#@0QVlyEUJMh51KIrLrrR(b-f@CcdSjXAqb@~6RAu`@118Q+1>hX4z|>@u^m zS`X)?XwVI~fe+MAhg7IqxSx^o6y31Ra>OqGU0-P5!>{I*YR>Ure&^WA^G>3svc;sY z<1Vl$?U}Da*GX)mN$+LNm?%JlV@pDMHOV}8Hv z3;*<6vtdUhuwpkv0(^n=kq$^~)}i|>_YS691LhfD)(zyg;;}7bI{&FOjy2-5`@3tW zjQ6s(d*m5?sk#fgwk#mBpaMN?kHP^VpY@JR7 zS7oF;-*PND2p&;~@!4FF54R z$3E(F;LCsv+BMcr_6~c!cJ^;LeM3D$5j;<_&xkYtILfgP#ffq&0&hDf`sTmryUn`S zGfm9twy?9io!|UP!~>CDWQV0QwFuOKZEdeFI#MS*12NYgtya>;h3`*m*|`%?b=O;H z0D*-#m^=}o$vOB(3*Ph9HjKB%(8yN}1 z8xG(B5}$>@UXirdfPQEXgN<1aUc%Jh*0;Ps5zY_h?E$l*HYqz8tuGgc=H1yJI|tOl z=q+bDrh@OFP-k{g#hYLrh>g!MS7~{92B1xt$kfsc`cbsx?~EKwXv5<|OCcB@Ogb2# z3)SwND0b>#fs2NskF10Q16nV#W`f_he7ku#K=g~!1*U_(?Xq)2t0)*x84OA>;K^0H zE;C;O?-Sib*RBnv;7)`1t>E(pW{0rx3Nv1qe|Al;cjtNjo@;~*#%?Jc$xlVBP+H-A z07Rb&xE|r|zs=O=*{-5OM!qDf?v%WYN2vDgTXv9&t06LN#YpF?8`StfTynh9X`J(( zbY~$DjYTUF?3F<@)8rjavELjq7QWKp4_lu=c#Hs;q)>obT)UR3I@5yrbcA0`ekma# z6jnb2K))IrUuj~6w0FJql3a(iOQ=VN172z4O@(8i_PF+}M@(!$GxcVmMc~z|%us^a z17#-@^?;RfUImlCi#?_PZTWF62{ng z*A6sG-&lNr$ec`11i&PA`Xwla;AqvL4M})YrKP2Pc_lr>SrJZxS74fm0~B$t0C;CC zJSP(D1=@E{m!BP^qu8RIOJt|lEG4_NU0P_or4J|=LFoJ8rpa*D7R22MQFgncmA9f;qsQx;y+=YlYyfMz= zJoPmCpSCy#Zo=6N?k7iw{DCA^!;nmBt8&~uGoFcPEW~>BD@?LpK^m#3_|E$WfN}7+ zM3j|_Tm3-`-sR#VJH4i$mES!TWxK#-A%<}Mm35zkHU>Ut|Mkx=w{zhkk9Yfa6b)46 z!zTf02%Pc8UZV*KYjxbtKT5R&?z8JvrRFE8_(?5R}K=6QrB;!KE`jgHtSNQ2dsd+j5)`hvy9MfE> zvM92*i=87w4C5l-A57kP1?@fznB;$n2j&`*!E{7@SmB08MTJ63f~l9bu19Cu703pp zBjS%xiNn3y4e>0Zg#uWc3hd>w+5#0MF^H>s+}+*FW))mN%Y@LHzj85ZlT*@FE18=z zs9ofR(J(fUwTu7jJE}bBGj1;VgXYBRr;Dr=lI1lj)deri1)P4LvMa%z zUh~7AOyhn~3uH@vsd}Df3R4jjqEmCT7QAW_yeh<9@3AZAc3bb@1>V+DcCbh=S;|^n zfC{_PcADH_mUM}Um(7-4oYL8Rgldn|X#iXY$1@!`hFq`m2TbsXrq#Pw3e#`)*%WK- zMyJw!Tw=}HM;xxT`(oD|3EkkSx9iI9&k4o?XKIV9-~4)3BuJVXfJA3j)mYrzoiNvkqV2caYPOHX)h+g-a$9F7ToSY(AHI@wBw;#%L4=FjM>aALI-Or3| zMne8>s%8pxo-i%#(_2|LRuoLuM!qddr_OQls+$x)C)SBjT;hh{b^Yf)y_fa%bb@}9 zRM^|E-hn0@TXZP=U(jtkZKT5>0uSLLpb2^01%~S^h;6$NgY{=Cj2~RCjFRgb8?9-0 zpay3i-3sBxp{nzhYdjq)k2pa3L5|YzIr)Z<9bX&QO$!0q22CLy7k}J^Ai-IR&{!2t z!-*L3EKJL4F)lHJm+Y%s+gM?zq~zp$U_3?S^cb!C7096kLqVnlJyTf) zuCIq;Z&wOPW^VMm-MBJ`>saMI&`-}hfh zxo5kZ%CCmp9-O>2IA?3AzOY>TMH2c1opPHJZM=qWTDz}Z*ZQ2{qa?`IXG4ZF= z6WTC`$Zzh`JcjqxgXz}(O~}}}>S;oxBeVo%ER%02GW!0RWsDwK`f-Kf{R$(``;3Fe z2NkxPTYwIuGsBzyN=~W)uf8ngu#0Vc?}sb)D(?>M)@Cb|lHCwYrS<%%#GAz_>g{Ga zXd39~B%oj|1mu;=2L)Q+RtyFYIax36=SiFHu^U+qt7qCO?cQ2F&f3s z9tY|iQ`gFUb6j-xQP5Ie<4bEB;i>H(=Lc`pq*=^;mgsI)+kh8~=mYwdzHIh;9+~~L z`?B<$#kfA#sz{HNj41Q622v2#oe$uVF0&!M0!tbr&a}2<$)4AY`+dSzQA%&`QLP8?0rMUb}cYw_|fBlMfRf8C&!-F);b~kD35nqzwlI4$bbF%_GY+`@@|{GR(dywYE%A-Rue}HsoN;{b+NN&Z&8IlU*}UMWw0BG){*DkKReu` zwd8r(yvhZ&&oGLP%JF_rH=0dpR%5|;msH!~l`$Y|v7SnpDc$60&HF!65~k{FJ-E)b z_AYeF3AKw`7Rs89L@Zv+krXArAfjK#&Q`cRJ?6OaJ;V3_YIotORqaO0QkIFQA6<%` z;FB;d9^ODQ^MqK21<#BD3Ipz%bh?B#=Y9^h%y$p0eye#oNq@IhjbD2|nJ1iaXoo+G zTxY6#6m(?aS&|4T+`63S#Ga`bN?14NwLIRIvd91ZTanTH&GhNXPQC7<(D31PXby1e zo}O7n;bi<79mqhp>P_$W=*91mx;^K#j`FX`KDg~dFK&g&wV|DCF_EoFficI~nfJvF z>uve_YFV-KyZmpJicFN{{@kOsqU894Kq6V$sQS2d^P^*>%^$ofS=M%KtV;-an00L9 zoiR!^t-nnB&)ye5)$mH`Sc;~-^@-5gGsC58}lW_B<*n*bFt8sBB(VT*} zKLpRLb>DH!5@sB7)G5?%8#iqt;wvp<udi$ra!@$`^k>}gX^)dvIwSO!>8hTl zu-hM#m`+}=70MaL%Kk+;_r(u1E{w#?LicE*Mx;f-H0S}BVYc<_ui_j}2cv-!NYu_S zqI>}ufkJ`eLDSY&2n@zB)NN0!23O(B#C<)#N$lkrXFksIHF?5JBLf#wZ(J0gQ*n|)gr+g=bM1(+1C$w`~)KsR&b|z5ri?; zx1l=y52}Ym43QqF9?sDHAz@(|Xmf)Sc|)~*?c32=!kPuWBLo!`^vt{1Xg+?_5w7m# z5w7vcIx0th-~gQj=K({mb2LMa9~>pNEVItGFGN>N6uuEu%FYW+jLJ{y!DeAMl}xau z5e3=NuwZwFf;iKctw^+Cft3Mi03{GG3X;+Jg$1ssExo;h$g#IxSTRQZnF@L^fu;yo z=`o~Ca@~2`I2ew-J9wugH>GNvGn>mSZwD_F= zR2>gEej0+GKA;Xags3(}fu4Q81a|K4k1$(ns%Vdp0= zP8+kAVVqyxZ#z7dmK()`gMvU=1LL#e&#z7x#A#f0(x6lWnV`hP#TkEHMm=@R+UFRx zy)eQ5ps6-)c@32vaoi*NS5%D^&zA$$u7SD>NC%TrKNzdYF;s(ja~5u81Xr}N@!GR@ z=CYMlg&Jd8Gsonk&A#omLez;Nn+$sccEo2lC)~shH+nxjFkmb}wOLP7lL7&;Ui&XX zvVb6%So(vMCt)%I8xrI$P?2+jWu|mP5LT@yvZahPGV64|a#!2R+ky_|XvupXOc;Zk z@@b6^j&L;r3xxzx!ee?W6_)*^J_2A}_y^)y--P?1sS=G*9aJyGW2ET<8Rd$<6oQ)+oqQ}$D9~FM3NM3&b*18 z^H7I^_6Q^^!y@T^7g^fDu4i~eGXPOh0+E;{_&&5DQR4NsUdWk~ls?2+RCp_(1ahqS zH8&RqyCGy2I>vM|RqbWI42$6Lhe8vOlt}+X<7Bw$1 zRYmS{m8kxeWjQ>(!zAbZ^PV0uL0LSE5rk&UrXCv~Pe!o<*#-+wJOTny@MZ7z z{zFvVuy7%wV~Ez4CsvkQZYCt^jG1zoxt^_w=}C&4UBJT=?{BE#=9n}F?O@qyDp|a8mEQi(2^0O%;#qePw1jbyx-KFWdFMWAqdxrp9T7@EPM@`Gk-((z4?9 zeE~-Twzl271Lzotg)w@l&=!xmE85)Wb!N}=rA@mO*8dtpQZTyAP?R$S1>)&RLvakd zI2}0o53@YzB4Dr1+&1TrY$$fbhfy*RU0AHY$&6y^p2~b;%L{XEph?dPa`8~aee#2V z9TkPtr#D}^4>T%Cxb?JhK77xTRy8u$znNEI=& zS-`k#2L^7G&Ba1li=VZw6K33qor;?eNhS~}E+)Fjkh=T$_(rk)QBt3J2d;cpd)Y0k8qJR!3?YOpnNmhH|lJFc-kU$m{FSrRS* z(AO$&PQerx2vN_X1SA-_ot@qBajDI3?!7ugY7MUQ0qjq$TFZekG<+X4_H zQTScl=I{Rgkda6G$*QV$il(`_yGu@A>^kB=H0BO^Z(1<}s2mu^TNEM9?^Z%Z*f{ zVoC+;1fa68er9|0E#>0}qV)~+PS?G;Zt-N0H>k4vZGn-@jI$+=>@`nK+GkLklW!)y zmrE_Y)fm^2{`MrC28LKNbRfC!hhQ9)wfltA%d*bavgBPO;%W6dY0}Fd&oP!1K0Yg@ z${+TyyZY+NkIRpvWT?CD7^zm{lK2OI9Bz`L25HMa7psi_nQ zuZdLv0LJ_G?{}poMPb#U<#K~Piu;c}hS`rM994eheZIU|szfW#u)3z6Zo@T}tS?`# z@~OKpteMmf?mL||{)0|6imzDLfK^|wW%o>!!^dpFe-`gj3TF;m=^d!a9O9(;Tt+o~ zI}qlpFb2-C`c2YMCb978yt=*}LN}5Eab4g<)_7Z^Y6m^9>4&w9B{CcR_(1gFG~FGD z#WUQkb3Gd73GHIfbv4maadKmrAI`?}vfcrb8p`wrTOj>8&hMXDX=zFh4RHVG$U z@9u7aQ>RYVJzZH^K<ycJ>SbU9^0R7~1BF6zk z#tp*?AUrbidhRHi0tKJpt0E#L%J>&D8OAjga3kOnSKmn-I`R6yfnp*36?b!OHt*)E z$~sbOKHcM&w;}11Ph-b7qty4ia<-*vdd;mAsi--hX~*3ONgVCYJF9A770BFODdWY( z=>18xFB(9bU`hGk9t^PWm+n4CA>7wN94&i78qPY$;R6r{2#}vx-3F}u>B#-z3r7q% z!PZsvzA;;)$~t1-D|q-dM}uqE9q|s)YF3SCLFS^vr*Z>e%lzm>%LW2OhQw<817TFt zrBL#op>90VmYX3sYTBD-Xp7AS@AYj*Zoyt+9?G5mF{`DJ^t(Od9UH1xuJQI1ufBL; z;*)k0{di^mY7X&KoWYKxZ3JDqI4=x1@AU`qzo84f2PT3*LTMx-B$WE<47#=dk+G*) z+DqwW9A5sYa%`(O%ecjm8ZaFvMK75QBV&T+Is zel}izCU_rvfgEH1D4#j~;bZf2jBO%fb0Cd+-MisKNwi?d5N;_c5*ArxMZzVSVVH)W#;3%B27m#%&~(OHcwykDP&P=SH+G16 zk0$Z1BtKl2;oOEF2U8uRK#Asa8^Wyqn2G=Ye=l94_b~H#5MTxJJ|fxM|MQYjk>*k+ z?*H|EVX*BaKc>6~YW}`-RD>Z=``!2lJ9E9OzLm(hj%_utO`=ifer65Zl|FGBu*E+RZIXrqw(e-`k6Ee*RaK%0;^>;P@Z zTK%s@<}zXvZhk_iGsFNhKC)u}>#`yx8cXRyHl-bzVIapS%_R+;zh6b)E_QVzo~Tw> z8EoINqXsQ2*vYMh#PeUyXSj5rL^y;fck0B1@VpUa0AbjphC@f54$Zgc5Sq*UC4doR z4LMTo;UY#vQPQMB=aLObEAc_V5H^0rEn9|JqW@mlhMIx3G0+U9;<$!7Oz8$5OifJX z11Y_b=#+JIxHUP4{4IAxcG601-n<$<1fk8)MixptGRK|&nb zq{NiUEwq0IetYj^~cy4 zF@i>cY&rO-s3`Q#ojbV-jZIh+JlA%Z8nD;EAOtS`6kABL+|HlZfviF_1(6JPG@;GN z3nWEtcA&XB$x}+(-}16>a^$$>{LeyZ@@e{i)^;H6%GOvir{gYRsD$2)2+eS&5??uI zWaxn6YjM}s0K6!x1(%eR%a2NFUVQk#jl!19nj&q94x0;W(5JpP#K-z~r(|16yD)N( z%WODW=APMQXQILvMF(bvLXykw1djiFz2_;3$N#+^-Q$^Ty0IfQ|A_;SN+FdZKMrLe znEktL?Wm1Id70@x%@y4nX#3{9Haqj}xAXA+9qHY|l=l8~jb;4}Elyn+E;I_zaS5xc z@9G3|v06kI6T8x0) zo1eAqZnHic&H2#}Yrt``D0H~e)!(|2ED0bRQS4TdW245I3^o!2&pQ}1GpZq?LJybR zRjB@@ye!U7coFllR!rMO2}$@SadUUJpQT2XiwV0NcoX6kC4POz!ay@SkbUEBA#rg! zxPl?8xSWx(5d$XIRNBaSot%k5=VAcfuNGzQV(3q~{Tj2hdV2mr zGftJ$Hv}hkD*6lF%L^m1ckV=yhVHg)JkU>o(z%w*D1cWQaR7r~(foM%1d&~!DA_mO zn%jd80&)K#H8o1Z_=-&%H?Bejv)`4EX&ncGsqgh<|h@q7h_ncV(-Xdf6RjKmF?3|;n; znBncnKT1FTrxGD52qG|~@xXnKHVW`@5n~-vG7@Pw1>S32aasTE1qE2~gG0xDXczj7(TVXjFh8MZLUd*tFQl2JY(# zdyiis?Jg9ib-2+(EYT6)`dftNI#Q;$FsLyi8{lDMgK=CKM%-u*lj}tIlacj(f*TL9 zB?2D@p(#Njt124jHZ`EzRprkQ4KV`?3-M`VrdtIi=L_~&Jqh^rP$m~g^EXOMGyki> z(FH+_n5>o6W`x~VyTA<_hI+6W`hWabgDr(Q#dN4m?4O?$2G(St>|LrcUDF~oBZ0)t z3PuXBf`;Ue<=CfhZTE?PI3i~gAOAi~vC)O95_w|*U;yoNCmy(C65NfmLxaounZ|a+ zP}z4TtE>O*E^TdXHeTM7g};zNrR=*X=HTke+Vy*3r-Ynbi^ZOVBRJg9Qg6~e8sq|A z1A+je$)(%^qv3j*7tg_Vv4c9E5WdLRT5|ard!mUWEt8DF{bq7Upy#~=pENuIE;~QU zs;S)>;bcpQMJE=MOF{^f4ll+>$&(U9rU!J43Z_E4V5#TW zk{m_4#890lsP3eW0b2-;w|M9=Tm}g4MyRGOG#nb)Fg4Q-Gqu7aBAx^Gh=Ru!(d&jF zd&@02G<@%dDn+uK7zEU^YP`S%PkNNH;PntD(Cq-r)dJvmV0a4^1-6IJ47UZb3@GF9a=|ACQxRTm!L38ffsTS!x5TJ19hKl^kK=seW64f=lo%D4Qn literal 61640 zcmZ_0by(F;v^{)iq`NyrknRR)5v99B8tLxtQW^wl>F$sQrIC_GM3C-|caDDV{oQ|F zA9*B>FrS&d_gZ_eHAE`Ckwr%#L4iOZ=r84@R3H#IDhLEt3mFl7Cc`br0sJHABCX}3 zYH#l1ZtV0H^4i$N!Pefz*2;v+?X8oumHj&|Rt^qUc4jI|7Z(R-K{htK|9u6ky^{r7 z@?fDo_%2TzH@rg9Gn?j}pEG!~V~wOV)SV;6nS^(Wa)Rj7&^m z38D)R5B|N%Nrss~k|}wo!dEm0Gf@0f)5Uqk5(1T#l@&V|m!!2dlfvuQ=gZ`OzrRXc zM8AoeE02sqmV~`;byJh9rKM#dy2Lkq$bUay`DLL>UmxSqgBV|0M$&^dymAIkWo!>s zvOFUMx!_v*Od|FJ2*AVhjHF`RNJdzt4bN;(`~0gCb(qtIGau%Dz4( z7yEx7BNy`T*|1csEl~*m{>KuRB%@DKf5y9~WHaBQ#|HfOTKWHZH$h(Z3H@0OnVwih z3JW*vzjY!r^8C-cOymf?;@wFPUTD7c+Oz+&2I_+Uvm8r8=KKGWk0V!`ODwpWW@jN19f58|2x23My-F_ zH>JGIh;6LA5ECCi_;7!VjgOC@sHk{%)Qic^&i*X%AsLYb=D!_{@p^m^*_o|~MkQqJ znx4k9nJs^Dd$CWQD0jBpK$HLPG1QRJda0p+HKwmhGwGxLJzSEFwzhV&!#b>w zj}I0$cA`bPkoy4y0uKu#=(ZQ(cYl*>JyTk^^!=wX5h5m~XkR*)#oF$!uF-WEI%ytQ zwB=+Tf)=wz$ywqyK`%SM^KUc)Ry|~la5zYHLxXhFyJd%)Gb@yTTPnX;XE9#wb#C1^ zFkr22z)Y}lcYWIIaZJ;Bf1!&;%n9!!`latyThGzaQLE`4dA6`;-Z_tAj%fe)V#Ud7 zV@ZXNg7}S%jr0qHCo-#xM^REV4I7Avh%K|Oef|9}=x{bsQp(iJ!ZrruQ#}k{p;Y`m z2)UMCb~Lxcl~`gfb4zlcUj=GRj@uK|F{FGLPo6xXpOV!-K0ojOtelU6@AK>I?2l>; z2@gs#VWX(1XlP`FxuJ811mSP+F=`Tp zbxZb>KFJYP0Zh~hLV?yi>t<{8&=roO3A|a`C*dLi`?*3 z9LnNeX(=fx9v=1c3=wa)N>LJ0QaFf;ipq2x0|P_v^mKhvr)sOLYBe+{RVuSYya_DE zv!&xHL?93j4i1ltJz|LXGrTrK{UJJ4^8J@L)Z7e}BKexvAbG!YuGFhZCG=1qDfj-1Z=uqhZCx3=55R z(FPq}C1a#SL|xy%tDfH+4^lQPpfjDf<@Nk@9+0nUKe|jr(5G?D|J6?UA8A+ z7#SIx{U1Abk~{q1A*=@N$mt42-~9+va&jnpdU{Zp35kf1-QC^MNVt(HC@8FV^#oma zLVk~C0-P)DAo{&=mlF|z40f_s>M(d4BYseFJX?grdit{yrO&5&S#eMUCmL)tT@F|D z@m&6HQd(MC(6}OEHwxJCv9x@KLB^k8FLb^$^ZjMcaQ+D= ztO|DW4)RciZW9(MX*4+I(hFgOHa8Z7PM=7SFDd4lf0Hmyu5d~(9~K0RM7~U{k-a@g zMz5}g1s&H)uzN?x$BZhvfq{Yj2lkFWKRTnMQAxNhAq3H(AkMqKetiN-NJt2%`tm^X zI+M4bZ`DV2yCUS=H>co)X$CuC&ofNG-C*e9286fH{tC2iCVXRHVnT6h(c4dJYZC&6 z8HDNjpFfd&_A6A>)G)#nn4n&I9Id^`c0J#n!(`EIRO=9PKge3RXgpl~!qzRssO90& zyl`tinvv_cG2n5&gAdKP+si{*PEMR?0+yZt7`TZxcY9DojVJS@t>@IM49I)K&{aG9 z0f4<*YRdmExj}>s$c;5 zC)b~Ps!gSPaiC=Q{;S!1z14?-R#;eAH6aCJ=6!Tc|2 zRtiIDo{5kprcXu;#k>gO)>fApkvpxB)J3R(VSM$H@a3k;&f|&oTxA6>gDPvP>5tmC zR~L)+r_5sB7q$xNoYLn8bU58Vezd6F$U{%5mU`pW*Ew*26mCJn8M5{L6{Uvp?U5hK9ty_}!lf+Z!1{;NXH) z4hf+Y;v0suv-AAI0u3u`W#6KcyF1&ItGrAkrnV!p9P0fUilm1*UeYtY9h=I0>Viai zF_F^GmoMcUlf59Ejz6W&4p%8bJPa*||XMK3x1dN|HTlLT5 zD3hg7x3iWR2klP~(x@rLNTg7Lw@j@nnBsm9*A`%R5CDRP)zxtUG7wQ?I+)_d_cwLM zT=p060V!ZQId^Iy^S?Vry1TpMPO$>jd1Q2yCp(qttw%BmWVJx^=(Sfxqgy`J1+0xn znws=$Ts{vX&CoJs{G<66%6?{@hJmN+PtDBDt@STKxo!<9XCCcN$jzl*sJBx6b@PNV z4y>iUqr>sfRN>US6zDT=>VcqIUt0^<-rlCsA7@wSj2?&iWxY{9si0DC9mcoXX~S{8Rel%#XrXgf6?YuPx58Rq*is(*FWI zxvPW_AqI-|o-vyUl%as?j~tx%{aJZ^h-fzpw7Fg@iz^x&^^&I13zjC@NDT^QfxS#E zbfJddFdFet5GwUrRQ7J5kO4M2s6S6}4Mx1XI@jo|8dYQ6?QLbkv%js3TzYZ_RZoNe z;o3m%t;a1tvJnjBck5~nt6zA+7@hHDnpFfP?@|yjgF4;TnoHu%rnyU^QZ&$CnOUnF zJMxo3E7!rn!F+=aAsx=k+}*X)Ya&q}{+r7~Oy0IL%H}86IREW;UE}x_QtIVOkoCe{ zv10sd=Ge(b|K~1i^)CRMuC^Gb0C;1gSpq}aK48AqR0kXVcpSKtWD|4I_EyqU287)_@?D?2zjF(r4VFvwSbnwF$U z=y_UH9`Qd<%Hwe`=i&4RLFK24I_5GND=9f*1AO@D@p_Ht>2D~txx2r2Jl|1o_rAoS z&ZSNm{#ELwWv*9EjhMunC948OvJ=acV@P#c_>2~Z6T3>;2BN1<{wB@+0dmspiR;Hs}|tIwx?~s{jOZrs%U7?0)tC@+#=|2c zpNN_jnQVW&pTF@C^Rt=2)h|^$h}p^j0emBg3-biZi=Tp;PFpr+w42mnIoXCiVmAVT znDZ7Ly(@fB`uKFXEBDCx>W91NgQq{Dl>*}YfL`_MW+US2?zfJKPkE)Z@(_Z4vQVo# zbo+Q=E#Z0KI2B5;U8Yfn>IIT>U78wy!KVzyL^N`q4>&o+qacVzP*qihQex24f#>~B zks~D~gMve!o_4m)Ps62h=0zFeQ?eI!3#FkY^}jd;c<)+K3ElJu*IEoW2BqP!@yVjC z$O-d@6B| zf?~0ye!j7N`C|;!M&qS7S*s6Lf%nB}!K3CcN=E$AUuem^-?1Ui?_;~fTz9z5F&g1| zHu->)$MUcLQYk8+FWzXfpZj@E?mu$n&D?r-#li02o>6?D_}JB$vKsiR&8TGCp431mQ+Pfp+BlCR9z`fUvQrGNN`+pT?v zev~J1vIYYsn3|_(!lgtD#sRAC^)*&W7PVc)hVWF71XhlK+(0zgmBE{pqEJ)CZG@Qe zl~-Gr8ft9z9WVM8pD_yxz@em*$!dOl5sRqKlk&(p@y*Kr2zR>CLEL}Ni++0XWOIYJ zz3>Z_9+cJmtDsVcl@HEHHZpd>ny)aK`33QdQU-Nck6E&6PcLL35?szS*xL1Tz)1m&d;ru7&L_YBAl)*3w_!W&3lYy#3&FR?T#px|t$!yuSIgNqFX}6%b7mDI zqhC*1Q_aaP5yky#pD49|ph=zdQ-wadi-QAO;0lfk|9^ls-7ihIcKKo#>rNQ$6jM=V z5oWZT9qrwKNKa?As$5Fs^fza1va^b*C#(Ff!PK%!pBqclwM>0a?Hz=k67l81C0tph zeh$+ZOVewEgLKU_V;U5OQ8909Aot|=@$p};V|2P%m(_W*#st4oq@p(n;jjtA-)W5< zMOw>QWAI2O3)TEO*;TAZjk-Y3vGp zypa4LyY{ZzX0e3sie)E=tti{^Yw(irsqt6a8oRI)_6P%dS3f6uhe>iY5r zWI8z&7zkk=Wp2&e*Y!;mhBUt4o+b}fzdfOtKGY($>$EZ`Z@n_4Q%&N^_&}(kff9y* zpn9`wayDtME%~o}%1b%fqChi+fiP!dH`36!ulA8T6x;Y=*Y$`Hp)9$9qq=XNVm?NNTRk zed+vz4?=s}bWdx5h!*Zqlg^Rx5Vq0#TP20cYt<5X${`-u_m7g-@$dAN7t2d`d_By` z%)czfp|$X@?nas1#@w@WV;c?i1PYe0ZTSYth|3ZGx2-NeM|&YL_8f#3je0$4JYqlH zbJ8O?6#A03h8>ZH+i|psgzSeiI(;v3)ZhLvGEHz+yfd)C*@K@gT$#&K{ZQ}utcjDo zKk6pm`0HbP*>rT05wm9ZQJ3|@i8%2*f52jQ^X6f2&Nb8S16 zloZU(xUku)x)rvxJ6o=)O-kIGWyPc3Z|>n7`Lk5j+R~50mwU6r$lm0EvGFN^qqECf zJ%(?(r!EYhFruGTB|@oV=*5L27H`aAXxF2}#CSF>I{Hi|_ACiG@t8mX*_veMtL&nz1Gy!=}(2Mx>i>nCMm^AF0?6 zux-**N_N^-uVZ3vE1V#gFoqy^7xO5qyQ&XcML+=wAY`Q(Qo`e>BbY?c=&1X97 zGrUz8sm?NTOcF!ycdITSaS>t=0+ShUufJfUKfdd2@922x8l(S+3rH`@a(qy`qN0lL zzL^?tWIocLqNu zv#QiKusBW5WgQ#BsCX&B6~)B*9Q{3+4Xs`jRscj?Xz@la)xvnREx**%A0g*OEjN08 z=_RwnYdINf#0Rokm~0l|32&Em**Epaq8rYiHm&uXzT!S%MEO@S-xpun(;OdCGB}(b z`Kndy1~oJh=DU^Yl%8rkam>Qsp|Ad$vz~LUwF@*X#e}VjVe!Ej=3ok-i3>2>{WA|s zqy5w^EK8MK2*(jFa!O61D*3U)KBJm6ug|5txe<%3@?g%K9W9?1_NTRN?kO)5Ed9LF zjxlfY>})61~8heUn1;#R|SP))L7rE_CGhJsq=e9lCKk zrP`pDk#U5L;aS;Ki(GW=tA$%O*o2>=Y5s=`PkeX@b%WlN#py@;M&Vfr63kE_Qfnsc zW{`#-tnWN5rq#HUk(H*5OxM%Be9HMtWyYH@KMzSKBnkfC9>7A7J+CPq@BGNzm3BHM@5ME#%DCMOWV+A!a!QMUSau0gU5~Mphll*4L6hdp2tPM%?NjE9nIv zCmQGNZ1RQ^v!fJ1Gd&@xA`aEt{$Z$^(~EJ5c-|giMwms7tLvkiGMXh$_mjB*e2{Up% zpmk);$BB;v5jXOp8@Q?LhdrcRfBPE|$P1fd??NV~v2Yt>m?p9FE{R*o|4>WK{p)j? zN&+4wj>g|_csR@w#?9=r+szTVkSvktt!xbjH|1f`y%e+mlfiWa39yzKOWP12(LnrN zxNw=LWJs91s2qq$aG*8k01Etkpi~Jm1dHuu_b-b~j#e2;v;FwNT_O9LlN*UNt)#u4 zyR6HvZ)?_{G2e=j`YHt>0DTfw<40z;*1~@aNpFe|{<{#D2gWR6GIrDPs_iS^GGRig z)mJ{HH57^;cC^;+pTm;{;~Y31N8)pa6wsHhXtIDqDJ9kH4hzF&-`d1zACEy0MX=3; zRScpZ>k0VLp;Yy;X>9TSy}x|OxRzlEA;rOcvJ&BWl7B>$=vTTYF^38fzfq z@P72DzpX4}N*zoEiYz8hwpBS79W880ZM_qAz!m+V_?XXFm(tu+jnqO7Uwz+inGe;! zm$CKYZ|^!x7f65Rt|PgOM+9aj`bO5rDhe5iC`PGuu$A1FBU_?JJp4WR0+r!!-y|Fy z*nvJooh;wI>11qSfdtzAv@;Qh5HGMM<;?J{rD4jafBs04$K^EOq ztgHkV7Z;wDFFihxM3|+^nJ(iL;(-n&-!OTM-iL6(ln4p>{8d z*O}}4ZL7MghiZ)UNr{Pxkx@`2fRJIvN$ep^G5=de?)57;G*Qu?$-jJYRMh@%Xo(9Q z&J!@Y4g~W#Y9O!5zg=mG{P^)B7&2pmaaDyL0xfZ#f}WTI=9as@w2~av6%Wy~j7XS5 zGU_O`kR?C3r3bwg(BJPbHpw2YbgcjWT_ouD?59uXK9LjrXB&+=I(umwpqqhde>Zeo zmz0!bK}?8&s;$o4Wv7JBizq|CKnW%Vq=usG3i0IQ6z^9ciPk2xA=Qid%1$yBSWO$?a@)*qjZdr0i+}$7x!SGz;_zpR9`ASJz>goqsznMf_7@sn6&OBI zetA{6!ae;?AN2!fZ1+hM(h=Ps{mwasN&&16GTmREZ%Wj91_zPA*i6FQylD2G9S?=$ zt~h6+Sdp^YiUm1gL)$6Y-iC-I^}*s;`;U`?jZc$`*suze=NG8RDJl+vVZYeYJSp;gbcl61}fK@f@!k{&;t{1 z)tcVv12GRtL*oXWXc!hn{4D-28^F(&qw4`*;CZ9Xi1zB$t8%>-99GtwVNWm<3cj`Q zIbPfI_wc=B(PAdhxv+{kpcPzmobb&O^(~#ZtJY$MD&S)*rM&_DvaTO$lQ%X%JZrUk zaF}sw*X&xac8UOzr?8IdS6{31yx?2R6oa(rr_0m0TmxqG#xaK^5x+d+O{TdW2L@zt zyN!LxD&*wky6UaIAFcO>3l9^91qZ_c;S51nchO`{J^QWLt4fb48GD$an5XVc=XK1n z{eXj)O#E^ZNMSRKYi{NzBKp;#`$3#4AU8Kxjn5VWRfx+v#)oa^$?TV;9v7~dxw&mFt63_5@rl-};r_7l! zdfBz=%+aUraEJAd)(;P>>ek>O?^fC)fy%dAP??Z=SmS*0Wm{~$Os^XWB4yrhgC+`D z)7OF5xS@m>wM#e}r1Ym^VL|s1HB=89-YmTre*OA&_a?y|6*)P1tahC_zBLLVHGSY; zr-zy)R8I#=Z}-+IRBr_tU-l80F9us(cd^LGVt^oSsc)ajYsc>YaECK&$ugF-_Gd;D zicy%p*);U5_~x@uEobYfbL0fAKYmbybwIVWkGi#HPoQd2 z#(N&m6Ei6(Da#p5Ak6M9wbYH=jV8;{L6cw5Wg7w^;(JHd)7z`Q1=QtuAZufQKgh_) zT`|O5^_90k4v?)gAB|dS`qiwaU@1x}p-Rmws)y1UkW)4?`{_GBf#dU4FD*!Ay{)FN zeX5uhQXqwlc;6qV5o@P1kcCsMPy-B8d380r?Mgc_a2ANKcKRAyqO#SKXd~*soHf{ zqg=aA#*Vuf_+!%8jbT$*bP>hGzDTU@f@7=pzI<09+w1f`s!(g%AAwF=rM$IH78!<+(=rgy0nfLP<$kZ@)?b z6^L(0BwYUSdHh+hfD`=)5r;K#y$&yYVG2c4Vj&@+=9ZSgeiLdsI(Q(*mO3M0Qb>Ux z5Y3H3lRSiV#*JrBf!OtEOm#gL7-2#;9NGww||D50OV>z;;4P@9;TfXFNtbl+d#K_lf=IJ80H zJoKy_<^uU6m4wV@d6k>KfBqU%f4LYL0BNLVy zqV*chM6e)x5k#r;5%iAD$e8{x*T|ktMG zk5ToYTh{0eYym(A+VZTFPiAs(bPSZp6<1P9Sh(m5$E2)0gNb-=ELjp>5O8BzSI&42 zkzyt=1>n@|eaXtn#id+l{u%@{BG8dp{%VpXT~ajIP_g;gr$VQ}$ka6WRVr())%T*c zV-KLPm0lkM(@h$$9m&p2S@>L)AshtAd&he}xXKMWNB}GWqR|Hu1}Nj&M*cr(agTp@ z4;pQNHXdFCJyd}S$*@au^y$o`vC=CK-b?Y1ybVU?`ps6v7GqgoFYit^hXWOD^ota8 z;_ScN69AVMoG1$~C8rrOA{tRZLIM^Y@Zu~lljB6f`#)S4Gbu*J$76Dr@30Mc&*w~gp=7GEnkfP}Z$Bu=MuU_QlLYpjGf<(3Icgq5l zR#3uxpe6`lX0cpq=ExTF$FQ*2nmWJ$`Zdb8xj90W619!%i~YrX)4@2XHK$pR6;Q0F z3TXiVAA!sO1voH>B@%Rb1}sWIV=*_^YIR}sd%Sm7$QC9>>s#9P+}f}+Kand5 z70O1kMM(Yp{JM&f7CB4@jQXSSiMY(s^78W?FAwxPkf=b38NF7BD0<8|q}Sp^Z(?f7VK#)NE^cRI1H@Df zql>*CTJ@ILM^;R8U4d|}Q(Gr;Fa&td(s}d{8gzdoTSMNbr#}HzntEK5gVF*Ies@K+-;J8+rXkCBP;pZSzDt7iUa*04w$ZJL`2A;F#?zz1OhA_QlQYO z(INn%B?;V29PgI+8^YTFT-q)*V}qxZD$}TN02?EG=^J=jZi9UJ7y#|GSHy6Ru_=RN z*<|_Jbv(MJR`iN5iSh6XytMF9LfLtF5rJc?q=XTeqzY6@taHm68hAP%Zfur1eRa=$ ziTNF<;>ZN@P(+Wc<|+Uz=D!_IArkgr2NWT6Xh;r-?*OxR>K_+Wn3Ao?w~ROa3BP5(+z?ijLv}*q#i|lMc5-eS&w9@9d`7dnuC90QN8OBDTU2y(FYtSW zg4jl1Sy?$cJ$-(3`%>;D;|xR!7~()$0V>wQ1n~rh7a%L|OqZx;=mV0h(*3r|7}%%g zJG`5AJOCMGH|~L#l9n!s`)bD75Z)jYOG3@cigCEIIi`1iv9AkkF;L$Ov~Iz!AW&Ie zV(_aqg_l|2gWeReGW(6gd1+9ot6mgOt8&^cd;q9eB?R9=&p`TkcZxZdB@hhs(_mww z2q~JSHh0Y8H@+jdDu5jxUHgE9Wzg*4Oh*F-B8lM?O0gLWB1CFxYWfs`b}C?PD$SYH zH1rJx94~l$3u=iuy1X0&MH9-t6*9P=Feqk+04rZ2tt=pLNDlmD-0zmOHZneeqMUEH z*!Wqaf&_SlumOnycCz1#Ice4W%zI6+6tQK-Cl`}~%jhh(7S?ulu^`Y(<3LRy6}vyf z1s3JC?QP^h@r36B#=zeMVL3TD3tv8divWHaMPMOob=pKh z#H2t2H7G4Totl{$4WzXUSnnw_TcR9QqR$vn2GOn!~6oz-L(0^F+#S zy*4xy;pfH%PfC1ze0X6YJtUwXX)NNRr;GiNjFz5dYqcL*yv8{*4#aLLoLI}p8NuQF z{+%Oh3sxHSV=-^oGY4we16~*P!(@5-BSuRdkgFP11{H!~in=Voh4|}QDNfOb^~h>p z%E7@Q@G_nHTi@Nvu(72{gfv4@u>B`b+~6LZubc_YH~c#Ul$2G+7KHftp&+<;<{Uv` ziM{;Fj)sGSV`OX$vwgkwlBo%pOEfC=BDc3KM?MM>5)cr~fAJSHAJ2{j{Cl&dZJ_q; zFeo)Yrw*Qi%IZ|fpCcFDZ!*8QXd`TIZ5=f~uca=O(Wu9Q-rq95hp_zP`&1{$rlLk& zjhCCklQLtC_$bnyZJC>Z)_$J#w#*Ps@fB{<^Sdlbcz!hasUZRk%x`Y}yOsvZ6WmXf z!}MZ4)ysitL-%crR*3(NeJwM3!sdgv<#X_7bqNRH<~8fDDg`_*o%q~q!*`p?r7%Ol z&sXzym;i*JYy$-9TLTVQL{NmoffMt0t2wA_X`FAPb~@zf^7?nc$)T8;n5g`+0h|vw z#&o)tmh|kZj21FZb!0Bes69T^3tU7x+LZ>`edBj5&&0#&l>)+5tRO1V0r{8+|sDy26zWZl^qM6tV2fXe&x~+6Sd(U z%S%gYg8;lr)k^Yi=>EL=fr{wd38sGuL26Y79Yb@#(MN0oD4~810P(n(7&K7c5w6aT zN)^G093448?UKPrm}AL4Re+!zU0e(tZwv-1=EKgEsy}!0kN!3`h9M&(Bi*?I`dM;8 zm!XDcJt{1twXQ%=CMuccr_V%08vek(vG0sH&XmbBwiu0kE?tWzEbkL6l1s>b+OKi; zMTjszySyvIJ=~G{hPsC{j|YhoV#F}vQwaeLNoZgo3~=ccxMlU582=hdjEIXHxWBy& zGm0*U*<5=?Zz1Yo960tP(7;yiD^E_bZ8W73y^!UwQj$8Iqr6$)+u>Y)x= z;4%tNO2V5iRYwJdY!G~?ZeyC2m37t#M<8m4zISktZ8O=>h(Rfe28{4fCJ&{)a&pM! z6&1((O{+A|pQ8e+lxFhi?&{bE>Ug#5)asSFisIQ#Ve}4vFFW#ZM0eS=(aiQhIP>Uk z_=!m$c31xpMx}&zGtm#~+FY@*FQVE7w=q#sJ%FWgIR94Q7ZTb4#{nEW+Y`BPd;9ww z7Gq>XW}LCW{bpsvA$=dKE+rdB)(vcmD4@fFxxAp&F$peZ76+ggOu{|-*LNx*PH zD!;y-+Xw8NHEB9t3IIf4J}S8RB?dwh7-`jY+uIyBWWWZzV(?`x1*YWQxw)pHIbenb ztuvzQ?rbRVodIs(xI4?zu($JgyZU(cV7v~Rm}-Ck0XfQ5Gf zzi~LY6!3Z0A8N`6IIo(iL3krb_CaSgD?pJ;t+au{4=8#` zQY3O+4!wogHb!900Wa1>3cr5XTNYN09SiLaI-0%j#h3t%6VlToK|%r-YioVm3&2T& zxHvdo0K2vWur$-mQR759oD}?4%o7n7KBMqi`+ia0|3n-N_1-PFh5|S8rf2r3c|M5S z{_Wg%E<4jtz$F6a6B_F<do4_E`c%W=v`0*nb^y#I0d(w$%X%T=l*a)vSJ8sAm`y|xnPQzjO zWZ0*7C<;K~Tm?$ef!#}jm2DwtCCEo$+`uq{$0iJPk~G}h^-?>B0Qs|p)KhqAX=%^) z7YU&z^u(Krii*h=XNxt}>XYsL=gf=kTNBo7a=Sw%n<;ot>!eU?fw3^@3Gxz|Cv@L9j@_?F#Mq}|r{wf^mfQGzvCslwP~}Bzdxy7kM{ECGQ^8*V zGd^%N1652+?Bk3T=$}B2?3Rn_9~~Wa#fv>efaW-z^L_AH&wtTl4I*`&}^zHf0m>vQ#u*ZRpp|X*nxLHq6 zkKKCu*~b}KIpu$oWQh%@7A-L1Fdxf`?CR<=nX|C6iUdOk)#TT$%-5@r4@ik}A-D{0 z@Y-0x62SIA&sXqIW~J0%(a*^`I`IjJZ3|nHJb8iZDR1xMZx!(@_oH<)%i!M{D_|Yy z_I0IewF3S2s;FUMVOov0#L!+15D9 zKJ?-Qo-}Bwp@0qc9=|0HM2E@2QVZY$6IQD(k;X)1B3^hPC*2e0z|DyaqlIZJ%OACc zW4D@k%9D)Eo`>X>%O|o*a#=ebhn1`zH`{1GH&C1QD>4XX#l3|BKAP&p1O=wnkm?A{ zN}@iu=YMkE_CPNnKn(6t^a5;*(v$7*I%fw(3f#BYskh%$zNq_kb}M51DO|sr?hj|V zt!L%`&N-)yh!FYSEp-7Xc7Dr0eksU`s$iqbOw5DIVrP?TN$E<@%?-Utq&#d^iT;*_ z%jKbl(wy%)x9>)SNa$jDKrEc{_czy`_3CwJOJO3JI6K{@^`C_j2X5wekh5}Fe%~>> zo;Z!3Gi*}-H<>}!Z^l~NV@<%=7!;3QP}{);g4}agiCio&{}cyMSugLdL~JJZ>P^So zD=-M$(GX3((M~CXit#1fU`PqQBn0|_bND^c0G ze^6m@N2=CRLKU62CD7q6LCl?iysR;47s!Hl^T4maZh5)_|7A*;rspk;dTgLfia3vH zKz|TSW_Xy7dwcc<>aYj3hJijZs?h0F+Y6Q&E#|YG8B}20?*Zn12Qa9GM?lz2e;(3r zk_*~}tDUl{i4s+Yj;9H9bZmdEEd?sL(f!Czp1d$KqXU8h=!N(8_LTBv(8=O_BS;+| zsbx+)7siLIMUFdc7&i!&wsaXHtRqz|n{ZnoVqE7j|@$G7pi)bclJ$$m4}>7SQ-$j5tDjlk&4<9>a4 z5XnW9v>F@2>ocQPMk4d(>RSzhHQl1Iaq1>}9Y=pu8LF|dO;M^hb5wabGk7pC)5T2q zY6iw9;ChHuED6uE?IBqZc?I6SXS}erl{4w`_sqH%Vm+XUO2{XGDQ;>iVS9V~beuhU zdxUQ;9}GK|lQv{`W6Sli{Y%i;MXZsj(uFAfIA(ZnU|HF7J$?O|xNr+Plb^A05D2X( zsn6Kp3l`|{IU`;m2K!oRWzYgmSm zh)>#!?UKXVFkw0T23~0C5}VEq7^ewU5Na`Z1@-qltSSa7bArrMc+HFFj9&A`@6Pn- zICQ~Wouhw4x4~4?gwk}XeAU>>J}!BVAf;_B7%%6&@gJyrQ|63S^@~blhMQX&tyc~j?8unSZdF($qmh~j5QeqKw^`7?{9Y~e3unOljAcd? z>Rx5YG1@)Iv|Oxx`di@|1r`QVf5E$ZWdNSk|DMzeq7;t0387HpI~+_8BcLGKTflc6 zE$ij`DmLeN3@;gTLH2}e_nQEE7?$t9JDS%L<^1?G+8S}R%tJ|J4)Zxp4f+?q4fiZL z(an8KJI<6f?^HxTcMuM@tU2SA8tr=Yk#jecMw)9h$QOz^wZPgm=>?7#rV`!RImeJq zA?^YBX7<9VC&Co2djH2usS})&^8A)$zK5*^gzTc6;>_#9u-{CBM}hd*NY&lu@-3Mv zvQdgpc$2)+&WQpw$48`V)oK~uo7{zq`cyMxyKDA!CW zN1t4m^mXrhLE4!hOo#{VH*(-qc&`=`TIDWYKB2GSDk1k^2@irC`MPH~>C%(pksl>b zZL_>BXD$3Yh9G3r?_^7$Pk~kC2w}ZI=jf}*+(}bl9HjKS9p1#FK=^PeDG)#U z!nDjfO~Zx?Z9b>ibRVrVpeYae7QNA?cTlOWr@@m&}EcK&f8Uf_|N8MPK7Yxn_ zlv%eZE??##rtB#zRi6+F&v-+h(?+%IMqwv3rz?~Cgv!um~qXWNmI)F$xENZ@F zUZa&}uq&i>EM~vDgL@8X+Av7+GK}u+o*+Y7jOlKP`v83*r@G;#i*3|JqpSL%m>Ip% zecOkAYd#J}^6!LX{n>Dr98PkiBNBq4gi#F^{*wfsufgihQ#&5nc;Z{Omc`;22(SY0H zjp|2J@LW1JRCm(Y5%>&n5Z3;?@Bs~;$^K5`+(oY=exl*oY^3nffl_+7$pT|_a0w=w zC6ECt9Y3ec$Nkov$e@BjK|qG+@g8T|Rt;bOVUBaWl{le{LL={s~yl49|5FkuCRiCvrA;0Jl0nTm1}*MQ1R!u6R+smbrGf+Jv=37+LfD z0f|@WawA%exj#pe&*X9mj!5{B6wLGmG>-!HVC25qvnU{cjs17U99_X9%=(aP^S$0% zKbPGwi?1&{Xm8SleyLj{Klu9Ni)rkql-X)u929{`X%e$$2DbqFM#QP7^2I~-utz$M3X|`2a@M8wC+bf` zd$ZW*BV{EkU+|@k+=u96T{+Q$RkyO&w_e_YEABOR`&eiD>XhNMm8L)I&aJzVP?^sh zZDYS=j=jJP|81Sm;+>KOpKo^b{jSQn0sG`cWPm3#Hf@5xyc4)Lfs|(^;Ku*_nFCEo z652mw6}p+BLgCMv(=js(d&`nWxD*^Tzstq&?eadH!~9CQWCXD^XD!>2^9M?WmK?$W zN*{l?In$girp)&lk)B_2`W9F;kJM8I=Q|H%)A)~|Gnze=W93EI`GGF7=ex1}9`W`@ zJ*tL!6j#D%gqO?R2?D;x@A5mJZat(kq|IBiDlo^^98Yq3@H(>{i8>?dB;DpasdC;d zL}{+NSNi|6`H;wovV0p$S%tGfYD3&Um{2n&_3UA8H zZ?8*=^{f9np8w13KZLYY2qM)aPH5HbE8`BFcUd2W=x9lt4GzRp@@&~WQc6YAwnS!_ zi*syzLJu%v)eq_AiHq)=;A9U)`o<*}jn5BPsS|TTI6BJ!CN(JNRaYEyyEt2xa$F6` zjrLWB4o+11<4)V?qoRbu%4%c}T$$H(uRB#=e|7Q^DY3{6!koZkmiYFcoe#ahFeU(x zn-c;d@WCzrEJnhM_`B59FOQwsuY+$c@1mA&tHW9+BpWxgf1q9mZgRd)(luuNxv?-E zs$FMkSbpLh$MGLTsYo&VnPEiKVEr}|yWl5KgjPD0eXJCY9&zE2VI_`eKJpmZz9V%T zyCJ-1@CgOx+FWb9)VyVe53~~|$`F-w#_p-bvfBK=zn}x0X26R@Bn_cJ1dZui1ao29 znHq+d_BBh70SiBOYlDo58nChKWDx0ah%YF80=E34x}vXzJDAlI=|Yv}0*^?!RmM%r;Lt+Bw-F&dr^s+Q#v22-5(`(PbCUmDj`Dp0 zvGpNp>-cSaaJBIwPai{(@xKCprOZjQzQOESID3P6)kLlYC3F7pC$8GW0)k zJV`|(TVyYqiAoCh-DlYUYi}R%tDTsx^3+B3oc5g9R!q}M2yN*(GuI0_kFXoJ?lFmB z;bG~)0;68TIfq9_b`m~^-f#49>w24}KaLN4InJ-2`lQ1>%#j%8=ctla+&W#3_-2G76h8H?D3#+0`s%`%(v6>y*F&~CPx~xEudDi8_|T=*F<8A zE6b*YDF)~{+`mWn&CV~^{a0^5#@{NTSS znB;(8h|8(huap2x!ua@d9_+0C{#4ZkX;&O(C=qZo1_T6v0JM;S0zV8o=2=rmyO;i+ zM+s8wDqn}LX3$t;vQOy7eKGG7?IdsZD=^Ll@sHWpirac7`_^N)y#z&B>=C+w(o(4En1XN;SABp^&~HncIF!M;e3R(?$&S0OaJ&33Ge1*~g!Cy8Qh z{_3uuMWhf6WB~SoYWPxM;n%)ZcCAdE;Z{Pn1w3;xDlZ(u_LZXIlTVBI^tB7ogon!x zt^q4w>2J~a7UN4xTXhz~9Wt^v>K=hKroA+^_jza#KZDEf)%%b|tztL7&8d31`s$g6 zh0lUwN|k?5M&VfmhhH)qmk5=RM+~~D`tAwicw{C+nF?`C+B4FtISG*hY-|`%(F-gs zy#ka@Wlg4=#$V;q0t@@;&JB_DFJZ+kYPoy$7r&d|$lA)YU3e?OVNE$k>q#EaaEPPt zamcu9$Z!&q7v`RoFFsZnD=M2b}%< zmaA80hK4k80b~3%S+8sTcnv-FI^vz+wRtO6-S79KId#^F#c|qKmN(kB^iJ1tLH?%8 z&`h>Z*!ojLPs@kaDE61zh>3-!1iz7A?6>7~7HJkDhVdc!=W!)tOg^UC?_RtP8NXIN zm%gm=O_@WAB_;I3;fL3oEM$@o&O*9y*4xZ|wLk8mQKnzb?qZ?(mGnR$Uw7M1kX2}Y z$bGfIe9maj;o1A!pI06deaaO{O&vZb;y0=xg>GcG_EdjA2_PMZBj2IV^6HKMkJUP; z^uChx;OFI)jw>rMtR_b4nNau}02?8Oshfj;UqSX)D13s`7Wh`oxYUx;5`a}hj>N`k zN8jx__62-_emh*-WbKX*Z-o+sm|P!*T6bFf3a}IWpd{nFI6z29OCMYF#PcTi+45Js z7X}=PTAYcV+q{IzmChWkI4Z0-3*BxFK=FR7TdGB7EqeAUnD0e$c{ z8Ji+WDIscIOW(nI)k33XP&VBu+G}kNppR%#34B=JnYlLLzIivgWlr~)?D9=C6sH%V ze}F6Mil)54cq2_r4Z4)tW>=%9j9a;5WF7S|{@!UX$Met31oI#XNqBlUszCu~N3SF*9TivHz$i zhJT=3%E?P)Zow1!u^s>Mn_->8d7F=4(2pPWiE8-t3lK7<`a~5!KUey7jJZoUjd6pT zF!1SXGE~b%FV%FoaL0=SSM`zeh9%H^-hf7HG#bA{8Q%bos(={HDQ)t_Q~WD@)JsBy z7|Y|s=1y-teK#L3dOq{eMYd`2NatY~9^-T#!*iZQ&jT@9>6a!mPaOq3 zJxTZ}@LmhwD*SNUo=@<>n2Ou_j|MCnD;DP z_jH-PaM3+Kx_r$)xG?uzd-p|DJp7=c4s*3SjskYezE zK{{7Z+#Xz&{*KPy^mCF4#P>l6$~&46#dfU!{yZtYMd<6vMnU$ctJz}T7dOa#Uffnw z3r!kcei$n!C%3u1-S+Nw^5#yz%vwWZ=36BBRLN-(AVdr~04iY>655DZJpnKUX|5vZ zP|c5Lsj_d)5&=@B@R7e#upPFr*zeu^7W9t_UD-1~7IkZ!_Nd6ozs)Xv3}N5nBBzM{ z^ThhwyW4`m%&L)0#eJfeRIa6y%t&?ctE|e$iJ*_J5&HIia|5(17O5mfg?bjdZ_I7J zSKll#F1OMYf9GZx4jHt_v=J)kDO%bkEc38)GKJ{pZ*Kb%mc2q>9neToZSPo02| zM7yPfpy5BnP&a$+=3(L~@Av&}r$#L1-1>F?a%+7@N5@_8*m=Abm73#Q6PjLF>izqb@T_-EYmHRxPf_ z$I*Nv_y%%S*{^8s49ssdGkdka|6qS^UaaZo)e+;@MEggN3g-3k@j%Yo_4$*}#p8;C zvwj=|y1b@6 zY_LGqB+AX^9);uSses425z?L?wc!E3qFYP+ZAW`+=8mOJCQwD28E^Igsf}eM@e{>k zxncp^L$k3uo4(?$?I}rm;{dYurF~rjX;e#sCCb|T%u9T!c{~Jz??HQ83nu6uB=DqB z0FhXLnHcmrY=BNFUt?QTb~hpRt2BJ3rluxvzdMoKA*+Uy1ff6he?#})$ii} z8#q<2@WN@uUD*8(7ioYDFlIdlx;p^#r#JUxk$MDOE(S zPYJ7(6g}{zUhA*sfBwXSOwiNYo4P;-XiPD$ZFYMNtYd11)??A92=u;0{|a+I9Lw=( zauR=M+lFW`Frt4-Oj~9bPQT}pRnOG^y!qAbN8Mur2saUcYC^bpCz3k}Kr-;&i0$C! z!*(=>Cmj|D#ml2x(p%*orloe&hoSlU-x1vgECwaC(8w4Wi2;Zn`|fvV^)e7-mYsx= z9Zb)^T>}>|cXxLK9A@C?;Lz^~#v+LNAro#+O7$FF=A5&^iv|n+g&FSKJ7PT1gV%ms z9hO8#(oeaOz~3LL#}c9d8aw%5%zWI}E`p%r7&Oqwpm|Ra#5-l9o)a1 zDQ{7J)W)kf{;-cjX2Op2j>43po6gs+V=Yw{olgn8w{Jx8Vqn`dz8gBZxW>UJ2W-^b z+?>nag>>qf@remG5H8^m)2lNqyVOF00$y0^Kw6ICVxp_ClQ(#7q2EoDl7lr+RVO2_ zGMEUsDLA(XQuzXUZ$pC*r;$XKI;Ye65AoRL`&TcB(Gx>+9uKg85FfNa#)LAnwvK>h zCd*E4{-eejaqn6~{F=a=?HAyS00iCuQXDXzYagE9d!ZNQ5hS>|6CXT15ih6g(%r>S zn^LIPQm;ehJ6X?SAY4rBDwMHWSMo{53#j_F?dviC2>co=zrlA!=>rg~Egcjzv8EGLf_ z43_|dJY2epV3+_kvXJ5;vLQqdbL#~!%Le za4AnOu}qJB@6D1$-2OLl0z!NS()h2{UTla|0yd-w(5{x95xf@>`>{Ys!Sa>R-@kt^ zVDS-G%6pe{bVXLAc|bR8bu`Sc+Sz{oQjCcR?w7h@zM-l&Moqrr(>vh9r*iY~)yKi< zX(oVLG$qrMlER>gKMxk4xC8_}6>$)v*)CneT3T9?_$kD~Uad(a%ge`C{_q<|l_k)) za!K6U1C2gY(O;41n0c^`QF^7eriK~V1t9e?P-5cZ89?~pl91>oi3glXH65=@B6f&; z_q^|b8Klb1FA92|=xuEjWYlSq`(${yc(-I#3yxNlHW-;Oh(&4aV(nP)*MM95)crNZ zMnFuA7N{q!MpN+A`|xP8fZE2W!IR9m&P@&;v)0<>CQ4FLRG56maGz18B?UfKLN6B>nQ^TezQ- zO-2K)?%$uCX$=8=i2UpE?iB4^}DZ6o|B9+1)Mm=wwt%tMqwGH77y+h9zlaZy=XAD z?Z;(Q41**!patQvu|&u_1@FNbV6kc$e>D51zjzT29r=0CCVhltWB6Ul{pYGVp5U-o zpxqNN>!n~u=zs3avs#t^L@>a=v;u1qUT&jyfj3erw({A*ehP`{{SKyE>u3I4gQO>m1`(*SXBVc3i#G6 ziRX|%QTR=h@$T+hQy1_iYi>;QVA zS-OVD(R zQx7gHmn1UFZ4*1|JCa^GJ5YVuwZ#3B#S-n{mHG8$gZPxn+iD;#G68NK2e@qT`Bg93 zIh?$lFJ^L&q0&74_W zO5=}>W7ov?{Mr9tKMuM3vD7oA>_Wy*(QROi1ADG?#`*zxjs_}&HektjQqW6!0HhzS_a;En zK?NcRSs!d~jkOPPMfHI^IO~?3rfjp5C$4d%vTj&EeD@n}xR6kjM4 zCrrej#PoqkCJ#XT=CH2mqD1c6!n1693lyiu5fh_8&XmRXtd}SSu#bhS3$2Jft!D%J z*LtK%p*S-;8w84>pG8d&20*^T0PeE3hBe-vo-0MMnFEjE$eC7_l||KgY?OS6PRz-< zpLTd>J?)Sr;M^VkJb8+M0b4||VT@_^Ckg3OXC}O79ujLb5jd|TuBtp4_<~{S?JYsf zAQ5Wb9uD7XBb|$dD%IqjS*lC`BglZg{GTbnK3b87Gsw-rR6zj~u|);muxg%&ZYiC; zEL$J^!oG{2vj-fKMR(MaQv!cR0iK?G-#ktBFKqG>+U43SztnekVpxyIU^#V`II)(x zb!3>^8i6)J=^p-gR{P31L(MkZ^Up5#@5n$(1bG7Ni5!D{^9K)fX6~3~TYNIX$c)#$ z-(^AjZb&&84yZ`bEdichJunJR$q1N#?HU!Z;FrG2!1JPN2jj^t@L!fU?Rrq59bo6O z)B|x5L?PjNyh=Jc)NoF0Z8V<;_YAM4@gs@f2m9}unGQv!&5Ypi2Gz!gm?x|yGwa{x z1@`Y?Bo`(t<57#13Fl$c1<~*l6|@I$0CG)-N$(2z5(I1Wu`+Yc&&n@B&lo4oTs#9J zL&-Ecq7sdtcXwV|t2i|-e*he*@a6O?#4b_#%_Sf^KZA#5vkF?IX1;=pi%ZG;)z@mj zJ>kXgG5Vrpf%!+w_lDgo>y~C`iG@bhq+%u_H)D=TKeM8tUhGBbmXeK9i=f{f!*4L> z*$l3F%Te>Ifu;^4Fe{7gji_TBV9J!G=0re=1N)`T3VPZI_tvjWr{^Q=aLrLwfy&YV zNQTJ0%pQY}cJ;J>;f{B7+t?T_WYnF25W1O&CV!Ft62#;*+rD5i+iPGqQt;MU-^xVi9|B6Y;DFqu%ks|enf`PM9_J*IWmQkhT@0YMYpSkat}yO@~R z%yN1_C%AG)8SCBwXTyW_`VBXO%Ul!xVhj%aCR{Ee0FV(%6SVk`H4!5sSOnT@EZz8E z09ot0+%`FB9Q}3N`C*al@6rW>#FI~vb_91T{8v^FE{AK$L_E^gY3Vt!)4MPLwBr^GjFHAIOX z_d3qoShzo3rVGw+GAR4xt%0K_;++ct_ho**TlNA-q(4aS6i&If)=gNu=J>zJ`Bwwk zIXQF%(e_1%Il2=MM6bA9rchb^F2D3B=))fqy-6FD{Jn}AM9j9-d%>vA4e#N@Lu+Qy z_nMjBbXWz|nt@leWO5VBXISlt94DIcSnadF{nV;M&OnH8v+&&^BkQj&0_+@aN1<>P z)#%(&1w;4Kzx_XzoFurDf<%%H9Jk@75BCPx*&v(>0smn70!ef2U-u7kJ{FYdPkYiD zj3=h6eaFwC^xu-MSvn?Rz41I@JBUc1y2S#`*Akn$kC4|mvCPe~<;=&~`q!I`KiqtHWv&w~jc{BV*OgbLz+yhq{Se@T90lGk>~m48c8tn+ zH%bWgU8LKD$ejd!N&6R#=#-v*Q^-_lPfncoO!Xxszh9s;DnOXPEChyESe`B(zO>Xh zJa#y|GD1`jbSQljqHf|*Cl0iWH2lBb;pZE{?25k|1x@j>+QYS4J4)WJtt_dNxQ8DZ z2d3V8Cq-8JJibL{k=-iB-Agj2=EEn=k(Rws1(n2xyUO#-2j5A1A~ZLF4!TfDbOpf6 z?JzSx)jSvb7ZX12`OFNuxXGzT^ce@fKfygl}$J!5+A{x({1Fo{r_ z(D?Y5wrXt>79;y~wu1weA5sJ!?D4nCMnhMa9NG(I{&}+b&K7eLdhsP#RiK101fO+; zZ{8+sJxh?J)oDy+^geKIeXKHmP3q2A6rop&&Zypnnyj=%(wYm^SjinhM)|Vp-g;^G z_rn+>8e6bq`J&VB!M<|I{M%hVY@^eN>~y6U!LV$iWPO5~Krek;u6=Dt#DjnM>{1lQ z7PJ3#i}xlr+EaJbarTP+L!Xyj&@1XsZwkM!Ae-4Mc^4N0J308zT&YrzSxbi0g=`ot zKuvo+MrkGMe=Pd~!CB^jZ@=qzrd$&)+Dl8)GNA#6u@Qo$3s(cIDR?wzlFKMIH2Z_) zTE8`?gnm(w&#-iyk}vod_!PBc4zOxwiurHx>zP&T za!jrK*rw4YCl5ISIm9gb=aywpdDvzV)MZ;OY~B?QJ16&$D^R=gR+vCLb|NEfk)(`z zsJ9}NlZzpMa3b8JO1{-D!6RMYY?dd2xQs@9Q;wU%uej^&HRgYmN3C#0LCEu`qr-9K zs1tohRw*?j7L8AW2UAK4_x%X9_!XNKTbA{oi z6|)K4eR7i-r-S<_6h=$y0Jf9}4g3=@#1#6JnAwQbfnA@x@P*K^X@hegs3^Bx_o;+-*>T3_M?@qfAsczjGy*!Le@!aHC^Vt zzWuAM+gd@&?_SSZvQfMgC@1D$ z{BQI}WpB~N%U4moT#QH-yv6*??^AUORx|gTi951X=JV)lYPUYOd`ZCZSv#wE0OpIU!2FpCO%jFZP;c(Tn&&i>G# zD#L2Q^UZ;1pVG-2$IVu2x~#A-3cDVY#oC)>7brt+8oyv&Q51WTmXhMQ8FcpvQAN2v zeeuy96|YW|8SV9kUBCJJsQ;jYt2syB#L~$xt!qaco@mq(qy1qObj8u+jSzi@kQw^bOPy&Cf30v3P7G&RJ#*pA9GHsbo3ZzWL|NV)tSI}`yq)C?M?c5_Go`kG6I$GdTH%Yy*i#GJV=-~NsHRSn51e?i; zl4YvY3l<1xa+f162`m^;j+ufZUAtYs<+`YyMuoF>QN0vS-0&~_24a+z>T57M50?c% z)h$SR4yi;7AGlzKyzCDVPjByF+G}nvJ2nJl0);A3Xb#33C9P;UE^yBy=h1Y!`~Yjp z`p4&L2SYiB%Ib8Id;Vw9y%imymqB%Ayy-(5>UeptCEoQYxP924Tf5I^(N3^iUd1aH zlYn=Hg)D;+#3U=Cgb=MW<@z4pW1RFH5Jlo8mKe z%$G8~@^w-MmJGa30|T~VtNLem3xDc>G=6+GV(jX?DQz;Hc}~CE&?EgCtj&WtlUjtj z)eQds{=$HZg92Njt)9WTPp|KvQrn~9=~ht|tB8=WtOPEhYbJJ`u1Y=;hh=1*w!_Vp z3vTwWwn^4gwiTD<_yist?h9PyF+guk*)MolOu#~gcZqd~=|4iw<#y{=7h6q9$-BIH zJ4EnG@B`%-DmYcBJX-peYqMVHn+jJPQb~Qt&~cDzJj5>SS`TNx6(t@JuQcJ0wGop8 zrD)szg5Q4R@+ukwjKb2%OVH6LnR?v0gALvF$!R zDf_>ujzP-Xqc>R8_JqAvO*%!Stua2l(=+XTW&9H2yg>RfizT5VBl98^oKO$K-iFHc* zk)Zx6T4ZC3lJ#Q>O`ZFfv4@oFll~d#Mq&@@rz^|S6YcnO2BcLo^^@<*x2l-&>g)X6k6-u28*bdHt0-1gU_hB}(S(tzJl89PToj&COv z=S<@Q$B;=C%q$cz+tc37*ElxlyXqjd6Y;@YYuOTzx?gzUwk!ed{<8SRg^z6wkh zii#D*uZcgixVJT$(q8j;PH;Tn8)b9JMM4VKEDI>z0ZsG^>%*lH@R|5`Ibe4b6sLa6 z7SE-3^*%?N5TlLu%h(nQWBQl!pQ<|TH{O&93UvH=Yge$-)y~AC@hse{>S(^Zq+YCS zo3}=a|G^`sFk+14pDS^~(Vqp;=VZT?s$7y|gSk$B-|@2u5>wt@cgnoGt@!<(C@eOv zGDe!L7b`0O|NM&o_6Dw8O0^!rRV|b~rs=`k-~LpKT29Zju8ER9x+~u-=OAe1&h$!; zc5OFpn^i{zs`T28xlmzJx%rQ-``jMUt2aE#TV{6NaWR2(uu7_=JGO_sAUHndNK!QD z(lo7W8be^B1`5S4g3=k!^funmgfzDbq16l>&!nejxhSc5PEh zT7!^uO9GSps}!>r_A3i6Yg~M_yjA2TC|`Zt?x{gu^ErKgF;T#!*TbB_Ff1%=_HbtzN&7(?m95DI_h>bT-luKxsGjenyq9kPCazu2 zuYa+iyf3Bqu*Ampy3(HXf;Q%dUa7!Q67<3Mx)>)X$JJ#Xr(%l_jpsAQsN5JNLmmYl zR`M@Aw#CGrG>&&>oHTQ^iF@5oEZfStm1K#*TOi5YU+l936JpR!O-(Veu@U(=TqZ%c zjI`nNZVG3AaM>&%n0>U4EfOuA%pRJ^`#1J!al<}_DsvlJ3Y+t&Om>B05kkWQ|y?SQhQGCv2 zjx2MWjVmRV^Va))c@FErSXYSIv|nJMNO`RE7B?^$lQFP%oQD>DhlGTyO5)PAFE06% z!bBJ`{}VB!GY1_2NBtLpu^&G?h^&YUDdvj}Mo!P@!9}r0T%`Xa3jW{Zw?&nI&E}Bh z{&bon0~#6{WO_kbS{f=)Xx7q&ox!Sgunf)i^?pc&hU?~7I0}mBPj&*P+ko_z&o>i* z^}NgY9nHw(Ed5;3`jX{rbe87}`gi3qWTU7EgS(-P8D1r>U~Pl6&pT zSS5-vp3%}xnFQ*+-d|C)?6DpD;Z`$VnI9U8i8!fcWQ^aY_?8WF{8vKOakfJd2~okw zjrU0!qypRx;Duq<8jRI}xRo4@z)S^axaFe)V_PuzJNbr!<3-~`1nbXjdw(_J`=XJo zmGreH#Y;A7&(64-wkx?d!@A{9{)as9!@ z(FF$(XHu$~y9j`bIT%cbz(uGTXja)S zhXel`;1yhW0 zILNX0_#DyF@wy4^wWVBt&iqtmb9?a?GM=ZHFutoD>@7e)4&&%Tpdu{CNeM*Cy+VJ) zGzaFDy;b}PUe*J4sAnlDgfRZfsg@E4bghGp@a-3U&Y;LsP-<*!yaml)qx(?O7-;Zv zMeLiPp$0RCJP$TmXv5{QIcX_I`V``s#)I1z6F*&#*;|P!XEX+n8+KLkkN8|4@h`kz z(EJ#APkpov%Q`+aSb=p=PZV=d)p$tpa+`vj938;a z;_g2%1*j9I?V%Asu@88Za`Sd~d9R0Ri>B$FRG=U4fAQB{F-5 z8Fmx&Batp*flhH0OdQMthbj0m9iaDac~BvUn8SfDqwXde3MAD9r5Nbws=w2=!5EQ9JJu=8A2@2#m3LD$6_>RkQuztM z@cEoKY;pgCSsXB?6Ce!Xy7vwV(q1NPPgRDfN1iBTYOX;QEMc2xc{&bELgwMbsO|pS zY_$uMXF)Mvx|Gx6ZguswNiGLWHXR;?X9<2|57QPAYggc179{v7@vG|kuS~E)|N8F$ zHPb#oCR)G`A^|4-!A_n9?}HX-3~o0(04F`j67DrZBlT8A5A2if{JCFcuTEvp?q6+g zfChhKNi^sBooCQ^HJHrhA7{mQnK?MurhW@YRStO0+TzB@O;cEDNz6 zY?dOyc%*6`8TKk7(zkQ*pZ8ZmBXYO|TRAcrYQf7@LQWTOs;HU=1Q5Jt)EoCVH#v1A zJG6fs11FGY+hficpX=TSbG)wY$TE}W{XTyNQp%42LIEGgzYV01`A09bW(9p$e*IW^Lbg4CA(6cRsNJ~ z?{f+?F3}+*gEdkDgk&%oMkq{(Apf)f17$Y`4h{}Xf1|05L+ad}v2;KfYTlP8AtKWL zJ@;vT3sL7Y{HfanWTMXPXE0(XQ5y$%2hyC)Gij6nTMFjqpP}X*1VOW~8-C9XoQb7?lrrQ*dcC$kz-+O;O7Gf+kC-Sul1oO=SfH#9?TG7$t46qpLz?XfG zg@d#FdjI2(AM^-!;C>pK$aOSM{!&R+)#EQ~uK5N&gGgDqi#&e-JStzMEbt zzEm~t@BJaE4NOGJtUi+i>O%d~J4iMV9Bj;wc7NXYmNWqP5wZS+h0Nu`Fj@B)urs>K zz6AKYVHq#~`fQN;Az=a;;i*4Q%_{tdVL??tXmrz4s?uSC8lFxV4A{)yt*D`AU?>Ml z$Ed~$4Xh12AXTZX>zkOMgND4)bB^1p4e_BXbc;}7{P)Z*YCa*Hux3(@yekpIXJ@wX zu5@#*g8<3?Sy|B`uZMjB2pE$4R9B0FBZVG+E=&1$d&pcVz;CYwtggT{*zdpFf<-wk z3YozS3lN#F3t<~pPF+*|ZQOj!zxLmnTRvdC%e1KYZUf>2nDv<_@lKsH@a|1Qy!;`X>*4<EFZT>V6(vU~=bG z)8m?^dgx{+{Tn#P-H^3*B~$gWVdd(idh}PgY6k87gbBkuqW@lwO@WjQ3rFM9iOwq|*U5^2^OG5RejL6oa< znw1BReIEY*dNocg;7=0=?rM;X%z_i49#B%yWcxch7{-X=hsj$S?@k~bP}p97y0v;v z9iN2XgwZs(0w%&hYE4c!&OCRPh~Rv1O|2*|M|`aXA#8l?>Ozb!AuSUS7VfR!|M$aH z(E8gpH`@q$59~0-jN+OQE62rgK;J64t-*Z1wV9c4x;w0Rm zG#b4h16cyDjRkT2Fb@)P0G>^x)D4u0yw@o+>Mo#;4cD_;AADQ3hgD_=BSsNc3F1ww zgPY4S}ot1h_h;}EbdmP1fgq^)5pS*l z!*<}Xuop3We23!5CK7q}TXTJe4K+K&GQF!evY22c$|DmEArfPVqr>et7%>NeU|}nF z)8uc(UnLBX@;`i%z%`fHOf{wsCFKYDK>r^btoVA2c+}R7I2(fov8HV>??tkj->Gkl;uLfpt6EaHCLhwT{ z@1?#}0&u*B;9jfea4Sa>k~KJ6mJH*lGhjt=jWQa0KWVYv*joOXFMK42J7{ugGF%jF z-H_J!$0roSaUL)f7*5>&{c$)hr*ozN^K{8b0?`HfDqgTu_D?(S2Olj{tSJP^C+Gxdh$I0#jC*p+en;-(5+n_k*%N!Bqhbg;1riH!#xsuV@njC7dpztJ zGw>@js6tF35i4I{4i$lx@;}*97PcQFh3b{fXbFR-lu6V7cEtCcvNwefGnnqi^N^d8)+=DCuzno70~%<#?uvm3m3I;1oSuLL0<_kaKYn zMyq!KLNow|ZVF0DOLU%ANL^Xe1}e88xElN5KnF5GeBSi5v^eDY0_JrqQ;m{{LV=c! z?xm{f&5rGv6IY~3FdeUk8F4Gi7DBZn0>YM=w-3NY0WmlRM)`4&94;ga3Gz2#asqtv z7R;h&H4cEOt%$2QL`R5kANr1!x%ppf#ibI&XJ{xp3a_i3yW_HSWG_oGFMfyhp~b`= z$9VlBRP~U#=7{GSkoT0H*ZJfxhuYi*a2)3CDiTY-zr@aN2Iwt}qkr9Zq{Q7+A?e7> z!ONKSf^f(Kreu11hgpwA6YJwMZd{9x5$iEA51MY`_ zP5DcXwG$k-(|IgCvo#{j@jM zhVl`+-TAgK0%Wo)_~sE9=j!ox!r%yPpCpRR&oVrH^7&Q*Rys^bV36l-glg6->{`X9 zv=NxYg})0%y1yo>@BSW(Bx7@$X+c9SDF}!KRHPtezVf3Cq@;mx@i3c_eWP<@o0^Q2 zDBW0e>)Xj0*i@w(>OgBu@hj8<|921pKbMxxl)M`lH)?f97=N7badVP zw{X$G!X67IsJrt5&n%yzz83`ya_Y|RuGVjdJ^?~-MQ>|sgQI?@=o|_-E7Q#ZP0d9r zi&d_J&SP5TveW63KkIoy6QV*t%<{d5Z5sq$!7xzWD{TY5_w3&j6>QnE;6$zQKb3$z za?OMnjP*}jHox7KSv2q*Z}jotHEn88--9BwGMwA|rcEhp2T=an0;0?U*l3lTH(L=< zY#F8*qrnvo(!0P8i`J15YLJQORX<_?Mm(vo1SYKiXbxaPu5??+EQ>wRE%tQV!dm)u zbir5d?Db=q)S4JKS2Eoz&Lq%B`r|L8wOAg}W`Khd2yjTU6re31VyOvZy+IZ0diA z1!bd8LMSv@G~CaM8R{0WCpT>k7@)j4;^BeNnks401BmTk481r~%|YBmAzj>Q(Bpq; zmlXQz7KnrLOq-il7gtve4$>&(RUsnErgdSVqs7F=LQ-UIWrdlc{>t(C?CdO9)L(o~ zfrX8|n%$f|S97v)J@iO%?xjocMyhB6?yRsC8>&v1k`iI-c)wYZuJaZ#3Ni9(MC+&kk`(MgV7+ zYX6@nw2Ib-BCAIE_~lT_xOaX{Ofvp4AXczz==*nhMwh-_k@(rlcH+Pv{22k{hyEuD zB}u~=V)U*hZ`#HK#FktHP-zTDUNi_P85qtHWTt(JlovUS6X>ok z@zqVJIGdjGQ&!ffGDih`VE?|WgwF*YavQg0RaX@20#(QqPt?(b1`_?ekyt)m)Uwg4E)s zLfm%Yi_L-Z0GF7U-+dEmQQ@hR?O~ztMdYF8IS3n0?Ueu;WY(g!0ZYBF4_30`qb8Zi zlGL1Yn@&84RKO8-YpaWCKH&VADKj&(cbq1PFW}Ul!Dr+oyqqAst*763-6=A!h@6VV z)MeLD^%|Ve;0YO|Q`iChEiwiMA~{l0TG~iZTS+@h{9y|lZ?hfDR8-H`Iyl+skA+!J z+}hkaGx5*jmB*{>a8O7Qn4Ka4#)4Qv641E@p_TlStb&&C`udU=hUc#_L5R|jm8e`r z((de3WU0yn9BmLiTBS-dBe7F z#X+JLn58R65KEaweWKO|Ie}jPb%Ri16kIk}CaSN%Q$;Y)&&P#O_{tQ^-;Hie4Sc*) zJ^y_$mDGSo1s-qYCwVpUgv$)LVo-L;)8d9Kh7RgNe45sf3?b4rZmm2NbRnT&HJ_iG zhIl7{R7i7o<;kZx81zB}(1-|{YCG2V@0BN3sg_WgbBM*VM+RDP4~@%`jTvtB?XcXCJc70d8FmGGg_Vm7k2|S*;Wc^jCIJaaL}{tx z%{R=Mnl0_^Y|~e$U2UPN1ZRcg(+~M>2kTksPhS>x-Y zCL@?QsN7!AR;RFJ%0C>e6K~kJNpRyBwRbo=IG8D}o|;=x7I**o@%FEiGft&`213UG zlG=8b%Gha4<2A z7?z(6oR216i%IC|=IHVYcPk~=FaPMNB??mw8Zf^TIr%g?lx^H1AnG0rMnMvBIGC1* zlT@FYzWAlM8!N^ueZZ*2opvavpmmXp5}%M>j1&Whn0Hs`B=)XCJXO+ThU0nBi=|ZD zSm-_ytiF{5^gM6)d41^N_7ijQ8a^oS%(gZ9CYzr}UUU7Bxnakkk#nc)$1JIa7kl>s zHx5!(g#yZFiMT*gjiBvNBVSjaI;+%Mkr$Z)&ZH?d_>qY@eQDQuYHz)O93O<4gCMwp zvw#=`cRGbQWS;CT zM}N#>=EjwVAY~rmP2Y=~n5(0uBpQ@tOib}GDaEGB0CpYZs+lf}-9Rr_c>l7hkF%GE z6~f`4&3bJ4)_LhQlL9-*qjoz+v(LKYGg1&t$u^6Kh{ z#>P`{OT)z_yD<5=E=uNJ!1E&4dp_n)In_}^Q^mYLud$=bF8g1O<6z`=iP1WOz!m0L z6x`TJoV85+LXw`9m74`>N6@QOZGvNh6tZZKX}_0H-yEFB3l2Aj`mp!vTuk=5WC|0Nd#ZNF)(qHFpv|bSwnC(%>bcp+=?+gY9p;vof}B4%&Rb z&*zdXnw}7dn~7#RZ4i2QwJ$9CjiXvm=GX+D-k&LNw}5h@{{oqU6*jbEpnrK12vuRa z9yoa-pdV-k(`0Jgev+@k#3zW=w>X$#)UHBgcU@csSHz_??lD~joOA2wAMZ>C*siYq zq1fmVv6|P*beqysxe@=R9`>uFEBIy|T#e z+H}hotUU=V`lGF-0p;&Z&}8FSa@F^_sJMl;+TZjed6p*RN1|88F$L;_xEs*F#jkg+;b{FW|?@NJ8a&Uw}^|s-!*XaUsUNW zf_xJZ0wVbqw2S0OF_C5_q=T1`PSQzgHf1Otu7>#D$9!GwsVf@CjDON-bq*DaqL1WU zgtK4ky2cc38$3B;o~ZO5q5e@%7IEdz-LS@xR0xJ-H|NEfFOfso2AqLA7{1dS)QM+P?pk1>aYOyPA3=a$pye!?LxT3JAuIA2uhy8a_(N5)#Ty@lv zByZo%-ve)gZ1|QLip=6gu1mmW5&KGr*A%4c%Yb z=OieATV6?dT?LO2%+x#kV}F+d+rDe2lhng%tJH{8(K;N$Yd-1NgQ!%Sqv%LB=KIR4 zA%wiXu2dJROJmosd`N;{pDC{qx!tHL2~A4KzmgNDVYCj6$vY&c;DWQI`>7*@(U!4N z^eehtQ$ZnjpYaGDp~VFzUce3s6wi9m{+33-e=r)piAx0ZyQxK>U5}_hK{O-}*#wN- zDtBGJgUkxRz$WyZn?^4|W8uF1p|eQ7PFnGO$>T8VnOwa0D$Q7znCa2D==_b!FqVmp zTXX5AgFO_HjDnSw=M_|ILA53TAHA~YJ+r~32mP{ks6D0~NFjTdS#V!EPI`=AfBD@X zh5nXV>NP_imGsCy%4)c144I6$?{Ha{{VS-O_n z53ItEpd3cTZLBg~n4x(w^-rDA%4AZ1mST9Qau*YNV?1cw zCZbfunlhGnX1GpHmV|Mo>44S6H78g5d=##oGcz;lX4m0YU0u)3yK_ zOR-K`|NVNcs^wcPgR|#rHT2&wKeqQ_#K8jPPMz`~lj)ldqM6=^_P(q8^6yS~2G#oH zVm{cW_Y;|M$DGf7K1&2dm}z-9m?eqLRl?G2=4j#ed+v2<>Q-lpZnNUIxW@vUUrPQy z50@M_;mpeUkH(o-ZI4fx-cn^R+Y;kla7?28KV-cJIM@3dKK`*sGD5Ofwu~r|Jt9QP zCL^SfnLQ(Wm64XMC@W-TlU-4^>=81vxBv6%eE-+)cU?c%IoIig&wISq^W4vU-;eX@ zN|kmI#>ao>Hgj(&7xq~EZnJW9{M7oT(6p>$o))&!8w@Zpf}FR+cb6M9+CMuc?Vr86 zF(eMwgvGZqKyzjetmr&?M0$t#rf**i)Sd^gYh+8z&&3)L7RQXTL*x3ZfngZ{{ zPfV?x|9219gy1D9_(d3=H(1GYR(Rsz5V`3I1zDuJN4+-z4SOVUr`D@9iI_BTX>xdw z=#`MSwo`%4vny@YF?Q0?7dlDJHb)u=9c~(+dGj?kvfHW&&D$%ifS6dAy>+ zp8g9>EYQ@$3S==;`|2L&Dou)&Gd_F49- z+1D4sj!u(q1!bJ#(x;h8kIy82(D_m!7~=Aofg;hs7>A8{B~VEle<|8D)|l0(*d79< zul=#y5va?+S~HC)mH6InIZ!cB#ti_Qu#ug%Gky&gGno-~P(uKjZfrOEQ>rp7oz z3mb@*Y7`$r-zIuERht2F{6@u**efFF^o@Xm!r&~-!dv{eQ)4#X*Qxbi+O)$F^WN}@ zfY!>?m6|28|tl2hTp5F6jgQcrrG&xL|&wFpcac z@a2kylpWF=exZ!1-J=G9_Vs%vj9>R%T%mL5bRF2cAafHKW~pu3WQ~8UP5EGAfQe4N z^ykr{hAF5K6!e&SA>%I%U4qp2SvOw8*^Q!JIL+7W;9@YM;_d4z{v8QCIk(;thd^^3 z22 zB+2lW=+vnu_`4!tp&+j8H-sM!i$YgTuoCL@5PX>gPX{+4Y?H9pj|UQ0>ZHDb ze?|r1pHvS`VhwT*N)0c3GR*%gAtf~$_=6&m)O)I5?fJkXTN3ZLp4okX%+Q|HxGft3 zSfn~O0G^kKh`H+>fnqhN)jiAuyCgy2Du%)sHbIjw%tt_M00buh@CWhd+}th$yY3sE zzb7RvE%bOy^~wG!1BI8Np&@9u;j>f%BdGwBQ~cr$#aSHphPY@QNLpogLZY0{4l|d#kJCS2@6h@2tl-7~dc>1x$c^dOd)O zMUd|x)VIC89d#ywA|06ayjTU_mMaxiRqPTHuh>~Q5cv%lffI1Ya64asDM~@Nzee6c zOwEgUT6Kr(ryy71+pA_FJO{}rRB>>iD95L)si-&`4tENL>88FuYS74kfkMFJx|8{b zL&bQNm6gEjj%pVH*1~sp6$9`@056_=+RM*w>|OeOwSAqXRmfw|`*n>B7gsi$40{9{ zazUXn@xTK31Mxyx2(h72SX7tHNp<~P#Ajc@qiM*nuK~BR2>dbl4T^DL3lR15umB1O zI4zh1w{Cu@BzvYH2$DBhsL8(cA*XoOY~cE)2I?8-Bt0CTr8qe{2E2Z4R7<1fnHZN8 z_TtU2I9Fe6W&Nx!@W!|+1rrVY5Yu}WFc_3l0rv`;7W;coDEIinjD8W2P!EY?2tej? z(2S0atB*8uHD7Y*fg&1t#s};v(OMo*azj<2(Y2Gg^~ycvQp*_}$msxWBEUpo#5f-9yZY=eWMcw2 zZ@ki9vgMA1IN1rB=sa2)q`)9@w8b5uU5L`1M!60k{sUKLFM+X%|KVQ(^qjDeSp@~j z{#U5HvJZDhMw8xoZ5!7Trk^BUat^uMmx2(&hAiXENAm22WoH)$zI{6ltDCdO?f4<| zaSgWN1E3HXsF!)%ot)tD6vL1XHner2xOViUdL+xoXz*B#N!0Ex+Zx0ED_K52H(Np9^%## z*6#hLmpoW1LD=YLSMS}U6ZbQ>(&h0iEiGT1XI50)B&+PVa6BD$8hxH+YrLBRm(7h1 z9b#&U-K}zulkZp(Pd?$Xk-e;2hJ=sJK|^co#>eT+j?r}BKj)q%A1XR%BRk+@jV@rsA`A}iY@@l$Gt+A`>L32k}TzTm9q zm;t-u5+^HcRIR`?aRhpvhxcoLwR>zC7lUnOEt{t8!|g`4qBh#P)sm$PWCc$>tT|A* zWl!Z-eZYx(F0EKEZ6P*XvQG?^0GEF< z?0N4244WoRnWHD*gyaJ8gqC^u#o7*Wh%zrP$*uT)v0c61zjfND`R>uZKkYk_s_A5wif_kLEImjUGGpMfzoE}KF zpS458l1OZfBX8N{)_TNkVA7Dz#w(#)tdi=*N|x(TN1XhE&!F%LokCMxplyD{e19d4 z+wx#A9PI3Te7W_PsfqDmafHBI%>YtTv#N1N6|hYi#GP@0h>YxIpVRl z7aRCNPC@-_YBh=B=(#%#qupR%luO*~C?9Ewia$h`4`=SroXhHegHg>{^J$yg72YTD zt8}L##!P#iuGeJ0HUTRSy4>MIbt0|LCjHiXh4x*R#3VTJv6Me}ry>HEw-HwVx+V zu`unWzS{vVDW{}*lp@A9b9?$_{n?!VS}R#RtC(knNC46A3TyXyk>~`X=``4EVV@&_ zN_DdqIa@}?gn)kWq$D95y(`PHb^E%Fz}AJI@58hRHR;BmF$wG>laKM?2vV1$s0t`qj@k8mPFE6a(ZMaT}g>y)|D zJOA>oLP$T9mb+k`9zXn8bv7y@=6CWUbK(})cB`+JnXgjo_U@m4>KQuqX-KFH5)Jdw zKI%As^O$`BPQ54)RG34lqPY1QWKsHPEV~>H)xF=uJQ$QwO%Tj||`?}Z4g|Gds`#D5y-CQdD@2N@8>CW2b zoLu_jbpEg8ql{zIox_q1oeSsvXzB|%Y$q#tvnIL)T(D?mS1sqD3+kbEO%Gi?nFiNf| zY`j0mI7U#Yw;Y|MQ1zNaz^fYgM$=G#K=g1RHbgT~oT&rk}MV^h`ne73Y;tPR4 z+n+WbM5}_|i+F(qTlLLzNV@dD}}l1j;9^U@hK8xE{a5OkdfThjV{Kia35Z zVJ{jT)CLL-9QIUye>+m2{zN8v;F2+4dP$w9`&32-J=CCpVH60({t0Md8d!C;>nzg1{S9>LQJpQY6R!lp8Md>Q~3O~MeQE>0oWF~ zTS2!POzD4T4J=a7(CE#~0e^=S)EZz|JIdw+TchU)p4w%AFp4QcDa)=O>#jQy23%X# z&nP2n_6?q?u8MO_*>0F;5E{!m9C%?-5x><%KfOYoDu23Ml_MfZ-FI&`$zyE-3qIB) zYYq;6jTA{D?}NZ{6;3$Eln%M$+pfL2F3xRmoZ#O6dso>ixw$goMw}~eFeAQ>$^Ba? zc{f@=wE2^ky69Y;n&maNv)7PFCbj7)H!OE zZDnUX65Y{lV-4+-oS%DXADJ6~eW9l6Y}K87=~H#r{BN51cGW-V&KXtjsH?1DGzc-C z-ik~gov>fMwRDBM4#N|BSydhv>241HC1;0p;jWlU~*SzAX>@^a9P738t!%Us5V=w=4=JVKzyG z#%a&vRzpIZV^G40Si6wMog=}w8;bLHFNR%o@|)N=GD$mShw5Vi=#-{_h2+S(Tw&?S zmulZ^zoBw?QLMTVA+evFLwZO4oWZ!JXCW)RRq>+>dH zSt30Nm^ftsrUK7(X>13`jTQjv7q_Uw#?S?X=)YS7rqiIj+uiKZ{M&nbPsY(0I%xuG zoLcx5JS2grP^Rhw>(25W&8A8Z$Lj>Xbb0pJsfTs+$*xS+abl|d@2T881S}t0j>Zg9 zR=nKn(lBN`qRT8$rf&Cszsn@)5dg(Q#23T}x&G0HJ^5endf@q?Cgdna2GOd=Vt)Ay zX;N5@I&bb=0Q#A6pN-StAr}Q`h}tn@C9sr`OCfanwRo9n(SEs_hghS5Ep8}rvnOu4 z==hcDP2R|3_E%h%7A~6yc>V5VZ(gltZ7BbIWU#xvO*&ng*@1O(YSCckxIKY8!eir` z|Ft(@Wc<>>QX%t48pKKnTZoH~M;fh{Y#gw%?7^E1RT5fa7!L*yP#^&c#OcL_?9?*D zDD*nEtvejzX8T6zsB&w*X{{;<{)Ul<75Aaw0>@%)RSgd9zTNcJDb_m^%VwWtlOr@> z!-q%*hyx55v&JVxi1!HD&%Nr_o*qhg%2w#^sa0qqMVpB(|FyLhDl2!OB{fQekq8Z3 zuH>_O3?$2xui!W)(ThBRiv>zZg;Yl@JGp7Xjw zU0T1=O6s~dEJ$z^3xi3HR5(Uuc5;9vAOR7gq(SB-iMRt0{UcvL0A}K@TC!!VD-_^O z`tQ7i;VB$!Xutv}U6-ig`*%_xEy#i)A32m{VQL{&9wJ)w+H__Upcj(`^JF0VMZzzh zrAez*qpUJqx!5~JCFh|!YGD?(;K__(IjmVTJ{)kE6rS`=|J}H8h5{E0F_*y{tk>q! zWrwjSDD^^#q3Pi>NY9Ajlo1>Az_GWt-vzamR-K=3WfN>Bd_<(A-`$TI2$(0J_9j~C z0Q|2(nDQ3C41re&{5ay#9q-i|0(h)xSCEjRa}qfU15AB4{TGh_1eg~;C-~he9?_%J zo+;ZNNsW~RP_DqGxqLEXJI+sFMYJI6#6{JMK6U^8l1_fxQIa)mMQ(0; zoDh$SiWo7OP>}?B4+Ma3Tmzu;s6YK#V5LM~vnbW92@9KdxELD%=}6PJ<<$4z@s1eL z5drq^e+M~_4i6)!8tb46f_5IDb2x42XZtDDeZO`InH!gS zH|JRl+-10k)a(y8-bV!eBrVik*2${vtb%#WDlI)`ne+^3AIRtnJZmvRPE(3+z>yG$ z>&+m}L1`w6PQeZCqLPLp_;b0qbS4E*Wx1`C5azaxY^!1T5N`B8=cNo^vU;>t`9oA_GQ>;ah(-}I{a3tYA#;BhO#kLUfA zfe_*);B!z=;+%COCh!=hu_ri%*_ASpU0_-l6A*x*W#eSaC|-gv z7SY8a;l??v8Owwd8=48f{F?&C=s^0&1X>Zq(ha~`LL${P_+Q=dXK?UZItwq8wL90b z<(;(ka!p(QlxUaGD-}#xr)3*;w>hsnK4e?%rfVzowx2x3!-NFh_&K0_w!|{WLIg;c zZ4AiCBp@9vPlzaQ!lahm_$q=ZL=23K`4cqqNJ(vFU%hqMeTSFEcGa{ji^Pxc!)>YfGWEinjlTcH*$q5SLbZ{D@ZPj|d!WZhX)d|pI^5@J{ddwT&$-4NI9P>OmH0ElLw z`QFSoyo6N9kncE$LOgLxk=Aq;iaBhwZ!|B=AI7$5`dl_j4Wy@4=2#3&repb18h*Xf z1g*Hfw#)aUtpr0J$=%rL;N1B+{h-tkVFf+en#!I<-82^oLlPV+f`_{_Nyr28h!>%*sNkCAT@>;?lP-a<=>8bJQJf2&VQ_9ZS zM~9slD0AHG1llLG7@!mjR9k5zZa@ja@!=jO;M1qWaihctBYNP-9np_JCN~&Lg`&gr z1Dd->tp$SyakJa1T%uckV_A~7lY(9*4b1#J9E=zg_j@tQG}5`T3q z7SXVO*~s#raT1E!(-G8SQoX=;LPrY^&&i?t!=87ik&F~UtpGkHU6O_*%?N6$Z5?Nv zEzWnomNq|XT^SUQn~mXh7v22x(93^>he36>$AfWRAIqZg;HjP(9Idx|q`4V$=<1n_wmH+eX%RC6ZonXY}x8C>ebW0E*Gx%2t@km>vK zzeA<|ZYH;Q5?@$Fs z2g^T(@H(fDAuN5J)x=w~c%-R7{&AP$y*Kh7G`xm&l~2mo?_@6)3(Yn-SuOj} zPgSZepHJcBK_u8zk`rQ$f*5Fk5%N0ek@H}|ovREo(DDa{_1Vj|QkFODEd9(_20)77 z)hmbsG;|sQxof~Wg;U9TSt!iXNn}H?eZ6%#pj2>0q}`dUO7_X;%a=?RaiyfIE6(gV zpNY0A9hG0xh?cwQ+&L;gw0ESXzEXurw8fv=@V!m0->iqqa$y||xnxqn4VwU61w`OD zn6IzJ$RN}LA}lViZr=T6$FMwJiGvVJPpfR3xY>aoQuf=a+y(>UW`Tdl;hZ`y-MW&x z-zD)Zg3iIm*d2FC$BiSVDzCG%&wQab^`mdI`Q|x_$9mS%1f`71_rk+EE*4-ti|vy+ zn|#qKLKxNuh}s*?gjhJQc|{Ou8JtPwlfvU0$*;BCEBZnmH%ra%fu;L>*_I6j?7jcvv(DMZFYzg3z*Oc(Xi`SBm#UrM)evC67kd_Qs$@G}j&~cZNcXw&4;>@iPvrAu#Dj zO$Q)vxGzeVr(c8(GR<|9eBD#|y0+CCnwsTzvlM?PTC`o}ak(j>I_7=ln6G`Em^6Lu z#}jOfz+0ue-}{(1`eF;E$xll)eLLe|keJ;!`FcmpY;is4{;zVLG5sqf-|c^n6Tr&6 zC}^Pj4qTk6P>yM5$B!s;kN)%$B?(+lU6X`_19EzL(}sq_CvmFTo7GfdvajH)S+`EaqEJimHCDLr0@7;^8$_tNHuiq^w`M4OGdG4w| zA?F4EV0fj#K)TNucFFYohBylxIN-YfI5P4SR6BV*yI|%#d;a{MkCL*ok(36TOT|l1 zx#E!l*0!vrFF}2A?Ge`&B5n@6YwNbM=m?%wIT&!Odg%MdLNU?)Ud(4Z@v>Qx7Db=H zyiErF5h>cPYAUUXc|Hm#(uU|{o55KD9usp1LCDJnn$dfBzVss|!9Zm1=s2HuiKL|paKsb)l8USJNXlU$dRIQ9uQ#L)B zC(Dm?RBFo1f`~mVI_6JYyvfpJiUAl8m`%yd}c;$(h8-f$)(@t-Sq)=I6rW?T5WrHm+op~_Ig5)`e$g+fdR4pFrFK#8!)Cn**0*mARtq}^ z+b-z&j3wU)`Oj75jB#tDy{k?4FN^#T&@zex+w%D0W*^6#RLe;x71Ls?D_?&Uc&5mZ zYs^?duiboSngtB#`3oLz3`+TPO7NIj@Vt$^{FPR z6ZjSTSyQj+%|psb)Axa>>Q3>45e9z|_Y$NoCr7RAOa6ER zB#}>$6IkM5lW=iPqFojl4nrz2r+svgjr=x8_ca8tLg7OE6m zy5xqyN=2*3+|oYnKODqS*wUDFO$JkM^0pzbQ${w^gT-L{OKx2-d&wO*unr=ccJB@2 zd+dF-SScgQ=?ToPg~%)s4}buE{yVAs27WSJj5{S{nc>+Fk|T!+=t^JD29?N#3%Bd< zw(!1@@}M0xwF}adX2K}bM57VYqHVgwvW_Yi<~+lS?dzYaC7(!StMvz0J+CWehJ>O% zL}sn8YH?!1GFG#{E}WBbv5oO8jPy%dcvGj;eq7fq`WdO}F?c}OV^%h{NYGIXv@ z5!pI!cUvh+{vyeoBMHgPF8OyggBBOS+0aA&biE!oOWGlsbH2qqS;xdt%iDnU;@<27 z*TIVWV*TI7Ni|K~eKx1{CHpE<{!OiCcqqjE*ekh!dwx)BpZ%%Oz`E1aUhsH<`H$Vc zuxRx!C7D;v*PbwSU%C44785BE0|@5Q*@Ubctv?8?&9X)FH_B+9S$w`KNawL#s%qza zU9F>Dtmm@X_~+@IK7Nu&y(szn`7D)9a8R-Fp|`?1Ad>O-*mS(1M}X38``uP$h<5x% zj^4F??P84pUCs!$?YzCyoic-jT2z03H=561%%e_F4PS~v!3jUQwxiH7!*7!#3PZV2 zV$yfnZ*tR<;2a+PKCVh(I53)9q`$dsV=U>1vrKTg_2eB{K&a;4$h{XZjdA~1MG!fo zh?UFcZm~65({eGfQS^tS_Mh{qWRAQ>zrNeJtbepWc0+0%zr<=`mmUvMJEPkxAK~gM z*I-V3J+EBYoX2PDwA5g_*KvuLI^Zx;iXq`lqztClG4|vAsQyP@<4Qhz-wh?hZZxF* z9Ti^tX8&Ic<*DK8zqbZH=B;NkQ?eEo*j;L>X(iP6iBklVX!zUzxIaIfZ!m#CH zPV>{}P@ivpdlxn+N6U=|qW5p(^bFKJPWxcxVgnpK3Tj56ES-Vs_Q6z_*^e#Lr&ev3 zp8w+OdvSAG{Lz|iR6C7d+fLLOY^pO4#dB*^w*u{g5 zeUm$@)(}SK<^Q%$-glyR&Pvyn0d(Fq$G21F-qh-N zDy(qI((3%`Vyss4Tcc%GGk%@Q7oG~T_KbrfG{tpzMs1SpxPrSYeaz1il2Qt*pBoXr z>+{5tCS__VKJn{L*HRIbE&Q|pN$GBB79yk{PhLB$U1s=jiMSy!c{QW|w$3amX#3{F zEASPi;k`$&3_K0BDleNFcrm`7m`kNfLbebnmpH8ORvQa*tTG%re#RX`p8f>m;L52T zyO&S7(%(Pz_qEzJo3s7jM?>;E$r^hG7*_@8!^@6dJ^#aF38$7NBYZINf{ho|Jrk24 zZ}ITG4nFa{yUzKnIlt-b_^-xQQ2)AHCuXAe(c1^a3ge>;Aq}jijo-!wuz$P`HOX!* zTP3yl_9nl3ar4~1z2>HGJ|zPKhlb&Ks1sNP{ufCgej}FWU!&Wx?CyCk8SC>yU8oKaFOHA{+LKNsWc{mfiX^!`;fnf$6NGhENLeU2ofR{!Yj z;+cr8HyoqY~9|<&O z6*Rr`!~v(;VA-Hzh`PG-c8<#hWA&5i)!b0})eppf>6J5!lan*!RM}3>Dt$wlmT}Fh9g? zIs7bwc^Wpajye4)ysvd-SPP%?d}dEeHU8E3Cb!n-arOfvS1I40%JTZXPhg%#i%)Rn ztmAPjyQhSy==O?fv0xf5u3Y_bs)iZd{?n9%aOpy~dRVL|pfOU1siD0Mr!F=*WQQDL z{>|Z8oqHY22{zTYW@$H1+nj!zao^~xH2o&;vFcSUENt8y77X`&5;;L`;p&dSGd_46 zF2{qHd^V1~MkJYoFZ;eS`$BLuVLGH-<^kIXzXlaE(#yO7-odP4nKX^<%1Tq$kI?jk zuJBo%JJ`aN{p3%s9MI%Gj2@=AQ9V3qxegA3DQO{@9gmzob7NC4hcu2i@Bdmgk@h^5 zYyGfcNFhn9MvI&549q*WNc5?3EX0G%{%6NWhVMDQs=Sr{#ifDb9MdqhTSwec*d~$B z(2Ia9`lWQOKR4c)&;Ir_yPu!V@h3Z{AUXQW9|I#tn{g%W0*Zk5d?w93QuOOAa`3su zS2$U;SB%wSTc+q=JBlC0T)%@8`vH|Db&RpU{!B7_5V|ex>%`(ji96W9!kczH5FsXq z8T(NBli!!R<=ZK(UGx64heeB$ygIpIJmbe?`Cel8rVyDYMn2&Ig@m=4Fjo3HySO0E z_}Ey?=#D0>d$!jX&FOHxCa?5TO{o$Gkzbe0g#LH~aaNe`uks^&=Z#x8djy%ICsU&{NG-?$s;WAj=M_aT)}3%{s%sVRZd$5sr0x%Te`T&c_BS3{Ur zmgJtZih<$xPtqXX(pHzm;g@gj*=tZU@>yv2k*(bdV~Y0I51e*i@8-+HAJ!u(*H6Vb z&Z(00e;ta*tV@w=CTCXHUq3UvnIKvtfgno{ju=q z3Ls|Cj4T3ZMbg`2pj%D@(@N+hDFxVU?N1-$?g`Ji90_iE#}CSvKua#TX!+L z0#C#Lb{HGgMZ0i5<*Rr}G%`90`5-9~q5|KJ)9(=MTw38LDEEw~NHJRXf$?R6(o{%zlu4|6r5K*3A`$ z_GOYMhZ{F@BUAWCK=(0Hg{@Iaw@) z!E^8n(1E`8j{)rul~XO?J$IkNUy8XJ-sir}D);)Xb75f+mr4HcsfYX@^H=;wfk>U| zvrc5wpBD}kEp`!+62)a?m$5$6juhjfuMQQO^fbp?_66N0ceiCGmseww#!jyOb^N#J zwW0nu-W^iykGYe<>>A~cGGaqnW24_`gLqwK3+tbE z>pL2aDsOs8fyO)tNL-m97(!%ez{K>X+%hvWi|#fPS8os7LU3eFX410X8!U3#sT)9mEA1mcb$6 z0eOiwqvO$}7nyY_zF>%3^Q*I~lY1SEd9Qpxc!P{&pc2psJTCP=uYt@3EbEsE-X0zk zz`<7xCZ=ZkRSTqi`vu+#?@F`&-+y=Sj%$DVGZcoH@TSW=a?yJ$*nQ2}r9c8+wf z^=%>kERp`p{>)AC5={mn4>wWKjKRVgq!hLgmN?_@BI34*1;UN0;yE$wcp9+WkZ`WSdGO7Lbd7_Xo)ep^)- zkubYpoq>SfJOj$QlVk7NMZ`%kt@8t>NCRbd*3)G*6%|>ilyGXML`Bn!u>mI(MzZbO zw+qfjVB`1CQ&q1p20*2Hpc)kv6aX!A2Rsd;LGOpUQJ&qCAVyUD!Ah6xzh3Zqp?Z%4 zgqd42WvHwK^K}BuT3|{;<*fxA5IzFS8=Vti<|g8@3Ex&+|7e5F<{I`!BO7S`-2Dq( zmfmda?CE_rPHPi#sD&fcHfaP+zCh2f*Q>SYNPva2*TLlb=cEmaMUx8);ge0F^j!lU zM_U6>Z*nl3`VtP-bqN=+pt=pZ$8UO^rFey?&gJvB*~bd1fqMn7MIRs^=DRRCz`+O) zgFKJ^brNN`Vg?L%xGh}nFQJ0s`xjO%eFsvZwgXlUnefcO8Gc%=oZBa#+ecT}({qFD zHT$o>_oceRDY?MHARK!Y)$4$`x{x&ewgY9zxdEA(-@h|}U<@W>#RZH% zZAyWEx7YDp(A3^Jl{=!Xv$Iogd%TGlt`ZFpAu>!P4sP5n{j=o-;{MlG2X|rPV>4nk z!p<02LBUEq;~ z@)>U8;{jHYUh#c2)fh|3NPJlF#8Jbzweednn&bw1}+0;Nqg>Zj+*|vIn zb2CBxKH&AC01ID{=qUdl3=qfHI9s_Zz!;7X04fbykU(^42B$c6>AmCf|I54L5fpNb zcy9522)tGtp$b<6QUJ(U20uNBpOK<#mK=#Oz^eH``i8-%zNv`Ec!`fXx9-vMr7X@E z#itTXm^Ine0NWvxiXR0gex&Xn|j zQ@)Rq9CSNyJ5zA2E05;M!J>uPyAGUN7#Q;0%Wx9afr|63zaMTC8GwNJgxafSOn+r= zE);6dy{Erj3*$Xq|B%J{)KeTwLYpk2ls27RxtqcDW3~9k40MeOx9M#XZ$I|skbV)+ zjTi)Lw`_kjE=y0iG1of?Wqnt=6~|cn`3J68d`iPya;hA-VnM0XbgFOzVA=Wpe0u1| z83>g_`p%}tMkrAR!Mr-NgGkhSJWu|ccX_V@KrRYXdm3hb6FkaIKyz)~G<7GImZE_8 z3Y>pObi$)1G1DVkmhe-Kelm?3BGX`qinq z#M`7kmA&;Yyr2r7z2fG5@FG2D;xUOASqeH1?J-F&LE0a7yuCKjeFp=JE>80^*|YmK zc{-Z%V8SAM^XAi;T%mS?L{e&AZCRkrU+DL%X_3B(KOk28 z_kQUh4698S!j4EJUx7M_Fi>0KgLWgp=za?L1VAmuOr&kgr+J%Vd^ey2iRGl+cLU1@ zg0k6F_=N9ohKb)~qfr$m;Ju%IjcJL>^QL@&?xQE!7pX~A7xH<|xRPFZE=hz#cUt&8 z{UsYJI6c@Z$1*EEyDdimPwQ2_6l{APnye8w+deWW#7IAkh6C*d&Oktd0AibjGW)$) z6+M`OT@`u@V?&!e%d)}a#cN+#p1lA5D#5hNDRh4Qg3W#}-`WtEH6q?Kw5_%epGH${ z%yTYTp4kl|9mU|C`5MbA&fAtoIL>REQO-vu{U2;)a}FQ;%pw9)KGTdQc0TQ#0N~5_ zX0#JvwAbF?Ccp3>>o2Xg$uV5$wm_S}_I3-n=5>SZ=-r({i1vMU9ntmF(XPb5{6j$B zxw=CB&b{wQM zNaWK4{*axsznK{ea+wF?!xvk)o-i7`FNCokh|=05k`RTl(hzh#U&VbA+1>sDyjp)i zBXFdJ0ckzx=u|W{L%Acs0z(c;zP*2b?$phOdry;}Uuh!L!)i?&d*RJaYx~+i1TqI4 z|J3NXr%y38CJrMp!$U&`D<5HbhUFD(*7RgvRCs$U{nlGm&e^~;W!)Be!n?!_$@mRp z$A1?EXA<(&nxkJ>clWYVMARk4Za#_(di^KXXGbRo9He-)pK__7gOk1y_laEu%M6=v zfwZD94(4fm=@|k0+Y?g~*H*gKja7_;iH9q5a@*^^eU!%%by0nGK>&Ws>*9aHTg%%& zZ)cy2k5#_dW8K)0etOBy^1PzZ%%t%Wd9RLXfZ>HBwJ#>DzA1zdziD~4KJ;jRH~%P` zLscp3d<`aOvX+EmHp#lJesu8p{rm1rHcAbtX7`nj@54_IiE0((d(0j;&bGQ=w-f>I zfSa;$tb{}=*Xc;*+RD6)Pu!M|Z)%sR`A_-MViVAymy!i*@wK^-qC8azao)h90NVvC z5{Nz*ZrFzj^!iFXBOrpzen^x_ksB%~mLlt)vQs=_FT2wempnJ(VB#^z&`V$GaUn+N z{j>A6YHY95JH4H;u`xq0#|fpvlu-WS`X>UQ=% zeEfNk!8NE(IfWJHyQBOa=&1#RS?uY&tYQ@`?EtwZxCt?0)_QMirbDTca|c4RyWot0 zcyMsiAqi7t>lUH1Y}>sYZRxcSAMw8nIH>eT%75syzz$d}lA^Fn;xTZ)Jr^|W$A`ge z^XhRUQ4YnkD5L{{oD>~ugC*8vNV9=5;i@?}Iqr{C2ty1U0#b>);BWWO->E@@Z$=zj z{<3mo0Xi|K-IO%`^cf5hP%8#t zuPVdeV<8jsAQr+aF26~jk2=C)koyLB!XY}<1v+LhpD0tIdaF!NrD~nq;xygBrme^D zJg<{V`{TwTKHXJ^+!i!4n^%B>CJLK5B8W|_J}`*28~lg`tgPVpo~AojL6Q-Hf@TPB zfrrP=V(F6Q-gFDg@uMM05v}(`YB{b=IMp3N-lsX9^yc4VO-13{Q@pJHo8l>0nE5pS zD|QQ=cqb#1IPjc>bOZl5#cyk(0S6>CQschJiUWEad>yN!f?4Z=+aQXi#cjN9wekFs z*p{-#J%3#5x0{~q13!pdtFIYyoP`nPeGQVwjXVC}im?m(>5Y|NAUB4LdS|dKgp8RK zV&3?5AW|a-GQ@NSKnow!*4Bo>fZI5zCz_g?^sOJL%eMVixzSMEznN>)t~QxkMIM94 zaM{B^56?A_#^}H6RDl=a&nm3DrS;_a-@i!!MGEaEReOuHt*gB9FR(GuD~K$5#jW-iBJN{u#N+ZWiA>4W)E8 zKJuFtO~Ds_2x7#<%6*7bZ zLlPDY(IeZ|ZDZpn8kd#%&4{0K+=)qzxOr6mG3m;Ea?I2go%Y%&VQI&Y45xpq^b4rn z;17?_UNA(>>-WHU4)Lad#VS`gfP+~XuZx9=kOrLy{x{AffeS*J@(VUa#{y%_L3D#S zR#>TlU*?l17Y_I!WH;bP=I_MB?UwjT(c>joweBq(W+Z|p9WbVa#>Y*-n( z4qz}y&xu+-!+XnwOQM7krPxU(UhQ{_j_4`Li+KW{5;ZuEXBp>{ma6#sH`fLjMo@C! z_dU3iOwYT&`rEAvUWny}qShDiwL67TQCI(}mz22GMG_BOCgf!cF{c7BO3+%HOYsKg zu$yjpJd6WX&~ce%r7GjS?b_qd17xLrG^g_F-fmo*4Uqb%XJEexiA|X0EqpRI?cBZ> zVh$$hD_iU9jlfd9aJF+A?YS8P;|ctFxw)_M$r{Y+69-pv9?}?0NDVx~%3=CQpqf}S zv=2NyHa3{Q7W~NpGk@Y7#R|x5hMQ?Tx~P4rdr1aK-+sxs06)RYj!VI9wm}=YWAq(N zD2jRTk1oVt3~r=Q)oDIc?h6y%^86>IU5mI_wS9>k#!r#|AdqLlX!DCOv6jHjxD_gw z&h1yge~zSrN{p&6(K=0lrI1`{qIeM7HAt7biWyx+sbhlf>CZrTb`mX7S-~R0n)5w{ zOqQui_tyDx^1pMhF$EDCE70_w*4JM0gQpM6aeNW*^jr60Ax`(JgxttVoc`I}9j*3{ zSSB{<_1=#%u*(y0Znmz*-`zsl%G*SBc9sc3LKrkS8ARe{ZK}MKY`FB20@^Ab=a|zR z4C-ivdlB5fBcpg>$2yXZ7Y+#uYD!9S`UGgE1D?WcVq!F~7mSUK5fT#z-ZCiLCh1;y z1Ob`=pwL*D3`Z*IG2+2rb0?ONdTFKqs*W$F`#w~1b5vlpXy?ukoohNLTaF($`0pVs zLHomhM8d%^STo266XL^bc6NE!YoN*>`F3d80zT+o^YB z1R?GM?-UgPjrmTiL9hd94*;qYzkhSOU*P~_Tq%T^L27(qQv|>h&`1kGPJK#;XGq{O z7Z(9!>0cn!z7ZD_$eqY$SiW9Q@8GvHxaun3FFcb~{n*U)x5cljOqWo-V4XF`Je`?c zIQ?_%JT^^=E#~!e5=nJeO$F~42|8=N^b|B=u(H+A^s6l>dU*c~-fERUN>5pFIX^IRH$b^BV+KSGN}Gc)S7G? zL-c(W>7~Ax^%m&jKb8c0WE>2n41hyW zqSpoBcirGaPA)FQ+a<^SwZ|+0p)-&(FLE-2|0+VggdN5tH&@5&^dClKgss*Ma$6<2-$fT%-RxuvD zD`k0kY>X_}LL&7Mr1u}~M ze~Nb)gQ5%=(bslGub~zB8-^au&E=&f#BaWG<;BW(as~zx$YbNzL8D%8CiFu5PX>rl z%1&mL- zTVjwZf{}1<)*%EyaaBqNzhDunzYCI5jRH&tX6b3j&b#!>J^tQBg%QqWBy;4`&3n3J z@#{D={CZj17YyYk}x1{3KbGy8h0OZ?>ybJ)vK`I?pzkSoQz}}mN zC3SXn4ov#bu4YyUqfiKG=OIzlpISYbq|~TLFrp0{Acaj2|7}MtxhC3_o{hi; zmk`ico8k&w+|AohzkXH!^5x5m1o#0uC^WUg=Y@g2;hCMxZ?_wjjPb>8 zB%Ub;3XkF}`9MHh%b#CsmmmE6GJI$F2_PM+&yimMfD*_V3{5x)6(#_iYS{;E>r2VZ zANPruxWJNfVPT;-Ige+{RpRPZ3$RWD)rK@AM+6uYOd{LyX(@=KIE7_a7I6ch{=p(D z+G|$?%pZzpvqOjCEQa}K4fFdwl2cLyY$cl$U%lcrkhUMW0$Q1ASHLi8_d#(#d$5lM z&Wp@|9$fe+C{Fnl`X0p>gJdL%NlF6D6;HgOjDiC=eTUvX2ZxivAi7ig4xm~CP8Qn? zZS({tY?+JYf1u-e_j4S&-L#D0v;iDtm{6QOA8L1}B3q@|=QQ+h`JM_~`?4hn+7uBm zFnL+HR5_Q@6o7?8?9=l6yA+`2Y#EJ3dk;Ops6GnrVwz7v!f@qjMDx&4rTSK4_CRNU zIfE}e+&^+sanT+HIRODdy9k>qy=}e@IM@c4mzOIYcsv->yh2ZXDq1zzOp{EsfG(`y zMsB8`et^z^rQ;DQ9cV3BY=9ja1rw8fqF)>?!KarMxUAAC_l++RMt{K1FzLg1TuEBW z+VWRZ`G%pAEikK(&N@G$qS_eiZ;Vl_Cnd(M`phQ6-eh-lU5hsnEYVBugV}(hb_fwR zhW4F{3vuNZNd+Oe!8D7%FHP|BEMYA)PHPMR=x z{xreWOG|ycgG2Ariu9UH@Pni z5>l~ZwYRlBJ(MUleE9e^X>Xw^b4<){wGaPRvjkPf{n7CIbw}Iu5IS4m8Uy4_-Zum0 z5GnNK$$I;?y{zZ9Q@(NK836W*^bcSHdQ8_C>>e4C2#i$54)&7F&~1`a2YU>vk1Q<} zd3fM*M)`MU9HFWhd{o(guWB0ru%RFB=X+HbnJx2Z);|iGd%pJ(v=z{0#_|Lwi@zX) zG^#RsjTp|TY7&>a{aOJvAguIcd}MFZs?SM?y~6Qs@-ScDI9j7Vd6()7XErMjAAy0V zXSYm;40BReSb$-Az_t94*Vk~!xCo46{GXoCYAGs4^Xl)~2!dY?^p+q4*VB(}1GM0H z38{u*)CFQ)qwDO2ry8*|>_4ss;#0`^(C(1^Ik@Y9TGQmH5kFWE$f`JF@b5h$3 zu~VR|Kp>SiZ=%7ke}UrSN0|McuaKz${LH93M4KcO+a)Yugtnr>S{7q_#yGD;7kY*C|B zD9|*)i}=Tp}7~Ac3Mbw`iqNT=|y3eLl zpOSV_1jQv(Ry;tFoUZ+R$-fj5nTb*N@!4KJc-^IfWeTvHZ&s8OOj_{+#Y zQWDLB*Gx4@OB3S8We+`evh#RvuUbV$5QUwF>Ncc%$gh88tR@onNpQjipQ&^xIKWQ8 zClb2)Hai>a3F!Y1c>;hiEhtAo-KMFtQ*DJDg>B#*#wG*)xC+qy10)GyVEWm?7|{%3 zv~+-60UIa+TUvx3o$vU>l=;Ya+kpbiGGLccRMbU+WORrAihm~`bQEtI)jHumL5nvm z4_V8?m-aCsb{cu!cpgE6aoucI>fLYKBTMzx8su_JsF%og1FUw2F7!|%|W4H;) zt@NJ=I8#U{%l`Y^HZK4T{(TSm!u-D9+o|RXC;We2GhiZe6|+h+=qtRY7QTk9Ep&@_D$Zo zmH%iRnK}U7UEYBh8q*p@?Tav`@P*^?E2UNm&dvC!sN$)!b3=P;_i}c=_o%hCuZcli z(L!i$p%n?{-s8;XBqr9}#vim*Jm9Ucc01?!XD#8Qo~>^#>m2%$Ss}@j$O-C65W38M z)alB}=3?r@NphPjH-f5iNx%De6-2BAf_YotbamLlS2roj%Q~Jq&Nw=~uy09maXFMa z)fp;8yr`mDO0|lMm#=q4FEfjWkn?WQz7-$X_Wd_|VKItxN)?FyrD|J?pw;n46%j2B zK2C_paJfYe2@;?~7SCn@wi8jnp#2bI9c*wcj8)DG>bxpRGe`y$td|HIA+PhTt}gX8 zDH7mbBBdKeH6$&De0b#efVIzT7A#bc!u%(Bc*JTgrf|cVZI$*h4Q>L(6%rnsvewGf z+>-*XU28j53dIbsdz+i3OB|Q|leGMY9E*s_$gsdt1P5E799$vLV(dUJ3RziMdL|^Q zV-MppUFvJwZSq?uMir_@vtGt^hAb(#+^CGsJd(bQj&x2+uX*zZ{ZJ4BR$o1dcG`+5 zeq#tC83M9H-MEh;h2k6zjH9P=LaBk^)>k$0jgocziEsu*g9HAUn2rr$5L~5q$+>gk zm0nVssB;M5j#}BWM~1_vWJdjGx#wfLZ%piNY&;@(>|^_ko`!}ggB=|5$7`!Ft|i>= zp0u~0vFdGpfzYZD@{oqHMzf5fkZy_yRKaMKFVNKm3`2Y|8^)SyM3~t&UptsR(yA^R zRP2t+HjMX<0Gb1q#ER>0ECCHzUDMaJ&83FqbGKP(y_h70b=#Uv&1t?b53+XMi)I6t z$*|JZcOdL-Mz^WMKP_-oNq<)LNkmztsgxQ3-Ye}mHkyP*-d@mrqvZI_Mh|WZMlv?6 zse{^U$vT}#J6ySXRr_jR^JHQ+tfu=n>61@fu0A%EeM6~KUV*k)b ztf!Jo($}QBtI%rMT^rV5nw*eF=t4H1>4-QzBVPw^u#)c5WG-JbsjXnV)`N#i-LWIw zGNz`wdTe<3R}cJs=&M9nsgC&MDVD3`-bB}ipzR6*8FQ0%_3*T537ePk$=&mIa*Gx5 zE#xxMO-tmhLz)idsX}MZHk!7ulzt})d(QnbEOq5h_tpKZ+&(QQp8%L{sF)nz6HS99 zfZv`xd9vFt(_LuJhR{ja9z}I@|UB;2!&hKT>Q|KJfl-&nA%X*9+-ytf$s1O zi(5`RRyM+{G?vzBN-Ly5f!WKU7AYtxJt6Kt2e1AB`SX0=Pj`g=lnJ67Tkku(a7@!0 zBA*w|uJEH>tZlQa`gDcxibnF-+`#P@EsPBmDF+7foZey4EG0e_%S9Om5yy|uYS;`S zYaJZQBMuJYy|_002~+e!GA+sSt*wPaiRN)z@BpGQXLB;{mc5*GSDne}v-3z5jDT5a z#csKTf=0h=dl%f3>_GXsQcWZx6fxRL@M41dnhw*zJ49Z#a`_s151AdMFdeL=P@C_+O=jcsV%S_M7k*0mjVq8vb zgJU!J29aI~c%}A0@bIhkGC`*6?Gv(f #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..7cb5ef66d --- /dev/null +++ b/networks/nova/tabular_weak_rates.H @@ -0,0 +1,32 @@ +#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, const amrex::Real rhoy, + 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..94a7e0bcb 100644 --- a/networks/nova/temperature_table_rates.H +++ b/networks/nova/temperature_table_rates.H @@ -16,7 +16,7 @@ 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) { 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..3d40e9408 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 @@ -104,7 +99,7 @@ void evaluate_rates(const burn_t& state, // 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 +111,7 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -129,19 +124,22 @@ void evaluate_rates(const burn_t& state, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. - fill_derived_rates(tfactors, rate_eval); + derived_rates::fill_rates(tfactors, rate_eval); + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + // We do this after DerivedRate in case the branching depends + // on a derived rate. + branched_rates::fill_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; + // Fill approximate rates - rate_eval.enuc_weak = 0.0_rt; + approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); } @@ -193,6 +191,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; @@ -218,24 +217,24 @@ void rhs_nuc(const burn_t& state, 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)); } @@ -296,76 +295,76 @@ void jac_nuc(const burn_t& state, 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..6a8556dfc --- /dev/null +++ b/networks/partition_test/branched_rates.H @@ -0,0 +1,31 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_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..010e15cd4 100644 --- a/networks/partition_test/derived_rates.H +++ b/networks/partition_test/derived_rates.H @@ -7,244 +7,248 @@ #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(const tf_t& tfactors, T& rate_eval) + { - amrex::ignore_unused(tfactors); - amrex::ignore_unused(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..9373203e5 100644 --- a/networks/partition_test/modified_rates.H +++ b/networks/partition_test/modified_rates.H @@ -12,11 +12,12 @@ namespace modified_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..f1cd9a44d 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-22-g7128998de 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..7cb5ef66d --- /dev/null +++ b/networks/partition_test/tabular_weak_rates.H @@ -0,0 +1,32 @@ +#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, const amrex::Real rhoy, + 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..94a7e0bcb 100644 --- a/networks/partition_test/temperature_table_rates.H +++ b/networks/partition_test/temperature_table_rates.H @@ -16,7 +16,7 @@ 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) { 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..cdbf184d8 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 @@ -3074,7 +3069,7 @@ void evaluate_rates(const burn_t& state, // 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 +3081,7 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -3099,1366 +3094,22 @@ void evaluate_rates(const burn_t& state, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. - 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); + derived_rates::fill_rates(tfactors, rate_eval); - 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); + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + // We do this after DerivedRate in case the branching depends + // on a derived rate. + branched_rates::fill_rates(tfactors, rate_eval); - 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); + // Fill approximate rates - 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); + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); } @@ -4535,1037 +3186,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 +3383,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; } @@ -6069,3025 +3878,3024 @@ void rhs_nuc(const burn_t& state, 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)); } @@ -9148,991 +6956,991 @@ void jac_nuc(const burn_t& state, 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 +7951,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 +8249,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 +8577,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 +9386,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 +9716,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 +9745,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 +10046,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 +10057,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 +10077,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 +10374,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 +10699,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 +10734,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 +11030,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 +11054,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 +11065,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 +11359,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 +11378,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 +11401,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 +11426,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 +11437,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 +11454,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 +11472,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 +11697,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 +11721,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 +11747,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 +12028,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 +12054,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 +12079,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 +12359,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 +12382,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 +12408,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 +12689,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 +12715,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 +12743,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 +13024,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 +13052,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 +13078,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 +13357,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 +13390,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 +13410,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 +13686,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 +13713,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 +13722,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 +13743,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 +14018,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 +14045,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 +14079,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 +14102,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 +14113,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 +14131,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 +14356,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 +14387,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 +14401,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 +14422,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 +14688,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 +14719,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 +14735,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 +14755,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 +15019,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 +15054,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 +15085,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 +15351,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 +15386,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 +15422,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 +15687,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 +15724,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 +15757,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 +16020,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 +16059,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 +16071,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 +16091,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 +16350,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 +16391,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 +16403,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 +16424,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 +16682,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 +16709,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 +16726,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 +16760,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 +16779,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 +16794,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 +17019,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 +17064,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 +17081,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 +17100,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 +17352,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 +17399,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 +17415,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 +17433,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 +17683,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 +17732,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 +17763,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 +18015,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 +18066,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 +18099,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 +18350,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 +18404,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 +18435,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 +18684,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 +18742,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 +18754,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 +18772,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 +19015,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 +19042,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 +19059,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 +19076,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 +19108,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 +19350,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 +19411,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 +19443,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 +19683,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 +19746,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 +19776,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 +20014,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 +20079,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 +20105,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 +20345,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 +20412,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 +20440,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 +20449,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 +20679,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 +20706,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 +20723,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 +20750,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 +20776,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 +20785,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 +21013,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 +21040,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 +21074,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 +21089,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 +21122,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 +21348,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 +21423,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 +21449,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 +21457,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 +21682,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 +21759,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 +21784,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 +21792,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 +22015,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 +22104,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 +22117,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 +22129,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 +22345,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 +22436,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 +22448,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 +22460,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 +22674,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 +22753,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 +22773,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 +22785,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 +23005,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 +23086,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 +23119,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 +23128,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 +23338,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 +23365,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 +23399,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 +23424,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 +23458,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 +23467,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 +23675,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 +23762,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 +23794,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 +23803,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 +24009,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 +24098,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 +24112,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 +24128,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 +24137,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 +24341,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 +24426,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 +24438,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 +24468,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 +24674,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 +24761,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 +24773,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 +24797,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 +24805,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 +25010,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 +25099,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 +25111,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 +25134,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 +25142,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 +25345,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 +25436,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 +25448,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 +25457,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 +25470,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 +25482,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 +25678,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 +25771,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 +25782,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 +25791,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 +25803,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 +25815,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 +26009,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 +26104,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 +26116,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 +26128,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 +26140,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 +26340,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 +26437,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 +26449,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 +26474,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 +26483,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 +26673,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 +26772,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 +26811,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 +26820,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 +27008,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 +27109,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 +27149,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 +27158,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 +27344,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 +27447,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 +27468,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 +27484,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 +27493,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 +27677,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 +27782,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 +27794,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 +27824,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 +28010,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 +28117,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 +28129,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 +28153,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 +28161,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 +28346,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 +28455,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 +28467,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 +28490,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 +28498,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 +28681,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 +28792,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 +28804,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 +28813,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 +28826,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 +28838,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 +29014,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 +29127,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 +29138,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 +29147,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 +29159,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 +29171,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 +29345,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 +29460,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 +29472,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 +29484,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 +29496,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 +29675,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 +29792,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 +29804,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 +29829,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 +30006,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 +30125,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 +30164,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 +30340,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 +30461,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 +30501,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 +30514,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 +30676,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 +30799,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 +30820,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 +30836,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 +30849,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 +31009,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 +31134,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 +31146,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 +31179,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 +31341,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 +31468,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 +31480,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 +31514,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 +31527,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 +31675,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 +31804,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 +31816,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 +31850,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 +31863,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 +32009,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 +32140,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 +32152,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 +32161,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 +32178,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 +32186,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 +32199,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 +32343,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 +32476,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 +32487,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 +32496,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 +32513,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 +32521,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 +32534,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 +32676,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 +32829,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 +32846,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 +32854,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 +32867,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 +33007,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 +33162,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 +33179,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 +33187,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 +33200,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 +33338,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 +33495,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 +33512,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 +33532,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 +33668,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 +33827,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 +33843,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 +33863,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 +33996,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 +34135,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 +34164,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 +34185,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 +34198,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 +34330,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 +34471,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 +34498,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 +34515,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 +34523,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 +34536,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 +34666,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 +34809,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 +34835,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 +34852,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 +34860,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 +34873,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 +35001,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 +35152,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 +35171,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 +35188,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 +35196,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 +35209,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 +35335,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 +35488,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 +35507,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 +35524,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 +35532,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 +35545,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 +35669,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 +35824,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 +35843,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 +35860,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 +35868,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 +35881,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 +36003,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 +36160,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 +36178,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 +36194,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 +36214,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 +36333,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 +36478,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 +36498,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 +36514,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 +36534,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 +36664,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 +36811,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 +36831,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 +36845,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 +36869,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 +36880,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 +36998,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 +37147,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 +37163,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 +37182,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 +37199,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 +37207,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 +37218,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 +37334,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 +37485,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 +37501,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 +37520,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 +37537,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 +37545,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 +37556,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 +37670,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 +37823,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 +37839,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 +37858,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 +37875,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 +37883,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 +37894,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 +38006,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 +38161,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 +38177,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 +38196,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 +38213,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 +38221,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 +38232,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 +38342,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 +38499,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 +38515,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 +38533,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 +38550,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 +38568,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 +38676,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 +38835,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 +38851,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 +38868,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 +38884,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 +38902,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 +39007,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 +39170,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 +39187,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 +39203,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 +39221,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 +39337,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 +39500,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 +39516,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 +39535,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 +39557,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 +39568,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 +39672,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 +39837,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 +39853,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 +39872,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 +39887,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 +39895,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 +39906,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 +40008,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 +40175,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 +40191,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 +40210,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 +40225,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 +40233,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 +40244,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 +40344,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 +40513,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 +40529,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 +40548,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 +40563,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 +40571,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 +40582,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 +40680,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 +40851,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 +40867,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 +40886,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 +40901,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 +40909,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 +40920,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 +41016,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 +41189,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 +41205,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 +41223,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 +41237,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 +41255,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 +41348,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 +41525,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 +41545,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 +41559,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 +41577,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 +41679,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 +41858,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 +41874,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 +41891,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 +41913,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 +41922,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 +42014,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 +42195,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 +42211,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 +42228,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 +42243,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 +42251,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 +42260,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 +42350,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 +42533,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 +42549,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 +42566,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 +42581,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 +42589,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 +42598,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 +42686,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 +42871,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 +42887,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 +42904,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 +42919,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 +42927,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 +42936,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 +43022,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 +43209,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 +43225,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 +43241,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 +43256,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 +43272,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 +43356,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 +43545,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 +43561,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 +43576,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 +43590,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 +43606,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 +43688,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 +43881,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 +43899,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 +43913,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 +43929,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 +43942,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 +44020,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 +44215,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 +44229,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 +44246,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 +44266,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 +44279,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 +44355,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 +44552,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 +44566,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 +44583,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 +44596,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 +44604,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 +44617,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 +44691,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 +44890,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 +44904,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 +44921,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 +44934,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 +44942,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 +44955,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 +45027,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 +45228,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 +45242,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 +45259,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 +45272,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 +45280,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 +45293,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 +45363,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 +45566,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 +45580,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 +45596,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 +45608,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 +45616,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 +45629,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 +45697,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 +45904,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 +45922,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 +45934,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 +45955,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 +46029,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 +46238,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 +46252,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 +46284,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 +46292,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 +46301,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 +46365,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 +46576,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 +46590,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 +46622,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 +46630,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 +46639,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 +46701,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 +46914,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 +46928,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 +46960,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 +46968,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 +46977,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 +47037,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 +47252,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 +47266,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 +47280,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 +47297,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 +47305,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 +47314,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 +47372,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 +47589,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 +47603,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 +47616,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 +47633,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 +47649,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 +47705,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 +47924,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 +47937,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 +47950,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 +47966,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 +47982,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 +48036,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 +48257,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 +48270,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 +48286,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 +48302,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 +48366,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 +48587,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 +48603,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 +48617,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 +48636,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 +48653,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 +48699,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 +48922,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 +48934,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 +48953,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 +48973,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 +48990,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 +49034,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 +49259,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 +49271,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 +49290,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 +49303,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 +49311,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 +49328,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 +49370,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 +49597,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 +49609,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 +49628,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 +49641,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 +49649,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 +49666,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 +49706,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 +49935,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 +49947,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 +49966,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 +49979,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 +49987,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 +50004,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 +50042,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 +50273,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 +50284,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 +50302,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 +50314,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 +50322,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 +50339,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 +50375,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 +50608,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 +50624,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 +50641,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 +50666,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 +50681,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 +50709,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 +50944,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 +50960,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 +50996,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 +51004,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 +51019,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 +51045,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 +51282,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 +51298,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 +51334,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 +51342,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 +51353,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 +51382,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 +51621,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 +51637,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 +51673,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 +51681,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 +51696,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 +51718,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 +51959,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 +51975,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 +51989,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 +52010,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 +52018,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 +52033,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 +52053,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 +52296,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 +52312,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 +52325,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 +52346,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 +52354,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 +52369,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 +52387,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 +52632,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 +52647,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 +52660,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 +52681,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 +52689,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 +52704,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 +52720,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 +52993,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 +53014,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 +53036,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 +53049,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 +53323,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 +53343,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 +53375,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 +53622,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 +53638,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 +53658,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 +53680,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 +53705,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 +53954,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 +53970,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 +53988,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 +54014,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 +54038,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 +54289,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 +54301,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 +54324,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 +54343,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 +54351,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 +54362,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 +54374,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 +54627,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 +54639,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 +54662,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 +54681,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 +54689,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 +54700,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 +54710,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 +54965,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 +54977,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 +55000,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 +55019,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 +55027,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 +55038,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 +55302,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 +55314,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 +55337,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 +55356,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 +55364,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 +55379,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 +55638,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 +55649,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 +55672,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 +55691,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 +55699,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 +55712,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 +55983,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 +56006,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 +56025,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 +56043,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 +56316,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 +56338,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 +56356,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 +56372,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 +56633,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 +56654,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 +56672,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 +56690,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 +56702,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 +56963,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 +56983,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 +57004,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 +57025,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 +57299,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 +57319,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 +57340,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 +57362,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 +57635,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 +57655,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 +57676,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 +57691,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 +57703,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 +57970,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 +57990,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 +58011,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 +58026,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 +58036,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 +58305,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 +58325,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 +58346,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 +58361,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 +58639,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 +58659,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 +58680,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 +58699,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 +58972,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 +58992,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 +59012,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 +59028,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 +59309,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 +59327,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 +59346,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 +59359,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 +59642,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 +59660,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 +59677,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 +59977,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 +59995,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 +60012,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 +60320,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 +60338,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 +60651,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 +60669,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..6a8556dfc --- /dev/null +++ b/networks/sn160/branched_rates.H @@ -0,0 +1,31 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_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..a5d72f80f 100644 --- a/networks/sn160/derived_rates.H +++ b/networks/sn160/derived_rates.H @@ -7,21 +7,25 @@ #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(const tf_t& tfactors, T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + amrex::ignore_unused(tfactors); + amrex::ignore_unused(rate_eval); + [[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..9373203e5 100644 --- a/networks/sn160/modified_rates.H +++ b/networks/sn160/modified_rates.H @@ -12,11 +12,12 @@ namespace modified_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..f1cd9a44d 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-22-g7128998de 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..a6551c848 --- /dev/null +++ b/networks/sn160/tabular_weak_rates.H @@ -0,0 +1,1379 @@ +#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, const amrex::Real rhoy, + 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..94a7e0bcb 100644 --- a/networks/sn160/temperature_table_rates.H +++ b/networks/sn160/temperature_table_rates.H @@ -16,7 +16,7 @@ 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) { From d035bcf37ece691238b7439362a52c096c13f21d Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Thu, 27 Aug 2026 15:50:04 -0400 Subject: [PATCH 3/7] missing --- .../C-burn-simple/branched_rates.H | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 networks/ignition_reaclib/C-burn-simple/branched_rates.H 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..6a8556dfc --- /dev/null +++ b/networks/ignition_reaclib/C-burn-simple/branched_rates.H @@ -0,0 +1,31 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_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 From 9cf4e3b2ee0d7905e0427f099ac32010eefebe29 Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Fri, 28 Aug 2026 15:08:50 -0400 Subject: [PATCH 4/7] update --- networks/CNO_extras/pynucastro-info.txt | 2 +- networks/CNO_extras/tabular_weak_rates.H | 5 +++-- networks/ECSN/pynucastro-info.txt | 2 +- networks/ECSN/tabular_weak_rates.H | 5 +++-- networks/he-burn/ase-iron-starlib/pynucastro-info.txt | 2 +- networks/he-burn/ase-iron-starlib/tabular_weak_rates.H | 5 +++-- networks/he-burn/ase-iron/pynucastro-info.txt | 2 +- networks/he-burn/ase-iron/tabular_weak_rates.H | 5 +++-- networks/he-burn/ase-test/pynucastro-info.txt | 2 +- networks/he-burn/ase-test/tabular_weak_rates.H | 5 +++-- networks/he-burn/ase/pynucastro-info.txt | 2 +- networks/he-burn/ase/tabular_weak_rates.H | 5 +++-- networks/he-burn/cno-he-burn-33a/pynucastro-info.txt | 2 +- networks/he-burn/cno-he-burn-33a/tabular_weak_rates.H | 5 +++-- networks/he-burn/cno-he-burn-34am/pynucastro-info.txt | 2 +- networks/he-burn/cno-he-burn-34am/tabular_weak_rates.H | 5 +++-- networks/he-burn/he-burn-19am/pynucastro-info.txt | 2 +- networks/he-burn/he-burn-19am/tabular_weak_rates.H | 5 +++-- networks/he-burn/he-burn-28amnp/pynucastro-info.txt | 2 +- networks/he-burn/he-burn-28amnp/tabular_weak_rates.H | 5 +++-- networks/he-burn/he-burn-33am/pynucastro-info.txt | 2 +- networks/he-burn/he-burn-33am/tabular_weak_rates.H | 5 +++-- networks/ignition_reaclib/C-burn-simple/pynucastro-info.txt | 2 +- networks/ignition_reaclib/C-burn-simple/tabular_weak_rates.H | 5 +++-- networks/ignition_reaclib/URCA-medium/pynucastro-info.txt | 2 +- networks/ignition_reaclib/URCA-medium/tabular_weak_rates.H | 5 +++-- networks/ignition_reaclib/URCA-simple/pynucastro-info.txt | 2 +- networks/ignition_reaclib/URCA-simple/tabular_weak_rates.H | 5 +++-- networks/nova-li/pynucastro-info.txt | 2 +- networks/nova-li/tabular_weak_rates.H | 5 +++-- networks/nova/pynucastro-info.txt | 2 +- networks/nova/tabular_weak_rates.H | 5 +++-- networks/partition_test/pynucastro-info.txt | 2 +- networks/partition_test/tabular_weak_rates.H | 5 +++-- networks/sn160/pynucastro-info.txt | 2 +- networks/sn160/tabular_weak_rates.H | 5 +++-- 36 files changed, 72 insertions(+), 54 deletions(-) diff --git a/networks/CNO_extras/pynucastro-info.txt b/networks/CNO_extras/pynucastro-info.txt index f1cd9a44d..f595c64e7 100644 --- a/networks/CNO_extras/pynucastro-info.txt +++ b/networks/CNO_extras/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-22-g7128998de +pynucastro version: 3.0.0-25-g1299feccc diff --git a/networks/CNO_extras/tabular_weak_rates.H b/networks/CNO_extras/tabular_weak_rates.H index b3987706f..f5828f9de 100644 --- a/networks/CNO_extras/tabular_weak_rates.H +++ b/networks/CNO_extras/tabular_weak_rates.H @@ -15,8 +15,9 @@ namespace tabular_weak_rates { template AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates([[maybe_unused]] const amrex::Real temp, const amrex::Real rhoy, - const amrex::Array1D& Y, + 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) { diff --git a/networks/ECSN/pynucastro-info.txt b/networks/ECSN/pynucastro-info.txt index f1cd9a44d..f595c64e7 100644 --- a/networks/ECSN/pynucastro-info.txt +++ b/networks/ECSN/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-22-g7128998de +pynucastro version: 3.0.0-25-g1299feccc diff --git a/networks/ECSN/tabular_weak_rates.H b/networks/ECSN/tabular_weak_rates.H index 3a719c7ed..f2d866fe8 100644 --- a/networks/ECSN/tabular_weak_rates.H +++ b/networks/ECSN/tabular_weak_rates.H @@ -15,8 +15,9 @@ namespace tabular_weak_rates { template AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates([[maybe_unused]] const amrex::Real temp, const amrex::Real rhoy, - const amrex::Array1D& Y, + 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) { diff --git a/networks/he-burn/ase-iron-starlib/pynucastro-info.txt b/networks/he-burn/ase-iron-starlib/pynucastro-info.txt index f1cd9a44d..f595c64e7 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: 3.0.0-22-g7128998de +pynucastro version: 3.0.0-25-g1299feccc diff --git a/networks/he-burn/ase-iron-starlib/tabular_weak_rates.H b/networks/he-burn/ase-iron-starlib/tabular_weak_rates.H index 0416f23be..774628385 100644 --- a/networks/he-burn/ase-iron-starlib/tabular_weak_rates.H +++ b/networks/he-burn/ase-iron-starlib/tabular_weak_rates.H @@ -15,8 +15,9 @@ namespace tabular_weak_rates { template AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates([[maybe_unused]] const amrex::Real temp, const amrex::Real rhoy, - const amrex::Array1D& Y, + 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) { diff --git a/networks/he-burn/ase-iron/pynucastro-info.txt b/networks/he-burn/ase-iron/pynucastro-info.txt index f1cd9a44d..f595c64e7 100644 --- a/networks/he-burn/ase-iron/pynucastro-info.txt +++ b/networks/he-burn/ase-iron/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-22-g7128998de +pynucastro version: 3.0.0-25-g1299feccc diff --git a/networks/he-burn/ase-iron/tabular_weak_rates.H b/networks/he-burn/ase-iron/tabular_weak_rates.H index 0416f23be..774628385 100644 --- a/networks/he-burn/ase-iron/tabular_weak_rates.H +++ b/networks/he-burn/ase-iron/tabular_weak_rates.H @@ -15,8 +15,9 @@ namespace tabular_weak_rates { template AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates([[maybe_unused]] const amrex::Real temp, const amrex::Real rhoy, - const amrex::Array1D& Y, + 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) { diff --git a/networks/he-burn/ase-test/pynucastro-info.txt b/networks/he-burn/ase-test/pynucastro-info.txt index f1cd9a44d..f595c64e7 100644 --- a/networks/he-burn/ase-test/pynucastro-info.txt +++ b/networks/he-burn/ase-test/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-22-g7128998de +pynucastro version: 3.0.0-25-g1299feccc diff --git a/networks/he-burn/ase-test/tabular_weak_rates.H b/networks/he-burn/ase-test/tabular_weak_rates.H index 7cb5ef66d..797530335 100644 --- a/networks/he-burn/ase-test/tabular_weak_rates.H +++ b/networks/he-burn/ase-test/tabular_weak_rates.H @@ -15,8 +15,9 @@ namespace tabular_weak_rates { template AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates([[maybe_unused]] const amrex::Real temp, const amrex::Real rhoy, - const amrex::Array1D& Y, + 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) { diff --git a/networks/he-burn/ase/pynucastro-info.txt b/networks/he-burn/ase/pynucastro-info.txt index f1cd9a44d..f595c64e7 100644 --- a/networks/he-burn/ase/pynucastro-info.txt +++ b/networks/he-burn/ase/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-22-g7128998de +pynucastro version: 3.0.0-25-g1299feccc diff --git a/networks/he-burn/ase/tabular_weak_rates.H b/networks/he-burn/ase/tabular_weak_rates.H index 7cb5ef66d..797530335 100644 --- a/networks/he-burn/ase/tabular_weak_rates.H +++ b/networks/he-burn/ase/tabular_weak_rates.H @@ -15,8 +15,9 @@ namespace tabular_weak_rates { template AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates([[maybe_unused]] const amrex::Real temp, const amrex::Real rhoy, - const amrex::Array1D& Y, + 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) { 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 f1cd9a44d..f595c64e7 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: 3.0.0-22-g7128998de +pynucastro version: 3.0.0-25-g1299feccc 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 index 0375af9a9..d06093b4b 100644 --- a/networks/he-burn/cno-he-burn-33a/tabular_weak_rates.H +++ b/networks/he-burn/cno-he-burn-33a/tabular_weak_rates.H @@ -15,8 +15,9 @@ namespace tabular_weak_rates { template AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates([[maybe_unused]] const amrex::Real temp, const amrex::Real rhoy, - const amrex::Array1D& Y, + 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) { 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 f1cd9a44d..f595c64e7 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: 3.0.0-22-g7128998de +pynucastro version: 3.0.0-25-g1299feccc 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 index e269f697c..cde040f68 100644 --- a/networks/he-burn/cno-he-burn-34am/tabular_weak_rates.H +++ b/networks/he-burn/cno-he-burn-34am/tabular_weak_rates.H @@ -15,8 +15,9 @@ namespace tabular_weak_rates { template AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates([[maybe_unused]] const amrex::Real temp, const amrex::Real rhoy, - const amrex::Array1D& Y, + 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) { diff --git a/networks/he-burn/he-burn-19am/pynucastro-info.txt b/networks/he-burn/he-burn-19am/pynucastro-info.txt index f1cd9a44d..f595c64e7 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: 3.0.0-22-g7128998de +pynucastro version: 3.0.0-25-g1299feccc diff --git a/networks/he-burn/he-burn-19am/tabular_weak_rates.H b/networks/he-burn/he-burn-19am/tabular_weak_rates.H index 7cb5ef66d..797530335 100644 --- a/networks/he-burn/he-burn-19am/tabular_weak_rates.H +++ b/networks/he-burn/he-burn-19am/tabular_weak_rates.H @@ -15,8 +15,9 @@ namespace tabular_weak_rates { template AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates([[maybe_unused]] const amrex::Real temp, const amrex::Real rhoy, - const amrex::Array1D& Y, + 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) { diff --git a/networks/he-burn/he-burn-28amnp/pynucastro-info.txt b/networks/he-burn/he-burn-28amnp/pynucastro-info.txt index f1cd9a44d..f595c64e7 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: 3.0.0-22-g7128998de +pynucastro version: 3.0.0-25-g1299feccc diff --git a/networks/he-burn/he-burn-28amnp/tabular_weak_rates.H b/networks/he-burn/he-burn-28amnp/tabular_weak_rates.H index 0416f23be..774628385 100644 --- a/networks/he-burn/he-burn-28amnp/tabular_weak_rates.H +++ b/networks/he-burn/he-burn-28amnp/tabular_weak_rates.H @@ -15,8 +15,9 @@ namespace tabular_weak_rates { template AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates([[maybe_unused]] const amrex::Real temp, const amrex::Real rhoy, - const amrex::Array1D& Y, + 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) { diff --git a/networks/he-burn/he-burn-33am/pynucastro-info.txt b/networks/he-burn/he-burn-33am/pynucastro-info.txt index f1cd9a44d..f595c64e7 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: 3.0.0-22-g7128998de +pynucastro version: 3.0.0-25-g1299feccc diff --git a/networks/he-burn/he-burn-33am/tabular_weak_rates.H b/networks/he-burn/he-burn-33am/tabular_weak_rates.H index b47bb5fd2..e0a9d7f8f 100644 --- a/networks/he-burn/he-burn-33am/tabular_weak_rates.H +++ b/networks/he-burn/he-burn-33am/tabular_weak_rates.H @@ -15,8 +15,9 @@ namespace tabular_weak_rates { template AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates([[maybe_unused]] const amrex::Real temp, const amrex::Real rhoy, - const amrex::Array1D& Y, + 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) { diff --git a/networks/ignition_reaclib/C-burn-simple/pynucastro-info.txt b/networks/ignition_reaclib/C-burn-simple/pynucastro-info.txt index f1cd9a44d..f595c64e7 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: 3.0.0-22-g7128998de +pynucastro version: 3.0.0-25-g1299feccc diff --git a/networks/ignition_reaclib/C-burn-simple/tabular_weak_rates.H b/networks/ignition_reaclib/C-burn-simple/tabular_weak_rates.H index 9afa5d597..45c39fe2a 100644 --- a/networks/ignition_reaclib/C-burn-simple/tabular_weak_rates.H +++ b/networks/ignition_reaclib/C-burn-simple/tabular_weak_rates.H @@ -15,8 +15,9 @@ namespace tabular_weak_rates { template AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates([[maybe_unused]] const amrex::Real temp, const amrex::Real rhoy, - const amrex::Array1D& Y, + 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) { diff --git a/networks/ignition_reaclib/URCA-medium/pynucastro-info.txt b/networks/ignition_reaclib/URCA-medium/pynucastro-info.txt index f1cd9a44d..f595c64e7 100644 --- a/networks/ignition_reaclib/URCA-medium/pynucastro-info.txt +++ b/networks/ignition_reaclib/URCA-medium/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-22-g7128998de +pynucastro version: 3.0.0-25-g1299feccc diff --git a/networks/ignition_reaclib/URCA-medium/tabular_weak_rates.H b/networks/ignition_reaclib/URCA-medium/tabular_weak_rates.H index dcd1313c1..5f8c72f54 100644 --- a/networks/ignition_reaclib/URCA-medium/tabular_weak_rates.H +++ b/networks/ignition_reaclib/URCA-medium/tabular_weak_rates.H @@ -15,8 +15,9 @@ namespace tabular_weak_rates { template AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates([[maybe_unused]] const amrex::Real temp, const amrex::Real rhoy, - const amrex::Array1D& Y, + 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) { diff --git a/networks/ignition_reaclib/URCA-simple/pynucastro-info.txt b/networks/ignition_reaclib/URCA-simple/pynucastro-info.txt index f1cd9a44d..f595c64e7 100644 --- a/networks/ignition_reaclib/URCA-simple/pynucastro-info.txt +++ b/networks/ignition_reaclib/URCA-simple/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-22-g7128998de +pynucastro version: 3.0.0-25-g1299feccc diff --git a/networks/ignition_reaclib/URCA-simple/tabular_weak_rates.H b/networks/ignition_reaclib/URCA-simple/tabular_weak_rates.H index 73b3aeb7c..807192a06 100644 --- a/networks/ignition_reaclib/URCA-simple/tabular_weak_rates.H +++ b/networks/ignition_reaclib/URCA-simple/tabular_weak_rates.H @@ -15,8 +15,9 @@ namespace tabular_weak_rates { template AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates([[maybe_unused]] const amrex::Real temp, const amrex::Real rhoy, - const amrex::Array1D& Y, + 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) { diff --git a/networks/nova-li/pynucastro-info.txt b/networks/nova-li/pynucastro-info.txt index f1cd9a44d..f595c64e7 100644 --- a/networks/nova-li/pynucastro-info.txt +++ b/networks/nova-li/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-22-g7128998de +pynucastro version: 3.0.0-25-g1299feccc diff --git a/networks/nova-li/tabular_weak_rates.H b/networks/nova-li/tabular_weak_rates.H index 078140161..27e9af509 100644 --- a/networks/nova-li/tabular_weak_rates.H +++ b/networks/nova-li/tabular_weak_rates.H @@ -15,8 +15,9 @@ namespace tabular_weak_rates { template AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates([[maybe_unused]] const amrex::Real temp, const amrex::Real rhoy, - const amrex::Array1D& Y, + 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) { diff --git a/networks/nova/pynucastro-info.txt b/networks/nova/pynucastro-info.txt index f1cd9a44d..f595c64e7 100644 --- a/networks/nova/pynucastro-info.txt +++ b/networks/nova/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-22-g7128998de +pynucastro version: 3.0.0-25-g1299feccc diff --git a/networks/nova/tabular_weak_rates.H b/networks/nova/tabular_weak_rates.H index 7cb5ef66d..797530335 100644 --- a/networks/nova/tabular_weak_rates.H +++ b/networks/nova/tabular_weak_rates.H @@ -15,8 +15,9 @@ namespace tabular_weak_rates { template AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates([[maybe_unused]] const amrex::Real temp, const amrex::Real rhoy, - const amrex::Array1D& Y, + 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) { diff --git a/networks/partition_test/pynucastro-info.txt b/networks/partition_test/pynucastro-info.txt index f1cd9a44d..f595c64e7 100644 --- a/networks/partition_test/pynucastro-info.txt +++ b/networks/partition_test/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-22-g7128998de +pynucastro version: 3.0.0-25-g1299feccc diff --git a/networks/partition_test/tabular_weak_rates.H b/networks/partition_test/tabular_weak_rates.H index 7cb5ef66d..797530335 100644 --- a/networks/partition_test/tabular_weak_rates.H +++ b/networks/partition_test/tabular_weak_rates.H @@ -15,8 +15,9 @@ namespace tabular_weak_rates { template AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates([[maybe_unused]] const amrex::Real temp, const amrex::Real rhoy, - const amrex::Array1D& Y, + 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) { diff --git a/networks/sn160/pynucastro-info.txt b/networks/sn160/pynucastro-info.txt index f1cd9a44d..f595c64e7 100644 --- a/networks/sn160/pynucastro-info.txt +++ b/networks/sn160/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-22-g7128998de +pynucastro version: 3.0.0-25-g1299feccc diff --git a/networks/sn160/tabular_weak_rates.H b/networks/sn160/tabular_weak_rates.H index a6551c848..6b77d5b23 100644 --- a/networks/sn160/tabular_weak_rates.H +++ b/networks/sn160/tabular_weak_rates.H @@ -15,8 +15,9 @@ namespace tabular_weak_rates { template AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates([[maybe_unused]] const amrex::Real temp, const amrex::Real rhoy, - const amrex::Array1D& Y, + 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) { From 2559009f346d2e8c402f14e6d80a09c90b57ac29 Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Thu, 3 Sep 2026 07:39:18 -0400 Subject: [PATCH 5/7] more updates to sync with C++ changes --- networks/CNO_extras/actual_rhs.H | 27 +- networks/CNO_extras/branched_rates.H | 2 + networks/CNO_extras/derived_rates.H | 6 +- networks/CNO_extras/modified_rates.H | 2 + networks/CNO_extras/pynucastro-info.txt | 2 +- networks/CNO_extras/temperature_table_rates.H | 11 +- networks/ECSN/actual_rhs.H | 27 +- networks/ECSN/branched_rates.H | 2 + networks/ECSN/derived_rates.H | 6 +- networks/ECSN/modified_rates.H | 2 + networks/ECSN/pynucastro-info.txt | 2 +- networks/ECSN/temperature_table_rates.H | 11 +- .../he-burn/ase-iron-starlib/actual_network.H | 74 +- .../he-burn/ase-iron-starlib/actual_rhs.H | 27 +- .../he-burn/ase-iron-starlib/branched_rates.H | 2 + .../he-burn/ase-iron-starlib/derived_rates.H | 238 +++--- .../he-burn/ase-iron-starlib/modified_rates.H | 2 + .../ase-iron-starlib/pynucastro-info.txt | 2 +- .../temperature_table_rates.H | 685 +++++++++--------- networks/he-burn/ase-iron/actual_network.H | 70 +- networks/he-burn/ase-iron/actual_rhs.H | 27 +- networks/he-burn/ase-iron/branched_rates.H | 2 + networks/he-burn/ase-iron/derived_rates.H | 290 ++++---- networks/he-burn/ase-iron/modified_rates.H | 2 + networks/he-burn/ase-iron/pynucastro-info.txt | 2 +- networks/he-burn/ase-iron/reaclib_rates.H | 250 +++---- .../ase-iron/temperature_table_rates.H | 11 +- networks/he-burn/ase-test/actual_network.H | 86 +-- networks/he-burn/ase-test/actual_rhs.H | 27 +- networks/he-burn/ase-test/branched_rates.H | 2 + networks/he-burn/ase-test/derived_rates.H | 258 ++++--- networks/he-burn/ase-test/modified_rates.H | 2 + networks/he-burn/ase-test/pynucastro-info.txt | 2 +- networks/he-burn/ase-test/reaclib_rates.H | 330 ++++----- .../ase-test/temperature_table_rates.H | 11 +- networks/he-burn/ase/actual_network.H | 86 +-- networks/he-burn/ase/actual_rhs.H | 27 +- networks/he-burn/ase/branched_rates.H | 2 + networks/he-burn/ase/derived_rates.H | 258 ++++--- networks/he-burn/ase/modified_rates.H | 2 + networks/he-burn/ase/pynucastro-info.txt | 2 +- networks/he-burn/ase/reaclib_rates.H | 330 ++++----- .../he-burn/ase/temperature_table_rates.H | 11 +- .../he-burn/cno-he-burn-33a/actual_network.H | 86 +-- networks/he-burn/cno-he-burn-33a/actual_rhs.H | 27 +- .../he-burn/cno-he-burn-33a/branched_rates.H | 2 + .../he-burn/cno-he-burn-33a/derived_rates.H | 258 ++++--- .../he-burn/cno-he-burn-33a/modified_rates.H | 2 + .../cno-he-burn-33a/pynucastro-info.txt | 2 +- .../he-burn/cno-he-burn-33a/reaclib_rates.H | 330 ++++----- .../cno-he-burn-33a/temperature_table_rates.H | 11 +- .../he-burn/cno-he-burn-34am/actual_network.H | 86 +-- .../he-burn/cno-he-burn-34am/actual_rhs.H | 27 +- .../he-burn/cno-he-burn-34am/branched_rates.H | 2 + .../he-burn/cno-he-burn-34am/derived_rates.H | 258 ++++--- .../he-burn/cno-he-burn-34am/modified_rates.H | 2 + .../cno-he-burn-34am/pynucastro-info.txt | 2 +- .../he-burn/cno-he-burn-34am/reaclib_rates.H | 330 ++++----- .../temperature_table_rates.H | 11 +- .../he-burn/he-burn-19am/actual_network.H | 86 +-- networks/he-burn/he-burn-19am/actual_rhs.H | 27 +- .../he-burn/he-burn-19am/branched_rates.H | 2 + networks/he-burn/he-burn-19am/derived_rates.H | 258 ++++--- .../he-burn/he-burn-19am/modified_rates.H | 2 + .../he-burn/he-burn-19am/pynucastro-info.txt | 2 +- networks/he-burn/he-burn-19am/reaclib_rates.H | 330 ++++----- .../he-burn-19am/temperature_table_rates.H | 11 +- .../he-burn/he-burn-28amnp/actual_network.H | 70 +- networks/he-burn/he-burn-28amnp/actual_rhs.H | 27 +- .../he-burn/he-burn-28amnp/branched_rates.H | 2 + .../he-burn/he-burn-28amnp/derived_rates.H | 290 ++++---- .../he-burn/he-burn-28amnp/modified_rates.H | 2 + .../he-burn-28amnp/pynucastro-info.txt | 2 +- .../he-burn/he-burn-28amnp/reaclib_rates.H | 250 +++---- .../he-burn-28amnp/temperature_table_rates.H | 11 +- .../he-burn/he-burn-33am/actual_network.H | 46 +- networks/he-burn/he-burn-33am/actual_rhs.H | 27 +- .../he-burn/he-burn-33am/branched_rates.H | 2 + networks/he-burn/he-burn-33am/derived_rates.H | 168 +++-- .../he-burn/he-burn-33am/modified_rates.H | 2 + .../he-burn/he-burn-33am/pynucastro-info.txt | 2 +- networks/he-burn/he-burn-33am/reaclib_rates.H | 250 +++---- .../he-burn-33am/temperature_table_rates.H | 11 +- .../C-burn-simple/actual_rhs.H | 27 +- .../C-burn-simple/branched_rates.H | 2 + .../C-burn-simple/derived_rates.H | 6 +- .../C-burn-simple/modified_rates.H | 2 + .../C-burn-simple/pynucastro-info.txt | 2 +- .../C-burn-simple/temperature_table_rates.H | 11 +- .../ignition_reaclib/URCA-medium/actual_rhs.H | 27 +- .../URCA-medium/branched_rates.H | 2 + .../URCA-medium/derived_rates.H | 6 +- .../URCA-medium/modified_rates.H | 2 + .../URCA-medium/pynucastro-info.txt | 2 +- .../URCA-medium/temperature_table_rates.H | 11 +- .../ignition_reaclib/URCA-simple/actual_rhs.H | 27 +- .../URCA-simple/branched_rates.H | 2 + .../URCA-simple/derived_rates.H | 6 +- .../URCA-simple/modified_rates.H | 2 + .../URCA-simple/pynucastro-info.txt | 2 +- .../URCA-simple/temperature_table_rates.H | 11 +- networks/nova-li/actual_rhs.H | 27 +- networks/nova-li/branched_rates.H | 2 + networks/nova-li/derived_rates.H | 6 +- networks/nova-li/modified_rates.H | 2 + networks/nova-li/pynucastro-info.txt | 2 +- networks/nova-li/temperature_table_rates.H | 11 +- networks/nova/actual_rhs.H | 27 +- networks/nova/branched_rates.H | 2 + networks/nova/derived_rates.H | 6 +- networks/nova/modified_rates.H | 2 + networks/nova/pynucastro-info.txt | 2 +- networks/nova/temperature_table_rates.H | 11 +- networks/partition_test/actual_rhs.H | 27 +- networks/partition_test/branched_rates.H | 2 + networks/partition_test/derived_rates.H | 6 +- networks/partition_test/modified_rates.H | 2 + networks/partition_test/pynucastro-info.txt | 2 +- .../partition_test/temperature_table_rates.H | 11 +- networks/sn160/actual_rhs.H | 27 +- networks/sn160/branched_rates.H | 2 + networks/sn160/derived_rates.H | 6 +- networks/sn160/modified_rates.H | 2 + networks/sn160/pynucastro-info.txt | 2 +- networks/sn160/temperature_table_rates.H | 11 +- 125 files changed, 3443 insertions(+), 3443 deletions(-) diff --git a/networks/CNO_extras/actual_rhs.H b/networks/CNO_extras/actual_rhs.H index 83b4fea09..ffc1f2213 100644 --- a/networks/CNO_extras/actual_rhs.H +++ b/networks/CNO_extras/actual_rhs.H @@ -53,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; @@ -347,6 +349,8 @@ 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]] const amrex::Real rhoy = state.rho * state.y_e; @@ -363,34 +367,29 @@ void evaluate_rates(const burn_t& state, 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); // fill modified rates next -- these can have ReacLib or // 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 branched rates -- these can have ReacLib or - // TemperatureTabular/StarLib as the underlying rate or branches. - // We do this after DerivedRate in case the branching depends - // on a derived rate. - branched_rates::fill_rates(tfactors, rate_eval); - - // Fill approximate rates - approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); - tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); - } @@ -539,7 +538,7 @@ 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; @@ -751,9 +750,11 @@ 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_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; diff --git a/networks/CNO_extras/branched_rates.H b/networks/CNO_extras/branched_rates.H index 6a8556dfc..903382523 100644 --- a/networks/CNO_extras/branched_rates.H +++ b/networks/CNO_extras/branched_rates.H @@ -12,6 +12,8 @@ namespace branched_rates { + using namespace Rates; + using namespace temp_tabular; diff --git a/networks/CNO_extras/derived_rates.H b/networks/CNO_extras/derived_rates.H index 388b5c927..dedb635b0 100644 --- a/networks/CNO_extras/derived_rates.H +++ b/networks/CNO_extras/derived_rates.H @@ -2954,12 +2954,10 @@ namespace derived_rates { template 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; diff --git a/networks/CNO_extras/modified_rates.H b/networks/CNO_extras/modified_rates.H index 9373203e5..74c545a1b 100644 --- a/networks/CNO_extras/modified_rates.H +++ b/networks/CNO_extras/modified_rates.H @@ -12,6 +12,8 @@ namespace modified_rates { + using namespace Rates; + using namespace reaclib_rates; using namespace temp_tabular; diff --git a/networks/CNO_extras/pynucastro-info.txt b/networks/CNO_extras/pynucastro-info.txt index f595c64e7..14b944e65 100644 --- a/networks/CNO_extras/pynucastro-info.txt +++ b/networks/CNO_extras/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-25-g1299feccc +pynucastro version: 3.0.0-36-g5ade6bfb9 diff --git a/networks/CNO_extras/temperature_table_rates.H b/networks/CNO_extras/temperature_table_rates.H index 94a7e0bcb..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_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/actual_rhs.H b/networks/ECSN/actual_rhs.H index f0c34c357..42eb37814 100644 --- a/networks/ECSN/actual_rhs.H +++ b/networks/ECSN/actual_rhs.H @@ -53,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; @@ -157,6 +159,8 @@ 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]] const amrex::Real rhoy = state.rho * state.y_e; @@ -173,34 +177,29 @@ void evaluate_rates(const burn_t& state, 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); // fill modified rates next -- these can have ReacLib or // 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 branched rates -- these can have ReacLib or - // TemperatureTabular/StarLib as the underlying rate or branches. - // We do this after DerivedRate in case the branching depends - // on a derived rate. - branched_rates::fill_rates(tfactors, rate_eval); - - // Fill approximate rates - approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); - tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); - } @@ -290,7 +289,7 @@ 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; @@ -409,9 +408,11 @@ 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_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; diff --git a/networks/ECSN/branched_rates.H b/networks/ECSN/branched_rates.H index 6a8556dfc..903382523 100644 --- a/networks/ECSN/branched_rates.H +++ b/networks/ECSN/branched_rates.H @@ -12,6 +12,8 @@ namespace branched_rates { + using namespace Rates; + using namespace temp_tabular; diff --git a/networks/ECSN/derived_rates.H b/networks/ECSN/derived_rates.H index a5d72f80f..2d8da657a 100644 --- a/networks/ECSN/derived_rates.H +++ b/networks/ECSN/derived_rates.H @@ -15,12 +15,10 @@ namespace derived_rates { template 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; diff --git a/networks/ECSN/modified_rates.H b/networks/ECSN/modified_rates.H index 9373203e5..74c545a1b 100644 --- a/networks/ECSN/modified_rates.H +++ b/networks/ECSN/modified_rates.H @@ -12,6 +12,8 @@ namespace modified_rates { + using namespace Rates; + using namespace reaclib_rates; using namespace temp_tabular; diff --git a/networks/ECSN/pynucastro-info.txt b/networks/ECSN/pynucastro-info.txt index f595c64e7..14b944e65 100644 --- a/networks/ECSN/pynucastro-info.txt +++ b/networks/ECSN/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-25-g1299feccc +pynucastro version: 3.0.0-36-g5ade6bfb9 diff --git a/networks/ECSN/temperature_table_rates.H b/networks/ECSN/temperature_table_rates.H index 94a7e0bcb..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_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/actual_network.H b/networks/he-burn/ase-iron-starlib/actual_network.H index 26f66cfe3..3bcc6082a 100644 --- a/networks/he-burn/ase-iron-starlib/actual_network.H +++ b/networks/he-burn/ase-iron-starlib/actual_network.H @@ -339,17 +339,17 @@ namespace Rates 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_Ar36_starlib = 55, - k_Cl35_p_to_He4_S32_starlib = 56, + 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_Ca40_starlib = 58, - k_K39_p_to_He4_Ar36_starlib = 59, + 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_Ti44_starlib = 61, - k_Sc43_p_to_He4_Ca40_starlib = 62, + 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_Cr48_starlib = 64, - k_V47_p_to_He4_Ti44_starlib = 65, + 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, @@ -432,13 +432,13 @@ namespace Rates 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 : @@ -546,17 +546,17 @@ namespace Rates "Ni58_p_to_Cu59_starlib", // 52, "Cu59_n_to_He4_Co56_starlib", // 53, "S32_He4_to_Ar36_starlib", // 54, - "Cl35_p_to_Ar36_starlib", // 55, - "Cl35_p_to_He4_S32_starlib", // 56, + "Cl35_p_to_He4_S32_starlib", // 55, + "Cl35_p_to_Ar36_starlib", // 56, "Ar36_He4_to_Ca40_starlib", // 57, - "K39_p_to_Ca40_starlib", // 58, - "K39_p_to_He4_Ar36_starlib", // 59, + "K39_p_to_He4_Ar36_starlib", // 58, + "K39_p_to_Ca40_starlib", // 59, "Ca40_He4_to_Ti44_starlib", // 60, - "Sc43_p_to_Ti44_starlib", // 61, - "Sc43_p_to_He4_Ca40_starlib", // 62, + "Sc43_p_to_He4_Ca40_starlib", // 61, + "Sc43_p_to_Ti44_starlib", // 62, "Ti44_He4_to_Cr48_starlib", // 63, - "V47_p_to_Cr48_starlib", // 64, - "V47_p_to_He4_Ti44_starlib", // 65, + "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, @@ -639,12 +639,12 @@ namespace Rates "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 @@ -842,11 +842,11 @@ namespace Rates return starlib::prand(48); } - if constexpr (rate == k_Cl35_p_to_Ar36_starlib) { + if constexpr (rate == k_Cl35_p_to_He4_S32_starlib) { return starlib::prand(49); } - if constexpr (rate == k_Cl35_p_to_He4_S32_starlib) { + if constexpr (rate == k_Cl35_p_to_Ar36_starlib) { return starlib::prand(50); } @@ -854,11 +854,11 @@ namespace Rates return starlib::prand(51); } - if constexpr (rate == k_K39_p_to_Ca40_starlib) { + if constexpr (rate == k_K39_p_to_He4_Ar36_starlib) { return starlib::prand(52); } - if constexpr (rate == k_K39_p_to_He4_Ar36_starlib) { + if constexpr (rate == k_K39_p_to_Ca40_starlib) { return starlib::prand(53); } @@ -866,11 +866,11 @@ namespace Rates return starlib::prand(54); } - if constexpr (rate == k_Sc43_p_to_Ti44_starlib) { + if constexpr (rate == k_Sc43_p_to_He4_Ca40_starlib) { return starlib::prand(55); } - if constexpr (rate == k_Sc43_p_to_He4_Ca40_starlib) { + if constexpr (rate == k_Sc43_p_to_Ti44_starlib) { return starlib::prand(56); } @@ -878,11 +878,11 @@ namespace Rates return starlib::prand(57); } - if constexpr (rate == k_V47_p_to_Cr48_starlib) { + if constexpr (rate == k_V47_p_to_He4_Ti44_starlib) { return starlib::prand(58); } - if constexpr (rate == k_V47_p_to_He4_Ti44_starlib) { + if constexpr (rate == k_V47_p_to_Cr48_starlib) { return starlib::prand(59); } diff --git a/networks/he-burn/ase-iron-starlib/actual_rhs.H b/networks/he-burn/ase-iron-starlib/actual_rhs.H index 3a0c8491b..f43023629 100644 --- a/networks/he-burn/ase-iron-starlib/actual_rhs.H +++ b/networks/he-burn/ase-iron-starlib/actual_rhs.H @@ -53,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; @@ -467,6 +469,8 @@ 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]] const amrex::Real rhoy = state.rho * state.y_e; @@ -483,34 +487,29 @@ void evaluate_rates(const burn_t& state, 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); // fill modified rates next -- these can have ReacLib or // 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 branched rates -- these can have ReacLib or - // TemperatureTabular/StarLib as the underlying rate or branches. - // We do this after DerivedRate in case the branching depends - // on a derived rate. - branched_rates::fill_rates(tfactors, rate_eval); - - // Fill approximate rates - approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); - tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); - } @@ -636,7 +635,7 @@ 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; @@ -930,9 +929,11 @@ 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_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); diff --git a/networks/he-burn/ase-iron-starlib/branched_rates.H b/networks/he-burn/ase-iron-starlib/branched_rates.H index 6a8556dfc..903382523 100644 --- a/networks/he-burn/ase-iron-starlib/branched_rates.H +++ b/networks/he-burn/ase-iron-starlib/branched_rates.H @@ -12,6 +12,8 @@ namespace branched_rates { + using namespace Rates; + using namespace temp_tabular; diff --git a/networks/he-burn/ase-iron-starlib/derived_rates.H b/networks/he-burn/ase-iron-starlib/derived_rates.H index 0de295910..2c3ac2a65 100644 --- a/networks/he-burn/ase-iron-starlib/derived_rates.H +++ b/networks/he-burn/ase-iron-starlib/derived_rates.H @@ -3966,9 +3966,9 @@ namespace derived_rates { 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) { + 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; @@ -3981,37 +3981,37 @@ namespace derived_rates { n_log_pf = 0.0_rt; dn_log_pf_dT9 = 0.0_rt; + 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); + 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); - 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); - - 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); + Fe52_n_to_Fe53_starlib_data::log_t9, + Fe52_n_to_Fe53_starlib_data::log_rate); - auto p = Rates::get_p_random(); + 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); + Fe52_n_to_Fe53_starlib_data::log_t9, + Fe52_n_to_Fe53_starlib_data::sigma_rate); // Add rate uncertainty _rate += p * _sigma; // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -13.378418100002976 * 1.0e-9_rt / C::k_MeV; + constexpr amrex::Real Q_kBGK = -10.686718099998421 * 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 += 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] @@ -4032,9 +4032,9 @@ namespace derived_rates { 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) { + 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; @@ -4047,37 +4047,37 @@ namespace derived_rates { n_log_pf = 0.0_rt; dn_log_pf_dT9 = 0.0_rt; - 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); - 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); - 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 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; 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); + Fe53_n_to_Fe54_starlib_data::log_t9, + Fe53_n_to_Fe54_starlib_data::log_rate); - auto p = Rates::get_p_random(); + 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); + Fe53_n_to_Fe54_starlib_data::log_t9, + Fe53_n_to_Fe54_starlib_data::sigma_rate); // Add rate uncertainty _rate += p * _sigma; // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -10.686718099998421 * 1.0e-9_rt / C::k_MeV; + constexpr amrex::Real Q_kBGK = -13.378418100002976 * 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 += 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] @@ -4098,9 +4098,9 @@ namespace derived_rates { 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) { + 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; @@ -4113,37 +4113,37 @@ namespace derived_rates { n_log_pf = 0.0_rt; dn_log_pf_dT9 = 0.0_rt; - 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); - 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); - 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 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; 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); + Fe54_n_to_Fe55_starlib_data::log_t9, + Fe54_n_to_Fe55_starlib_data::log_rate); - auto p = Rates::get_p_random(); + 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); + Fe54_n_to_Fe55_starlib_data::log_t9, + Fe54_n_to_Fe55_starlib_data::sigma_rate); // Add rate uncertainty _rate += p * _sigma; // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -11.197078100005754 * 1.0e-9_rt / C::k_MeV; + constexpr amrex::Real Q_kBGK = -9.298118100000266 * 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 += 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] @@ -4164,9 +4164,9 @@ namespace derived_rates { 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) { + 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; @@ -4179,37 +4179,37 @@ namespace derived_rates { n_log_pf = 0.0_rt; dn_log_pf_dT9 = 0.0_rt; + 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); + 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); - 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); - - 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); + Fe55_n_to_Fe56_starlib_data::log_t9, + Fe55_n_to_Fe56_starlib_data::log_rate); - auto p = Rates::get_p_random(); + 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); + Fe55_n_to_Fe56_starlib_data::log_t9, + Fe55_n_to_Fe56_starlib_data::sigma_rate); // Add rate uncertainty _rate += p * _sigma; // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -9.298118100000266 * 1.0e-9_rt / C::k_MeV; + constexpr amrex::Real Q_kBGK = -11.197078100005754 * 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 += 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] @@ -4230,9 +4230,9 @@ namespace derived_rates { 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) { + 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; @@ -4245,37 +4245,37 @@ namespace derived_rates { n_log_pf = 0.0_rt; dn_log_pf_dT9 = 0.0_rt; + 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); + 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); - 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); - - 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); + Ni56_n_to_Ni57_starlib_data::log_t9, + Ni56_n_to_Ni57_starlib_data::log_rate); - auto p = Rates::get_p_random(); + 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); + Ni56_n_to_Ni57_starlib_data::log_t9, + Ni56_n_to_Ni57_starlib_data::sigma_rate); // Add rate uncertainty _rate += p * _sigma; // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -12.216218100000214 * 1.0e-9_rt / C::k_MeV; + constexpr amrex::Real Q_kBGK = -10.247718100005844 * 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 += 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] @@ -4296,9 +4296,9 @@ namespace derived_rates { 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) { + 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; @@ -4311,37 +4311,37 @@ namespace derived_rates { n_log_pf = 0.0_rt; dn_log_pf_dT9 = 0.0_rt; - 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); - 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); - 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 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; 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); + Ni57_n_to_Ni58_starlib_data::log_t9, + Ni57_n_to_Ni58_starlib_data::log_rate); - auto p = Rates::get_p_random(); + 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); + Ni57_n_to_Ni58_starlib_data::log_t9, + Ni57_n_to_Ni58_starlib_data::sigma_rate); // Add rate uncertainty _rate += p * _sigma; // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -10.247718100005844 * 1.0e-9_rt / C::k_MeV; + constexpr amrex::Real Q_kBGK = -12.216218100000214 * 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 += 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] @@ -4364,12 +4364,10 @@ namespace derived_rates { template 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; @@ -5223,18 +5221,6 @@ namespace derived_rates { } } - { - // 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; - } - } - { // Fe53_to_n_Fe52_derived @@ -5248,14 +5234,14 @@ namespace derived_rates { } { - // Fe56_to_n_Fe55_derived + // Fe54_to_n_Fe53_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; + 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_Fe56_to_n_Fe55_derived) = drate_dT; + rate_eval.dscreened_rates_dT(k_Fe54_to_n_Fe53_derived) = drate_dT; } } @@ -5272,14 +5258,14 @@ namespace derived_rates { } { - // Ni58_to_n_Ni57_derived + // Fe56_to_n_Fe55_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; + 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_Ni58_to_n_Ni57_derived) = drate_dT; + rate_eval.dscreened_rates_dT(k_Fe56_to_n_Fe55_derived) = drate_dT; } } @@ -5295,6 +5281,18 @@ namespace derived_rates { } } + { + // 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; + } + } + } diff --git a/networks/he-burn/ase-iron-starlib/modified_rates.H b/networks/he-burn/ase-iron-starlib/modified_rates.H index e40f90f9a..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,8 @@ namespace modified_rates { + using namespace Rates; + using namespace reaclib_rates; using namespace temp_tabular; diff --git a/networks/he-burn/ase-iron-starlib/pynucastro-info.txt b/networks/he-burn/ase-iron-starlib/pynucastro-info.txt index f595c64e7..14b944e65 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: 3.0.0-25-g1299feccc +pynucastro version: 3.0.0-36-g5ade6bfb9 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 5dbc0705a..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 { @@ -2988,73 +2986,6 @@ namespace S32_He4_to_Ar36_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 Cl35 + p --> He4 + S32 namespace Cl35_p_to_He4_S32_starlib_data { @@ -3131,6 +3062,73 @@ namespace Cl35_p_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 Ar36_He4_to_Ca40_starlib_data { @@ -3186,73 +3184,6 @@ namespace Ar36_He4_to_Ca40_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 K39 + p --> He4 + Ar36 namespace K39_p_to_He4_Ar36_starlib_data { @@ -3320,6 +3251,73 @@ namespace K39_p_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 Ca40_He4_to_Ti44_starlib_data { @@ -3381,9 +3379,9 @@ namespace Ca40_He4_to_Ti44_starlib_data { } -// temperature / rate tabulation for Sc43 + p --> Ti44 +// temperature / rate tabulation for Sc43 + p --> He4 + Ca40 -namespace Sc43_p_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 Sc43_p_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 Sc43_p_to_Ti44_starlib_data { } -// temperature / rate tabulation for Sc43 + p --> He4 + Ca40 +// temperature / rate tabulation for Sc43 + p --> Ti44 -namespace Sc43_p_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 Sc43_p_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 @@ -3562,7 +3560,68 @@ namespace Ti44_He4_to_Cr48_starlib_data { }; // sigma uncertainty - inline AMREX_GPU_DEVICE amrex::Array1D sigma_rate = { + inline AMREX_GPU_DEVICE amrex::Array1D sigma_rate = { + 2.302585092994046, 2.302585092994046, 2.302585092994046, + 2.302585092994046, 2.302585092994046, 2.302585092994046, + 2.302585092994046, 2.302585092994046, 2.302585092994046, + 2.302585092994046, 2.302585092994046, 2.302585092994046, + 2.302585092994046, 2.302585092994046, 2.302585092994046, + 2.302585092994046, 2.302585092994046, 2.302585092994046, + 2.302585092994046, 2.302585092994046, 2.302585092994046, + 2.302585092994046, 2.302585092994046, 2.302585092994046, + 2.302585092994046, 2.302585092994046, 2.302585092994046, + 2.302585092994046, 2.302585092994046, 2.302585092994046, + 2.302585092994046, 2.302585092994046, 2.302585092994046 + }; + +} + +// temperature / rate tabulation for V47 + p --> He4 + Ti44 + +namespace V47_p_to_He4_Ti44_starlib_data { + + inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { + -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 = { + -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 + inline AMREX_GPU_DEVICE amrex::Array1D sigma_rate = { 2.302585092994046, 2.302585092994046, 2.302585092994046, 2.302585092994046, 2.302585092994046, 2.302585092994046, 2.302585092994046, 2.302585092994046, 2.302585092994046, @@ -3573,7 +3632,13 @@ namespace Ti44_He4_to_Cr48_starlib_data { 2.302585092994046, 2.302585092994046, 2.302585092994046, 2.302585092994046, 2.302585092994046, 2.302585092994046, 2.302585092994046, 2.302585092994046, 2.302585092994046, - 2.302585092994046, 2.302585092994046, 2.302585092994046 + 2.302585092994046, 2.302585092994046, 2.302585092994046, + 2.302585092994046, 2.302585092994046, 2.302585092994046, + 2.302585092994046, 2.302585092994046, 2.302585092994046, + 2.302585092994046, 2.302585092994046, 2.302585092994046, + 2.302585092994046, 2.302585092994046, 2.302585092994046, + 2.302585092994046, 2.302585092994046, 2.302585092994046, + 2.302585092994046, 2.302585092994046 }; } @@ -3653,73 +3718,6 @@ namespace V47_p_to_Cr48_starlib_data { } -// temperature / rate tabulation for V47 + p --> He4 + Ti44 - -namespace V47_p_to_He4_Ti44_starlib_data { - - inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { - -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 = { - -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 - inline AMREX_GPU_DEVICE amrex::Array1D sigma_rate = { - 2.302585092994046, 2.302585092994046, 2.302585092994046, - 2.302585092994046, 2.302585092994046, 2.302585092994046, - 2.302585092994046, 2.302585092994046, 2.302585092994046, - 2.302585092994046, 2.302585092994046, 2.302585092994046, - 2.302585092994046, 2.302585092994046, 2.302585092994046, - 2.302585092994046, 2.302585092994046, 2.302585092994046, - 2.302585092994046, 2.302585092994046, 2.302585092994046, - 2.302585092994046, 2.302585092994046, 2.302585092994046, - 2.302585092994046, 2.302585092994046, 2.302585092994046, - 2.302585092994046, 2.302585092994046, 2.302585092994046, - 2.302585092994046, 2.302585092994046, 2.302585092994046, - 2.302585092994046, 2.302585092994046, 2.302585092994046, - 2.302585092994046, 2.302585092994046, 2.302585092994046, - 2.302585092994046, 2.302585092994046, 2.302585092994046, - 2.302585092994046, 2.302585092994046, 2.302585092994046, - 2.302585092994046, 2.302585092994046, 2.302585092994046, - 2.302585092994046, 2.302585092994046 - }; - -} - // temperature / rate tabulation for Fe52 + n --> Fe53 namespace Fe52_n_to_Fe53_starlib_data { @@ -4179,6 +4177,8 @@ namespace Ni57_n_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) { @@ -5477,22 +5477,22 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - 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) { + 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, - Cl35_p_to_Ar36_starlib_data::log_t9, - Cl35_p_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, - Cl35_p_to_Ar36_starlib_data::log_t9, - Cl35_p_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_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) { + 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, - Cl35_p_to_He4_S32_starlib_data::log_t9, - Cl35_p_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, - Cl35_p_to_He4_S32_starlib_data::log_t9, - Cl35_p_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) { @@ -5558,22 +5558,22 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - 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) { + 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, - K39_p_to_Ca40_starlib_data::log_t9, - K39_p_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, - K39_p_to_Ca40_starlib_data::log_t9, - K39_p_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_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) { + 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, - K39_p_to_He4_Ar36_starlib_data::log_t9, - K39_p_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, - K39_p_to_He4_Ar36_starlib_data::log_t9, - K39_p_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) { @@ -5639,22 +5639,22 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - 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) { + 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, - Sc43_p_to_Ti44_starlib_data::log_t9, - Sc43_p_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, - Sc43_p_to_Ti44_starlib_data::log_t9, - Sc43_p_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_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) { + 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, - Sc43_p_to_He4_Ca40_starlib_data::log_t9, - Sc43_p_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, - Sc43_p_to_He4_Ca40_starlib_data::log_t9, - Sc43_p_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) { @@ -5720,22 +5720,22 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - 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) { + 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, - V47_p_to_Cr48_starlib_data::log_t9, - V47_p_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, - V47_p_to_Cr48_starlib_data::log_t9, - V47_p_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_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) { + 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, - V47_p_to_He4_Ti44_starlib_data::log_t9, - V47_p_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, - V47_p_to_He4_Ti44_starlib_data::log_t9, - V47_p_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) { @@ -5938,12 +5938,10 @@ namespace temp_tabular { template 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; @@ -6783,7 +6781,7 @@ namespace temp_tabular { } { - // Cl35_p_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_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; + 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_Cl35_p_to_Ar36_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_starlib) = drate_dT; } } { - // Cl35_p_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,10 +6809,10 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); } #endif - 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; + 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_Cl35_p_to_He4_S32_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_starlib) = drate_dT; } } @@ -6837,7 +6835,7 @@ namespace temp_tabular { } { - // K39_p_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_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; + 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_K39_p_to_Ca40_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_starlib) = drate_dT; } } { - // K39_p_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,10 +6863,10 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); } #endif - 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; + 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_K39_p_to_He4_Ar36_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_starlib) = drate_dT; } } @@ -6891,7 +6889,7 @@ namespace temp_tabular { } { - // Sc43_p_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_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; + 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_Sc43_p_to_Ti44_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_starlib) = drate_dT; } } { - // Sc43_p_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,10 +6917,10 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); } #endif - 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; + 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_Sc43_p_to_He4_Ca40_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_starlib) = drate_dT; } } @@ -6945,7 +6943,7 @@ namespace temp_tabular { } { - // V47_p_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_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; + 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_V47_p_to_Cr48_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_V47_p_to_He4_Ti44_starlib) = drate_dT; } } { - // V47_p_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,10 +6971,10 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); } #endif - 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; + 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_V47_p_to_He4_Ti44_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_V47_p_to_Cr48_starlib) = drate_dT; } } @@ -7055,6 +7053,5 @@ namespace temp_tabular { } - } #endif diff --git a/networks/he-burn/ase-iron/actual_network.H b/networks/he-burn/ase-iron/actual_network.H index 6913239a7..ad2684a02 100644 --- a/networks/he-burn/ase-iron/actual_network.H +++ b/networks/he-burn/ase-iron/actual_network.H @@ -312,16 +312,16 @@ namespace Rates 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_Ar36_reaclib = 49, - k_Cl35_p_to_He4_S32_reaclib = 50, + 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_Ca40_reaclib = 52, - k_K39_p_to_He4_Ar36_reaclib = 53, + 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_Ti44_reaclib = 55, - k_Sc43_p_to_He4_Ca40_reaclib = 56, - k_Ti44_He4_to_Cr48_reaclib = 57, - k_Ti44_He4_to_p_V47_reaclib = 58, + 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, @@ -408,16 +408,16 @@ namespace Rates 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_V47_p_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 : @@ -519,16 +519,16 @@ namespace Rates "Ni56_n_to_p_Co56_reaclib", // 46, "Cu59_n_to_He4_Co56_reaclib", // 47, "S32_He4_to_Ar36_reaclib", // 48, - "Cl35_p_to_Ar36_reaclib", // 49, - "Cl35_p_to_He4_S32_reaclib", // 50, + "Cl35_p_to_He4_S32_reaclib", // 49, + "Cl35_p_to_Ar36_reaclib", // 50, "Ar36_He4_to_Ca40_reaclib", // 51, - "K39_p_to_Ca40_reaclib", // 52, - "K39_p_to_He4_Ar36_reaclib", // 53, + "K39_p_to_He4_Ar36_reaclib", // 52, + "K39_p_to_Ca40_reaclib", // 53, "Ca40_He4_to_Ti44_reaclib", // 54, - "Sc43_p_to_Ti44_reaclib", // 55, - "Sc43_p_to_He4_Ca40_reaclib", // 56, - "Ti44_He4_to_Cr48_reaclib", // 57, - "Ti44_He4_to_p_V47_reaclib", // 58, + "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, @@ -615,15 +615,15 @@ namespace Rates "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, - "V47_p_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 diff --git a/networks/he-burn/ase-iron/actual_rhs.H b/networks/he-burn/ase-iron/actual_rhs.H index a8ac5a859..2aec60f15 100644 --- a/networks/he-burn/ase-iron/actual_rhs.H +++ b/networks/he-burn/ase-iron/actual_rhs.H @@ -53,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; @@ -467,6 +469,8 @@ 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]] const amrex::Real rhoy = state.rho * state.y_e; @@ -483,34 +487,29 @@ void evaluate_rates(const burn_t& state, 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); // fill modified rates next -- these can have ReacLib or // 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 branched rates -- these can have ReacLib or - // TemperatureTabular/StarLib as the underlying rate or branches. - // We do this after DerivedRate in case the branching depends - // on a derived rate. - branched_rates::fill_rates(tfactors, rate_eval); - - // Fill approximate rates - approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); - tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); - } @@ -636,7 +635,7 @@ 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; @@ -930,9 +929,11 @@ 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_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); diff --git a/networks/he-burn/ase-iron/branched_rates.H b/networks/he-burn/ase-iron/branched_rates.H index 6a8556dfc..903382523 100644 --- a/networks/he-burn/ase-iron/branched_rates.H +++ b/networks/he-burn/ase-iron/branched_rates.H @@ -12,6 +12,8 @@ namespace branched_rates { + using namespace Rates; + using namespace temp_tabular; diff --git a/networks/he-burn/ase-iron/derived_rates.H b/networks/he-burn/ase-iron/derived_rates.H index edd018647..6a790ad7d 100644 --- a/networks/he-burn/ase-iron/derived_rates.H +++ b/networks/he-burn/ase-iron/derived_rates.H @@ -3916,6 +3916,69 @@ namespace derived_rates { } + 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; + + // Evaluate partition function terms + + amrex::Real p_log_pf, dp_log_pf_dT9; + + // setting p log(partition 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; + + // setting He4 log(partition 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; + + // 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; + + // 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 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; + + 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; + + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (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) { @@ -4095,53 +4158,47 @@ namespace derived_rates { 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) { + 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) { - // V47 + p --> He4 + Ti44 + // Fe53 --> n + Fe52 rate = 0.0; drate_dT = 0.0; // Evaluate partition function terms - amrex::Real p_log_pf, dp_log_pf_dT9; - - // setting p log(partition 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 n_log_pf, dn_log_pf_dT9; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_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 V47_log_pf, dV47_log_pf_dT9; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - // interpolating V47 partition function - get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_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 Ti44_log_pf, dTi44_log_pf_dT9; + amrex::Real Fe53_log_pf, dFe53_log_pf_dT9; - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_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 + 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 = 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}; - // 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 = 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; 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 = 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; } @@ -4215,9 +4272,9 @@ namespace derived_rates { 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) { + 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) { - // Fe53 --> n + Fe52 + // Fe55 --> n + Fe54 rate = 0.0; drate_dT = 0.0; @@ -4230,32 +4287,32 @@ namespace derived_rates { n_log_pf = 0.0_rt; dn_log_pf_dT9 = 0.0_rt; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + amrex::Real Fe55_log_pf, dFe55_log_pf_dT9; - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_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 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 + 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}; - // 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 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; 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 = 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; } @@ -4329,9 +4386,9 @@ namespace derived_rates { 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) { + 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) { - // Fe55 --> n + Fe54 + // Ni57 --> n + Ni56 rate = 0.0; drate_dT = 0.0; @@ -4344,32 +4401,32 @@ namespace derived_rates { n_log_pf = 0.0_rt; dn_log_pf_dT9 = 0.0_rt; - amrex::Real Fe55_log_pf, dFe55_log_pf_dT9; + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - // interpolating Fe55 partition function - get_partition_function_cached(Fe55, tfactors.T9, pf_cache, Fe55_log_pf, dFe55_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 Fe54_log_pf, dFe54_log_pf_dT9; + amrex::Real Ni57_log_pf, dNi57_log_pf_dT9; - // interpolating Fe54 partition function - get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_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 + 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 + 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}; - // 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 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; 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 = 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; } @@ -4441,73 +4498,14 @@ namespace derived_rates { } - 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 - - rate = 0.0; - drate_dT = 0.0; - - // Evaluate partition function terms - - 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; - - 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); - - 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); - - 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}; - - // 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; - - 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; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } - - } - template 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; @@ -5319,6 +5317,24 @@ namespace derived_rates { } } + { + // V47_p_to_He4_Ti44_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); + } +#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_He4_Ti44_derived @@ -5344,20 +5360,14 @@ namespace derived_rates { } { - // V47_p_to_He4_Ti44_derived + // Fe53_to_n_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_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; + 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_V47_p_to_He4_Ti44_derived) = drate_dT; + rate_eval.dscreened_rates_dT(k_Fe53_to_n_Fe52_derived) = drate_dT; } } @@ -5374,14 +5384,14 @@ namespace derived_rates { } { - // Fe53_to_n_Fe52_derived + // Fe55_to_n_Fe54_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; + 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_Fe53_to_n_Fe52_derived) = drate_dT; + rate_eval.dscreened_rates_dT(k_Fe55_to_n_Fe54_derived) = drate_dT; } } @@ -5398,14 +5408,14 @@ namespace derived_rates { } { - // Fe55_to_n_Fe54_derived + // Ni57_to_n_Ni56_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; + 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_Fe55_to_n_Fe54_derived) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ni57_to_n_Ni56_derived) = drate_dT; } } @@ -5421,18 +5431,6 @@ namespace derived_rates { } } - { - // 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; - } - } - } diff --git a/networks/he-burn/ase-iron/modified_rates.H b/networks/he-burn/ase-iron/modified_rates.H index 0d3f58970..629772bb7 100644 --- a/networks/he-burn/ase-iron/modified_rates.H +++ b/networks/he-burn/ase-iron/modified_rates.H @@ -12,6 +12,8 @@ namespace modified_rates { + using namespace Rates; + using namespace reaclib_rates; using namespace temp_tabular; diff --git a/networks/he-burn/ase-iron/pynucastro-info.txt b/networks/he-burn/ase-iron/pynucastro-info.txt index f595c64e7..14b944e65 100644 --- a/networks/he-burn/ase-iron/pynucastro-info.txt +++ b/networks/he-burn/ase-iron/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-25-g1299feccc +pynucastro version: 3.0.0-36-g5ade6bfb9 diff --git a/networks/he-burn/ase-iron/reaclib_rates.H b/networks/he-burn/ase-iron/reaclib_rates.H index 01233eb65..0d128a112 100644 --- a/networks/he-burn/ase-iron/reaclib_rates.H +++ b/networks/he-burn/ase-iron/reaclib_rates.H @@ -2206,9 +2206,9 @@ namespace reaclib_rates { 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) { + 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) { - // Cl35 + p --> Ar36 + // Cl35 + p --> He4 + S32 rate = 0.0; drate_dT = 0.0; @@ -2218,13 +2218,13 @@ namespace reaclib_rates { amrex::Real set_rate{0.0}; // il10r - ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i + ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i + -1.5 * tfactors.lnT9; ln_set_rate += log_scor; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i + dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; @@ -2238,15 +2238,15 @@ namespace reaclib_rates { 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; 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 = 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; } @@ -2259,15 +2259,15 @@ namespace reaclib_rates { 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; 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 = + -(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; } @@ -2281,14 +2281,14 @@ namespace reaclib_rates { } // il10r - ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i - + -1.5 * tfactors.lnT9; + 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; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + 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; } @@ -2305,9 +2305,9 @@ namespace reaclib_rates { 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) { + 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) { - // Cl35 + p --> He4 + S32 + // Cl35 + p --> Ar36 rate = 0.0; drate_dT = 0.0; @@ -2317,13 +2317,13 @@ namespace reaclib_rates { amrex::Real set_rate{0.0}; // il10r - ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i + ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i + -1.5 * tfactors.lnT9; ln_set_rate += log_scor; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i + dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; @@ -2337,15 +2337,15 @@ namespace reaclib_rates { 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; 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 = + -(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; } @@ -2358,15 +2358,15 @@ namespace reaclib_rates { 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; 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 = 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; } @@ -2380,14 +2380,14 @@ namespace reaclib_rates { } // 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 = -9.03294 + -2.00996 * tfactors.T9i + + -1.5 * tfactors.lnT9; 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; + dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } @@ -2438,6 +2438,42 @@ namespace reaclib_rates { } + 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) { + + // K39 + p --> He4 + Ar36 + + rate = 0.0; + drate_dT = 0.0; + + amrex::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; + + 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; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + 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) { @@ -2518,9 +2554,9 @@ namespace reaclib_rates { 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) { + 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) { - // K39 + p --> He4 + Ar36 + // Ca40 + He4 --> Ti44 rate = 0.0; drate_dT = 0.0; @@ -2529,15 +2565,15 @@ namespace reaclib_rates { 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; + // 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; 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 = + -(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; } @@ -2554,9 +2590,9 @@ namespace reaclib_rates { 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) { + 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) { - // Ca40 + He4 --> Ti44 + // Sc43 + p --> He4 + Ca40 rate = 0.0; drate_dT = 0.0; @@ -2565,15 +2601,15 @@ namespace reaclib_rates { 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; + // 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; 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 = + -(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; } @@ -2626,9 +2662,9 @@ namespace reaclib_rates { 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) { + 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) { - // Sc43 + p --> He4 + Ca40 + // Ti44 + He4 --> p + V47 rate = 0.0; drate_dT = 0.0; @@ -2637,15 +2673,15 @@ namespace reaclib_rates { 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; + // 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; 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 = 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; } @@ -2696,42 +2732,6 @@ namespace reaclib_rates { } - 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) { - - // Ti44 + He4 --> p + V47 - - rate = 0.0; - drate_dT = 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; - - 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; - - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - 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) { @@ -3893,7 +3893,7 @@ namespace reaclib_rates { } { - // Cl35_p_to_Ar36_reaclib + // Cl35_p_to_He4_S32_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -3903,15 +3903,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); } #endif - 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; + 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_Ar36_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib) = drate_dT; } } { - // Cl35_p_to_He4_S32_reaclib + // Cl35_p_to_Ar36_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -3921,10 +3921,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); } #endif - 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; + 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_He4_S32_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib) = drate_dT; } } @@ -3947,7 +3947,7 @@ namespace reaclib_rates { } { - // K39_p_to_Ca40_reaclib + // K39_p_to_He4_Ar36_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -3957,15 +3957,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); } #endif - 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; + 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_Ca40_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib) = drate_dT; } } { - // K39_p_to_He4_Ar36_reaclib + // K39_p_to_Ca40_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -3975,10 +3975,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); } #endif - 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; + 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_He4_Ar36_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib) = drate_dT; } } @@ -4001,7 +4001,7 @@ namespace reaclib_rates { } { - // Sc43_p_to_Ti44_reaclib + // Sc43_p_to_He4_Ca40_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -4011,15 +4011,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); } #endif - 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; + 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_Ti44_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib) = drate_dT; } } { - // Sc43_p_to_He4_Ca40_reaclib + // Sc43_p_to_Ti44_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -4029,15 +4029,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); } #endif - 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; + 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_He4_Ca40_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib) = drate_dT; } } { - // Ti44_He4_to_Cr48_reaclib + // Ti44_He4_to_p_V47_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -4047,15 +4047,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); } #endif - 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; + 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_Cr48_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_p_V47_reaclib) = drate_dT; } } { - // Ti44_He4_to_p_V47_reaclib + // Ti44_He4_to_Cr48_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -4065,10 +4065,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); } #endif - 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; + 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_p_V47_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_reaclib) = drate_dT; } } diff --git a/networks/he-burn/ase-iron/temperature_table_rates.H b/networks/he-burn/ase-iron/temperature_table_rates.H index 94a7e0bcb..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_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/actual_network.H b/networks/he-burn/ase-test/actual_network.H index 80fd864ec..9e5730836 100644 --- a/networks/he-burn/ase-test/actual_network.H +++ b/networks/he-burn/ase-test/actual_network.H @@ -235,22 +235,22 @@ namespace Rates k_O16_O16_to_n_S31_reaclib = 23, k_O16_C12_to_n_Si27_reaclib = 24, k_S32_He4_to_Ar36_reaclib = 25, - k_Cl35_p_to_Ar36_reaclib = 26, - k_Cl35_p_to_He4_S32_reaclib = 27, + 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_Ca40_reaclib = 29, - k_K39_p_to_He4_Ar36_reaclib = 30, + 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_Ti44_reaclib = 32, - k_Sc43_p_to_He4_Ca40_reaclib = 33, - k_Ti44_He4_to_Cr48_reaclib = 34, - k_Ti44_He4_to_p_V47_reaclib = 35, + 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_Fe52_reaclib = 37, - k_Cr48_He4_to_p_Mn51_reaclib = 38, + 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_Ni56_reaclib = 40, - k_Fe52_He4_to_p_Co55_reaclib = 41, + 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, @@ -302,16 +302,16 @@ namespace Rates 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_V47_p_to_He4_Ti44_derived = 95, - k_Fe52_to_He4_Cr48_derived = 96, - k_Fe52_to_p_Mn51_derived = 97, - k_Mn51_p_to_He4_Cr48_derived = 98, - k_Ni56_to_He4_Fe52_derived = 99, - k_Ni56_to_p_Co55_derived = 100, - k_Co55_p_to_He4_Fe52_derived = 101, - NumRates = k_Co55_p_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 : @@ -381,22 +381,22 @@ namespace Rates "O16_O16_to_n_S31_reaclib", // 23, "O16_C12_to_n_Si27_reaclib", // 24, "S32_He4_to_Ar36_reaclib", // 25, - "Cl35_p_to_Ar36_reaclib", // 26, - "Cl35_p_to_He4_S32_reaclib", // 27, + "Cl35_p_to_He4_S32_reaclib", // 26, + "Cl35_p_to_Ar36_reaclib", // 27, "Ar36_He4_to_Ca40_reaclib", // 28, - "K39_p_to_Ca40_reaclib", // 29, - "K39_p_to_He4_Ar36_reaclib", // 30, + "K39_p_to_He4_Ar36_reaclib", // 29, + "K39_p_to_Ca40_reaclib", // 30, "Ca40_He4_to_Ti44_reaclib", // 31, - "Sc43_p_to_Ti44_reaclib", // 32, - "Sc43_p_to_He4_Ca40_reaclib", // 33, - "Ti44_He4_to_Cr48_reaclib", // 34, - "Ti44_He4_to_p_V47_reaclib", // 35, + "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_Fe52_reaclib", // 37, - "Cr48_He4_to_p_Mn51_reaclib", // 38, + "Cr48_He4_to_p_Mn51_reaclib", // 37, + "Cr48_He4_to_Fe52_reaclib", // 38, "Mn51_p_to_Fe52_reaclib", // 39, - "Fe52_He4_to_Ni56_reaclib", // 40, - "Fe52_He4_to_p_Co55_reaclib", // 41, + "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, @@ -448,15 +448,15 @@ namespace Rates "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, - "V47_p_to_He4_Ti44_derived", // 95, - "Fe52_to_He4_Cr48_derived", // 96, - "Fe52_to_p_Mn51_derived", // 97, - "Mn51_p_to_He4_Cr48_derived", // 98, - "Ni56_to_He4_Fe52_derived", // 99, - "Ni56_to_p_Co55_derived", // 100, - "Co55_p_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 diff --git a/networks/he-burn/ase-test/actual_rhs.H b/networks/he-burn/ase-test/actual_rhs.H index 60010a910..eee9b5c6b 100644 --- a/networks/he-burn/ase-test/actual_rhs.H +++ b/networks/he-burn/ase-test/actual_rhs.H @@ -53,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; @@ -377,6 +379,8 @@ 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]] const amrex::Real rhoy = state.rho * state.y_e; @@ -393,26 +397,24 @@ void evaluate_rates(const burn_t& state, 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); // fill modified rates next -- these can have ReacLib or // 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 branched rates -- these can have ReacLib or - // TemperatureTabular/StarLib as the underlying rate or branches. - // We do this after DerivedRate in case the branching depends - // on a derived rate. - branched_rates::fill_rates(tfactors, rate_eval); - - if (disable_C12_p_to_N13_reaclib) { rate_eval.screened_rates(k_C12_p_to_N13_reaclib) = 0.0; @@ -438,11 +440,8 @@ void evaluate_rates(const burn_t& state, // Fill approximate rates - approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); - tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); - } @@ -542,7 +541,7 @@ 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; @@ -735,9 +734,11 @@ 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_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; diff --git a/networks/he-burn/ase-test/branched_rates.H b/networks/he-burn/ase-test/branched_rates.H index 6a8556dfc..903382523 100644 --- a/networks/he-burn/ase-test/branched_rates.H +++ b/networks/he-burn/ase-test/branched_rates.H @@ -12,6 +12,8 @@ namespace branched_rates { + using namespace Rates; + using namespace temp_tabular; diff --git a/networks/he-burn/ase-test/derived_rates.H b/networks/he-burn/ase-test/derived_rates.H index 862bb7f87..2acb072d4 100644 --- a/networks/he-burn/ase-test/derived_rates.H +++ b/networks/he-burn/ase-test/derived_rates.H @@ -2611,6 +2611,69 @@ namespace derived_rates { } + 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; + + // Evaluate partition function terms + + amrex::Real p_log_pf, dp_log_pf_dT9; + + // setting p log(partition 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; + + // setting He4 log(partition 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; + + // 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; + + // 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 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; + + 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; + + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (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) { @@ -2790,9 +2853,9 @@ namespace derived_rates { 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) { + 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) { - // V47 + p --> He4 + Ti44 + // Mn51 + p --> He4 + Cr48 rate = 0.0; drate_dT = 0.0; @@ -2805,38 +2868,38 @@ namespace derived_rates { p_log_pf = 0.0_rt; dp_log_pf_dT9 = 0.0_rt; + 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); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; // setting He4 log(partition 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; - - // 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 Mn51_log_pf, dMn51_log_pf_dT9; - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_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 + 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 + 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}; - // 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 = 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; 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 = 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; } @@ -2967,9 +3030,9 @@ namespace derived_rates { 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) { + 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) { - // Mn51 + p --> He4 + Cr48 + // Co55 + p --> He4 + Fe52 rate = 0.0; drate_dT = 0.0; @@ -2982,38 +3045,38 @@ namespace derived_rates { p_log_pf = 0.0_rt; dp_log_pf_dT9 = 0.0_rt; - 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); - amrex::Real He4_log_pf, dHe4_log_pf_dT9; // setting He4 log(partition 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 Co55_log_pf, dCo55_log_pf_dT9; - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_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 + 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 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 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; + 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 = 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 = 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; } @@ -3142,79 +3205,14 @@ namespace derived_rates { } - 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 - - rate = 0.0; - drate_dT = 0.0; - - // Evaluate partition function terms - - amrex::Real p_log_pf, dp_log_pf_dT9; - - // setting p log(partition 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; - - // setting He4 log(partition 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; - - // 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; - - // 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 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 = 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; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } - - } - template 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; @@ -3714,6 +3712,24 @@ namespace derived_rates { } } + { + // V47_p_to_He4_Ti44_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); + } +#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_He4_Ti44_derived @@ -3739,20 +3755,20 @@ namespace derived_rates { } { - // V47_p_to_He4_Ti44_derived + // 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_V47); + 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_V47); + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); } #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; + 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_V47_p_to_He4_Ti44_derived) = drate_dT; + rate_eval.dscreened_rates_dT(k_Mn51_p_to_He4_Cr48_derived) = drate_dT; } } @@ -3781,20 +3797,20 @@ namespace derived_rates { } { - // Mn51_p_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}; #ifdef SCREENING - log_scor = rate_eval.log_screen(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_Mn51); + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); } #endif - 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; + 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_Mn51_p_to_He4_Cr48_derived) = drate_dT; + rate_eval.dscreened_rates_dT(k_Co55_p_to_He4_Fe52_derived) = drate_dT; } } @@ -3822,24 +3838,6 @@ namespace derived_rates { } } - { - // Co55_p_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_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; - } - } - } diff --git a/networks/he-burn/ase-test/modified_rates.H b/networks/he-burn/ase-test/modified_rates.H index 8810eba61..9fe01c420 100644 --- a/networks/he-burn/ase-test/modified_rates.H +++ b/networks/he-burn/ase-test/modified_rates.H @@ -12,6 +12,8 @@ namespace modified_rates { + using namespace Rates; + using namespace reaclib_rates; using namespace temp_tabular; diff --git a/networks/he-burn/ase-test/pynucastro-info.txt b/networks/he-burn/ase-test/pynucastro-info.txt index f595c64e7..14b944e65 100644 --- a/networks/he-burn/ase-test/pynucastro-info.txt +++ b/networks/he-burn/ase-test/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-25-g1299feccc +pynucastro version: 3.0.0-36-g5ade6bfb9 diff --git a/networks/he-burn/ase-test/reaclib_rates.H b/networks/he-burn/ase-test/reaclib_rates.H index b26968c71..82d5186ff 100644 --- a/networks/he-burn/ase-test/reaclib_rates.H +++ b/networks/he-burn/ase-test/reaclib_rates.H @@ -1378,9 +1378,9 @@ namespace reaclib_rates { 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) { + 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) { - // Cl35 + p --> Ar36 + // Cl35 + p --> He4 + S32 rate = 0.0; drate_dT = 0.0; @@ -1390,13 +1390,13 @@ namespace reaclib_rates { amrex::Real set_rate{0.0}; // il10r - ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i + ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i + -1.5 * tfactors.lnT9; ln_set_rate += log_scor; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i + dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; @@ -1410,15 +1410,15 @@ namespace reaclib_rates { 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; 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 = 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; } @@ -1431,15 +1431,15 @@ namespace reaclib_rates { 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; 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 = + -(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; } @@ -1453,14 +1453,14 @@ namespace reaclib_rates { } // il10r - ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i - + -1.5 * tfactors.lnT9; + 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; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + 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; } @@ -1477,9 +1477,9 @@ namespace reaclib_rates { 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) { + 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) { - // Cl35 + p --> He4 + S32 + // Cl35 + p --> Ar36 rate = 0.0; drate_dT = 0.0; @@ -1489,13 +1489,13 @@ namespace reaclib_rates { amrex::Real set_rate{0.0}; // il10r - ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i + ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i + -1.5 * tfactors.lnT9; ln_set_rate += log_scor; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i + dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; @@ -1509,15 +1509,15 @@ namespace reaclib_rates { 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; 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 = + -(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; } @@ -1530,15 +1530,15 @@ namespace reaclib_rates { 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; 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 = 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; } @@ -1552,14 +1552,14 @@ namespace reaclib_rates { } // 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 = -9.03294 + -2.00996 * tfactors.T9i + + -1.5 * tfactors.lnT9; 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; + dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } @@ -1610,6 +1610,42 @@ namespace reaclib_rates { } + 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) { + + // K39 + p --> He4 + Ar36 + + rate = 0.0; + drate_dT = 0.0; + + amrex::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; + + 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; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + 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) { @@ -1690,9 +1726,9 @@ namespace reaclib_rates { 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) { + 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) { - // K39 + p --> He4 + Ar36 + // Ca40 + He4 --> Ti44 rate = 0.0; drate_dT = 0.0; @@ -1701,15 +1737,15 @@ namespace reaclib_rates { 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; + // 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; 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 = + -(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; } @@ -1726,9 +1762,9 @@ namespace reaclib_rates { 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) { + 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) { - // Ca40 + He4 --> Ti44 + // Sc43 + p --> He4 + Ca40 rate = 0.0; drate_dT = 0.0; @@ -1737,15 +1773,15 @@ namespace reaclib_rates { 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; + // 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; 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 = + -(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; } @@ -1798,9 +1834,9 @@ namespace reaclib_rates { 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) { + 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) { - // Sc43 + p --> He4 + Ca40 + // Ti44 + He4 --> p + V47 rate = 0.0; drate_dT = 0.0; @@ -1809,15 +1845,15 @@ namespace reaclib_rates { 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; + // 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; 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 = 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; } @@ -1868,42 +1904,6 @@ namespace reaclib_rates { } - 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) { - - // Ti44 + He4 --> p + V47 - - rate = 0.0; - drate_dT = 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; - - 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; - - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - 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) { @@ -2005,9 +2005,9 @@ namespace reaclib_rates { 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) { + 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) { - // Cr48 + He4 --> Fe52 + // Cr48 + He4 --> p + Mn51 rate = 0.0; drate_dT = 0.0; @@ -2017,14 +2017,14 @@ namespace reaclib_rates { 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; + 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; 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 = + -(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; } @@ -2041,9 +2041,9 @@ namespace reaclib_rates { 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) { + 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) { - // Cr48 + He4 --> p + Mn51 + // Cr48 + He4 --> Fe52 rate = 0.0; drate_dT = 0.0; @@ -2053,14 +2053,14 @@ namespace reaclib_rates { 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; + 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; 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 = + -(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; } @@ -2113,9 +2113,9 @@ namespace reaclib_rates { 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) { + 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) { - // Fe52 + He4 --> Ni56 + // Fe52 + He4 --> p + Co55 rate = 0.0; drate_dT = 0.0; @@ -2125,14 +2125,14 @@ namespace reaclib_rates { 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; + 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; 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 = + -(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; } @@ -2149,9 +2149,9 @@ namespace reaclib_rates { 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) { + 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) { - // Fe52 + He4 --> p + Co55 + // Fe52 + He4 --> Ni56 rate = 0.0; drate_dT = 0.0; @@ -2161,14 +2161,14 @@ namespace reaclib_rates { 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; + 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; 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 = + -(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; } @@ -2681,7 +2681,7 @@ namespace reaclib_rates { } { - // Cl35_p_to_Ar36_reaclib + // Cl35_p_to_He4_S32_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2691,15 +2691,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); } #endif - 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; + 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_Ar36_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib) = drate_dT; } } { - // Cl35_p_to_He4_S32_reaclib + // Cl35_p_to_Ar36_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2709,10 +2709,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); } #endif - 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; + 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_He4_S32_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib) = drate_dT; } } @@ -2735,7 +2735,7 @@ namespace reaclib_rates { } { - // K39_p_to_Ca40_reaclib + // K39_p_to_He4_Ar36_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2745,15 +2745,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); } #endif - 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; + 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_Ca40_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib) = drate_dT; } } { - // K39_p_to_He4_Ar36_reaclib + // K39_p_to_Ca40_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2763,10 +2763,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); } #endif - 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; + 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_He4_Ar36_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib) = drate_dT; } } @@ -2789,7 +2789,7 @@ namespace reaclib_rates { } { - // Sc43_p_to_Ti44_reaclib + // Sc43_p_to_He4_Ca40_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2799,15 +2799,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); } #endif - 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; + 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_Ti44_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib) = drate_dT; } } { - // Sc43_p_to_He4_Ca40_reaclib + // Sc43_p_to_Ti44_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2817,15 +2817,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); } #endif - 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; + 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_He4_Ca40_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib) = drate_dT; } } { - // Ti44_He4_to_Cr48_reaclib + // Ti44_He4_to_p_V47_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2835,15 +2835,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); } #endif - 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; + 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_Cr48_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_p_V47_reaclib) = drate_dT; } } { - // Ti44_He4_to_p_V47_reaclib + // Ti44_He4_to_Cr48_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2853,10 +2853,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); } #endif - 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; + 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_p_V47_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_reaclib) = drate_dT; } } @@ -2879,7 +2879,7 @@ namespace reaclib_rates { } { - // Cr48_He4_to_Fe52_reaclib + // Cr48_He4_to_p_Mn51_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2889,15 +2889,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); } #endif - 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; + 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_Fe52_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_p_Mn51_reaclib) = drate_dT; } } { - // Cr48_He4_to_p_Mn51_reaclib + // Cr48_He4_to_Fe52_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2907,10 +2907,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); } #endif - 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; + 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_p_Mn51_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_reaclib) = drate_dT; } } @@ -2933,7 +2933,7 @@ namespace reaclib_rates { } { - // Fe52_He4_to_Ni56_reaclib + // Fe52_He4_to_p_Co55_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2943,15 +2943,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); } #endif - 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; + 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_Ni56_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_p_Co55_reaclib) = drate_dT; } } { - // Fe52_He4_to_p_Co55_reaclib + // Fe52_He4_to_Ni56_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2961,10 +2961,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); } #endif - 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; + 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_p_Co55_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_reaclib) = drate_dT; } } diff --git a/networks/he-burn/ase-test/temperature_table_rates.H b/networks/he-burn/ase-test/temperature_table_rates.H index ba837e6f0..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) { @@ -83,12 +83,10 @@ namespace temp_tabular { template 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/actual_network.H b/networks/he-burn/ase/actual_network.H index 70cf91520..4dc2d0f9f 100644 --- a/networks/he-burn/ase/actual_network.H +++ b/networks/he-burn/ase/actual_network.H @@ -228,22 +228,22 @@ namespace Rates k_O16_O16_to_n_S31_reaclib = 22, k_O16_C12_to_n_Si27_reaclib = 23, k_S32_He4_to_Ar36_reaclib = 24, - k_Cl35_p_to_Ar36_reaclib = 25, - k_Cl35_p_to_He4_S32_reaclib = 26, + 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_Ca40_reaclib = 28, - k_K39_p_to_He4_Ar36_reaclib = 29, + 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_Ti44_reaclib = 31, - k_Sc43_p_to_He4_Ca40_reaclib = 32, - k_Ti44_He4_to_Cr48_reaclib = 33, - k_Ti44_He4_to_p_V47_reaclib = 34, + 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_Fe52_reaclib = 36, - k_Cr48_He4_to_p_Mn51_reaclib = 37, + 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_Ni56_reaclib = 39, - k_Fe52_He4_to_p_Co55_reaclib = 40, + 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, @@ -292,16 +292,16 @@ namespace Rates 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_V47_p_to_He4_Ti44_derived = 91, - k_Fe52_to_He4_Cr48_derived = 92, - k_Fe52_to_p_Mn51_derived = 93, - k_Mn51_p_to_He4_Cr48_derived = 94, - k_Ni56_to_He4_Fe52_derived = 95, - k_Ni56_to_p_Co55_derived = 96, - k_Co55_p_to_He4_Fe52_derived = 97, - NumRates = k_Co55_p_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 : @@ -368,22 +368,22 @@ namespace Rates "O16_O16_to_n_S31_reaclib", // 22, "O16_C12_to_n_Si27_reaclib", // 23, "S32_He4_to_Ar36_reaclib", // 24, - "Cl35_p_to_Ar36_reaclib", // 25, - "Cl35_p_to_He4_S32_reaclib", // 26, + "Cl35_p_to_He4_S32_reaclib", // 25, + "Cl35_p_to_Ar36_reaclib", // 26, "Ar36_He4_to_Ca40_reaclib", // 27, - "K39_p_to_Ca40_reaclib", // 28, - "K39_p_to_He4_Ar36_reaclib", // 29, + "K39_p_to_He4_Ar36_reaclib", // 28, + "K39_p_to_Ca40_reaclib", // 29, "Ca40_He4_to_Ti44_reaclib", // 30, - "Sc43_p_to_Ti44_reaclib", // 31, - "Sc43_p_to_He4_Ca40_reaclib", // 32, - "Ti44_He4_to_Cr48_reaclib", // 33, - "Ti44_He4_to_p_V47_reaclib", // 34, + "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_Fe52_reaclib", // 36, - "Cr48_He4_to_p_Mn51_reaclib", // 37, + "Cr48_He4_to_p_Mn51_reaclib", // 36, + "Cr48_He4_to_Fe52_reaclib", // 37, "Mn51_p_to_Fe52_reaclib", // 38, - "Fe52_He4_to_Ni56_reaclib", // 39, - "Fe52_He4_to_p_Co55_reaclib", // 40, + "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, @@ -432,15 +432,15 @@ namespace Rates "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, - "V47_p_to_He4_Ti44_derived", // 91, - "Fe52_to_He4_Cr48_derived", // 92, - "Fe52_to_p_Mn51_derived", // 93, - "Mn51_p_to_He4_Cr48_derived", // 94, - "Ni56_to_He4_Fe52_derived", // 95, - "Ni56_to_p_Co55_derived", // 96, - "Co55_p_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 diff --git a/networks/he-burn/ase/actual_rhs.H b/networks/he-burn/ase/actual_rhs.H index e7c383faa..94c3900c9 100644 --- a/networks/he-burn/ase/actual_rhs.H +++ b/networks/he-burn/ase/actual_rhs.H @@ -53,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; @@ -357,6 +359,8 @@ 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]] const amrex::Real rhoy = state.rho * state.y_e; @@ -373,26 +377,24 @@ void evaluate_rates(const burn_t& state, 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); // fill modified rates next -- these can have ReacLib or // 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 branched rates -- these can have ReacLib or - // TemperatureTabular/StarLib as the underlying rate or branches. - // We do this after DerivedRate in case the branching depends - // on a derived rate. - branched_rates::fill_rates(tfactors, rate_eval); - - if (disable_C12_p_to_N13_reaclib) { rate_eval.screened_rates(k_C12_p_to_N13_reaclib) = 0.0; @@ -418,11 +420,8 @@ void evaluate_rates(const burn_t& state, // Fill approximate rates - approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); - tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); - } @@ -520,7 +519,7 @@ 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; @@ -704,9 +703,11 @@ 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_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; diff --git a/networks/he-burn/ase/branched_rates.H b/networks/he-burn/ase/branched_rates.H index 6a8556dfc..903382523 100644 --- a/networks/he-burn/ase/branched_rates.H +++ b/networks/he-burn/ase/branched_rates.H @@ -12,6 +12,8 @@ namespace branched_rates { + using namespace Rates; + using namespace temp_tabular; diff --git a/networks/he-burn/ase/derived_rates.H b/networks/he-burn/ase/derived_rates.H index 3c9fe29a8..22f6bf068 100644 --- a/networks/he-burn/ase/derived_rates.H +++ b/networks/he-burn/ase/derived_rates.H @@ -2494,6 +2494,69 @@ namespace derived_rates { } + 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; + + // Evaluate partition function terms + + amrex::Real p_log_pf, dp_log_pf_dT9; + + // setting p log(partition 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; + + // setting He4 log(partition 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; + + // 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; + + // 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 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; + + 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; + + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (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) { @@ -2673,9 +2736,9 @@ namespace derived_rates { 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) { + 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) { - // V47 + p --> He4 + Ti44 + // Mn51 + p --> He4 + Cr48 rate = 0.0; drate_dT = 0.0; @@ -2688,38 +2751,38 @@ namespace derived_rates { p_log_pf = 0.0_rt; dp_log_pf_dT9 = 0.0_rt; + 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); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; // setting He4 log(partition 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; - - // 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 Mn51_log_pf, dMn51_log_pf_dT9; - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_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 + 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 + 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}; - // 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 = 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; 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 = 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; } @@ -2850,9 +2913,9 @@ namespace derived_rates { 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) { + 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) { - // Mn51 + p --> He4 + Cr48 + // Co55 + p --> He4 + Fe52 rate = 0.0; drate_dT = 0.0; @@ -2865,38 +2928,38 @@ namespace derived_rates { p_log_pf = 0.0_rt; dp_log_pf_dT9 = 0.0_rt; - 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); - amrex::Real He4_log_pf, dHe4_log_pf_dT9; // setting He4 log(partition 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 Co55_log_pf, dCo55_log_pf_dT9; - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_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 + 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 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 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; + 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 = 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 = 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; } @@ -3025,79 +3088,14 @@ namespace derived_rates { } - 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 - - rate = 0.0; - drate_dT = 0.0; - - // Evaluate partition function terms - - amrex::Real p_log_pf, dp_log_pf_dT9; - - // setting p log(partition 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; - - // setting He4 log(partition 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; - - // 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; - - // 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 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 = 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; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } - - } - template 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; @@ -3567,6 +3565,24 @@ namespace derived_rates { } } + { + // V47_p_to_He4_Ti44_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); + } +#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_He4_Ti44_derived @@ -3592,20 +3608,20 @@ namespace derived_rates { } { - // V47_p_to_He4_Ti44_derived + // 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_V47); + 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_V47); + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); } #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; + 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_V47_p_to_He4_Ti44_derived) = drate_dT; + rate_eval.dscreened_rates_dT(k_Mn51_p_to_He4_Cr48_derived) = drate_dT; } } @@ -3634,20 +3650,20 @@ namespace derived_rates { } { - // Mn51_p_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}; #ifdef SCREENING - log_scor = rate_eval.log_screen(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_Mn51); + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); } #endif - 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; + 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_Mn51_p_to_He4_Cr48_derived) = drate_dT; + rate_eval.dscreened_rates_dT(k_Co55_p_to_He4_Fe52_derived) = drate_dT; } } @@ -3675,24 +3691,6 @@ namespace derived_rates { } } - { - // Co55_p_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_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; - } - } - } diff --git a/networks/he-burn/ase/modified_rates.H b/networks/he-burn/ase/modified_rates.H index 0d3f58970..629772bb7 100644 --- a/networks/he-burn/ase/modified_rates.H +++ b/networks/he-burn/ase/modified_rates.H @@ -12,6 +12,8 @@ namespace modified_rates { + using namespace Rates; + using namespace reaclib_rates; using namespace temp_tabular; diff --git a/networks/he-burn/ase/pynucastro-info.txt b/networks/he-burn/ase/pynucastro-info.txt index f595c64e7..14b944e65 100644 --- a/networks/he-burn/ase/pynucastro-info.txt +++ b/networks/he-burn/ase/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-25-g1299feccc +pynucastro version: 3.0.0-36-g5ade6bfb9 diff --git a/networks/he-burn/ase/reaclib_rates.H b/networks/he-burn/ase/reaclib_rates.H index c3971df83..045e9f0e7 100644 --- a/networks/he-burn/ase/reaclib_rates.H +++ b/networks/he-burn/ase/reaclib_rates.H @@ -1342,9 +1342,9 @@ namespace reaclib_rates { 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) { + 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) { - // Cl35 + p --> Ar36 + // Cl35 + p --> He4 + S32 rate = 0.0; drate_dT = 0.0; @@ -1354,13 +1354,13 @@ namespace reaclib_rates { amrex::Real set_rate{0.0}; // il10r - ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i + ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i + -1.5 * tfactors.lnT9; ln_set_rate += log_scor; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i + dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; @@ -1374,15 +1374,15 @@ namespace reaclib_rates { 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; 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 = 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; } @@ -1395,15 +1395,15 @@ namespace reaclib_rates { 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; 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 = + -(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; } @@ -1417,14 +1417,14 @@ namespace reaclib_rates { } // il10r - ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i - + -1.5 * tfactors.lnT9; + 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; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + 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; } @@ -1441,9 +1441,9 @@ namespace reaclib_rates { 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) { + 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) { - // Cl35 + p --> He4 + S32 + // Cl35 + p --> Ar36 rate = 0.0; drate_dT = 0.0; @@ -1453,13 +1453,13 @@ namespace reaclib_rates { amrex::Real set_rate{0.0}; // il10r - ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i + ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i + -1.5 * tfactors.lnT9; ln_set_rate += log_scor; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i + dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; @@ -1473,15 +1473,15 @@ namespace reaclib_rates { 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; 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 = + -(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; } @@ -1494,15 +1494,15 @@ namespace reaclib_rates { 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; 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 = 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; } @@ -1516,14 +1516,14 @@ namespace reaclib_rates { } // 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 = -9.03294 + -2.00996 * tfactors.T9i + + -1.5 * tfactors.lnT9; 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; + dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } @@ -1574,6 +1574,42 @@ namespace reaclib_rates { } + 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) { + + // K39 + p --> He4 + Ar36 + + rate = 0.0; + drate_dT = 0.0; + + amrex::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; + + 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; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + 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) { @@ -1654,9 +1690,9 @@ namespace reaclib_rates { 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) { + 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) { - // K39 + p --> He4 + Ar36 + // Ca40 + He4 --> Ti44 rate = 0.0; drate_dT = 0.0; @@ -1665,15 +1701,15 @@ namespace reaclib_rates { 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; + // 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; 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 = + -(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; } @@ -1690,9 +1726,9 @@ namespace reaclib_rates { 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) { + 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) { - // Ca40 + He4 --> Ti44 + // Sc43 + p --> He4 + Ca40 rate = 0.0; drate_dT = 0.0; @@ -1701,15 +1737,15 @@ namespace reaclib_rates { 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; + // 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; 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 = + -(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; } @@ -1762,9 +1798,9 @@ namespace reaclib_rates { 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) { + 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) { - // Sc43 + p --> He4 + Ca40 + // Ti44 + He4 --> p + V47 rate = 0.0; drate_dT = 0.0; @@ -1773,15 +1809,15 @@ namespace reaclib_rates { 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; + // 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; 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 = 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; } @@ -1832,42 +1868,6 @@ namespace reaclib_rates { } - 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) { - - // Ti44 + He4 --> p + V47 - - rate = 0.0; - drate_dT = 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; - - 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; - - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - 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) { @@ -1969,9 +1969,9 @@ namespace reaclib_rates { 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) { + 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) { - // Cr48 + He4 --> Fe52 + // Cr48 + He4 --> p + Mn51 rate = 0.0; drate_dT = 0.0; @@ -1981,14 +1981,14 @@ namespace reaclib_rates { 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; + 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; 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 = + -(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; } @@ -2005,9 +2005,9 @@ namespace reaclib_rates { 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) { + 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) { - // Cr48 + He4 --> p + Mn51 + // Cr48 + He4 --> Fe52 rate = 0.0; drate_dT = 0.0; @@ -2017,14 +2017,14 @@ namespace reaclib_rates { 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; + 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; 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 = + -(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; } @@ -2077,9 +2077,9 @@ namespace reaclib_rates { 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) { + 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) { - // Fe52 + He4 --> Ni56 + // Fe52 + He4 --> p + Co55 rate = 0.0; drate_dT = 0.0; @@ -2089,14 +2089,14 @@ namespace reaclib_rates { 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; + 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; 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 = + -(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; } @@ -2113,9 +2113,9 @@ namespace reaclib_rates { 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) { + 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) { - // Fe52 + He4 --> p + Co55 + // Fe52 + He4 --> Ni56 rate = 0.0; drate_dT = 0.0; @@ -2125,14 +2125,14 @@ namespace reaclib_rates { 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; + 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; 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 = + -(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; } @@ -2627,7 +2627,7 @@ namespace reaclib_rates { } { - // Cl35_p_to_Ar36_reaclib + // Cl35_p_to_He4_S32_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2637,15 +2637,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); } #endif - 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; + 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_Ar36_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib) = drate_dT; } } { - // Cl35_p_to_He4_S32_reaclib + // Cl35_p_to_Ar36_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2655,10 +2655,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); } #endif - 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; + 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_He4_S32_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib) = drate_dT; } } @@ -2681,7 +2681,7 @@ namespace reaclib_rates { } { - // K39_p_to_Ca40_reaclib + // K39_p_to_He4_Ar36_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2691,15 +2691,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); } #endif - 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; + 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_Ca40_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib) = drate_dT; } } { - // K39_p_to_He4_Ar36_reaclib + // K39_p_to_Ca40_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2709,10 +2709,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); } #endif - 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; + 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_He4_Ar36_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib) = drate_dT; } } @@ -2735,7 +2735,7 @@ namespace reaclib_rates { } { - // Sc43_p_to_Ti44_reaclib + // Sc43_p_to_He4_Ca40_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2745,15 +2745,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); } #endif - 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; + 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_Ti44_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib) = drate_dT; } } { - // Sc43_p_to_He4_Ca40_reaclib + // Sc43_p_to_Ti44_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2763,15 +2763,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); } #endif - 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; + 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_He4_Ca40_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib) = drate_dT; } } { - // Ti44_He4_to_Cr48_reaclib + // Ti44_He4_to_p_V47_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2781,15 +2781,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); } #endif - 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; + 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_Cr48_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_p_V47_reaclib) = drate_dT; } } { - // Ti44_He4_to_p_V47_reaclib + // Ti44_He4_to_Cr48_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2799,10 +2799,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); } #endif - 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; + 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_p_V47_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_reaclib) = drate_dT; } } @@ -2825,7 +2825,7 @@ namespace reaclib_rates { } { - // Cr48_He4_to_Fe52_reaclib + // Cr48_He4_to_p_Mn51_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2835,15 +2835,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); } #endif - 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; + 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_Fe52_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_p_Mn51_reaclib) = drate_dT; } } { - // Cr48_He4_to_p_Mn51_reaclib + // Cr48_He4_to_Fe52_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2853,10 +2853,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); } #endif - 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; + 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_p_Mn51_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_reaclib) = drate_dT; } } @@ -2879,7 +2879,7 @@ namespace reaclib_rates { } { - // Fe52_He4_to_Ni56_reaclib + // Fe52_He4_to_p_Co55_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2889,15 +2889,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); } #endif - 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; + 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_Ni56_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_p_Co55_reaclib) = drate_dT; } } { - // Fe52_He4_to_p_Co55_reaclib + // Fe52_He4_to_Ni56_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2907,10 +2907,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); } #endif - 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; + 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_p_Co55_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_reaclib) = drate_dT; } } diff --git a/networks/he-burn/ase/temperature_table_rates.H b/networks/he-burn/ase/temperature_table_rates.H index 94a7e0bcb..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_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/actual_network.H b/networks/he-burn/cno-he-burn-33a/actual_network.H index 5f2d5f193..8fa37bf50 100644 --- a/networks/he-burn/cno-he-burn-33a/actual_network.H +++ b/networks/he-burn/cno-he-burn-33a/actual_network.H @@ -349,22 +349,22 @@ namespace Rates k_O16_O16_to_n_S31_reaclib = 53, k_O16_C12_to_n_Si27_reaclib = 54, k_S32_He4_to_Ar36_reaclib = 55, - k_Cl35_p_to_Ar36_reaclib = 56, - k_Cl35_p_to_He4_S32_reaclib = 57, + 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_Ca40_reaclib = 59, - k_K39_p_to_He4_Ar36_reaclib = 60, + 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_Ti44_reaclib = 62, - k_Sc43_p_to_He4_Ca40_reaclib = 63, - k_Ti44_He4_to_Cr48_reaclib = 64, - k_Ti44_He4_to_p_V47_reaclib = 65, + 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_Fe52_reaclib = 67, - k_Cr48_He4_to_p_Mn51_reaclib = 68, + 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_Ni56_reaclib = 70, - k_Fe52_He4_to_p_Co55_reaclib = 71, + 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, @@ -442,16 +442,16 @@ namespace Rates 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_V47_p_to_He4_Ti44_derived = 151, - k_Fe52_to_He4_Cr48_derived = 152, - k_Fe52_to_p_Mn51_derived = 153, - k_Mn51_p_to_He4_Cr48_derived = 154, - k_Ni56_to_He4_Fe52_derived = 155, - k_Ni56_to_p_Co55_derived = 156, - k_Co55_p_to_He4_Fe52_derived = 157, - NumRates = k_Co55_p_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 : @@ -571,22 +571,22 @@ namespace Rates "O16_O16_to_n_S31_reaclib", // 53, "O16_C12_to_n_Si27_reaclib", // 54, "S32_He4_to_Ar36_reaclib", // 55, - "Cl35_p_to_Ar36_reaclib", // 56, - "Cl35_p_to_He4_S32_reaclib", // 57, + "Cl35_p_to_He4_S32_reaclib", // 56, + "Cl35_p_to_Ar36_reaclib", // 57, "Ar36_He4_to_Ca40_reaclib", // 58, - "K39_p_to_Ca40_reaclib", // 59, - "K39_p_to_He4_Ar36_reaclib", // 60, + "K39_p_to_He4_Ar36_reaclib", // 59, + "K39_p_to_Ca40_reaclib", // 60, "Ca40_He4_to_Ti44_reaclib", // 61, - "Sc43_p_to_Ti44_reaclib", // 62, - "Sc43_p_to_He4_Ca40_reaclib", // 63, - "Ti44_He4_to_Cr48_reaclib", // 64, - "Ti44_He4_to_p_V47_reaclib", // 65, + "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_Fe52_reaclib", // 67, - "Cr48_He4_to_p_Mn51_reaclib", // 68, + "Cr48_He4_to_p_Mn51_reaclib", // 67, + "Cr48_He4_to_Fe52_reaclib", // 68, "Mn51_p_to_Fe52_reaclib", // 69, - "Fe52_He4_to_Ni56_reaclib", // 70, - "Fe52_He4_to_p_Co55_reaclib", // 71, + "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, @@ -664,15 +664,15 @@ namespace Rates "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, - "V47_p_to_He4_Ti44_derived", // 151, - "Fe52_to_He4_Cr48_derived", // 152, - "Fe52_to_p_Mn51_derived", // 153, - "Mn51_p_to_He4_Cr48_derived", // 154, - "Ni56_to_He4_Fe52_derived", // 155, - "Ni56_to_p_Co55_derived", // 156, - "Co55_p_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 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 d7195e338..fabc465ae 100644 --- a/networks/he-burn/cno-he-burn-33a/actual_rhs.H +++ b/networks/he-burn/cno-he-burn-33a/actual_rhs.H @@ -53,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; @@ -577,6 +579,8 @@ 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]] const amrex::Real rhoy = state.rho * state.y_e; @@ -593,34 +597,29 @@ void evaluate_rates(const burn_t& state, 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); // fill modified rates next -- these can have ReacLib or // 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 branched rates -- these can have ReacLib or - // TemperatureTabular/StarLib as the underlying rate or branches. - // We do this after DerivedRate in case the branching depends - // on a derived rate. - branched_rates::fill_rates(tfactors, rate_eval); - - // Fill approximate rates - approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); - tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); - } @@ -795,7 +794,7 @@ 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; @@ -1118,9 +1117,11 @@ 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_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; diff --git a/networks/he-burn/cno-he-burn-33a/branched_rates.H b/networks/he-burn/cno-he-burn-33a/branched_rates.H index 6a8556dfc..903382523 100644 --- a/networks/he-burn/cno-he-burn-33a/branched_rates.H +++ b/networks/he-burn/cno-he-burn-33a/branched_rates.H @@ -12,6 +12,8 @@ namespace branched_rates { + using namespace Rates; + using namespace temp_tabular; 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 dbec20091..8c16f4861 100644 --- a/networks/he-burn/cno-he-burn-33a/derived_rates.H +++ b/networks/he-burn/cno-he-burn-33a/derived_rates.H @@ -4720,6 +4720,69 @@ namespace derived_rates { } + 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; + + // Evaluate partition function terms + + amrex::Real p_log_pf, dp_log_pf_dT9; + + // setting p log(partition 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; + + // setting He4 log(partition 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; + + // 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; + + // 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 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; + + 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; + + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (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) { @@ -4899,9 +4962,9 @@ namespace derived_rates { 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) { + 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) { - // V47 + p --> He4 + Ti44 + // Mn51 + p --> He4 + Cr48 rate = 0.0; drate_dT = 0.0; @@ -4914,38 +4977,38 @@ namespace derived_rates { p_log_pf = 0.0_rt; dp_log_pf_dT9 = 0.0_rt; + 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); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; // setting He4 log(partition 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; - - // 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 Mn51_log_pf, dMn51_log_pf_dT9; - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_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 + 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 + 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}; - // 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 = 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; 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 = 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; } @@ -5076,9 +5139,9 @@ namespace derived_rates { 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) { + 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) { - // Mn51 + p --> He4 + Cr48 + // Co55 + p --> He4 + Fe52 rate = 0.0; drate_dT = 0.0; @@ -5091,38 +5154,38 @@ namespace derived_rates { p_log_pf = 0.0_rt; dp_log_pf_dT9 = 0.0_rt; - 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); - amrex::Real He4_log_pf, dHe4_log_pf_dT9; // setting He4 log(partition 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 Co55_log_pf, dCo55_log_pf_dT9; - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_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 + 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 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 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; + 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 = 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 = 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; } @@ -5251,79 +5314,14 @@ namespace derived_rates { } - 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 - - rate = 0.0; - drate_dT = 0.0; - - // Evaluate partition function terms - - amrex::Real p_log_pf, dp_log_pf_dT9; - - // setting p log(partition 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; - - // setting He4 log(partition 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; - - // 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; - - // 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 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 = 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; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } - - } - template 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; @@ -6039,6 +6037,24 @@ namespace derived_rates { } } + { + // V47_p_to_He4_Ti44_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); + } +#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_He4_Ti44_derived @@ -6064,20 +6080,20 @@ namespace derived_rates { } { - // V47_p_to_He4_Ti44_derived + // 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_V47); + 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_V47); + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); } #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; + 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_V47_p_to_He4_Ti44_derived) = drate_dT; + rate_eval.dscreened_rates_dT(k_Mn51_p_to_He4_Cr48_derived) = drate_dT; } } @@ -6106,20 +6122,20 @@ namespace derived_rates { } { - // Mn51_p_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}; #ifdef SCREENING - log_scor = rate_eval.log_screen(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_Mn51); + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); } #endif - 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; + 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_Mn51_p_to_He4_Cr48_derived) = drate_dT; + rate_eval.dscreened_rates_dT(k_Co55_p_to_He4_Fe52_derived) = drate_dT; } } @@ -6147,24 +6163,6 @@ namespace derived_rates { } } - { - // Co55_p_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_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; - } - } - } 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 0d3f58970..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,8 @@ namespace modified_rates { + using namespace Rates; + using namespace reaclib_rates; using namespace temp_tabular; 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 f595c64e7..14b944e65 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: 3.0.0-25-g1299feccc +pynucastro version: 3.0.0-36-g5ade6bfb9 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 807782df8..720902eef 100644 --- a/networks/he-burn/cno-he-burn-33a/reaclib_rates.H +++ b/networks/he-burn/cno-he-burn-33a/reaclib_rates.H @@ -3568,9 +3568,9 @@ namespace reaclib_rates { 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) { + 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) { - // Cl35 + p --> Ar36 + // Cl35 + p --> He4 + S32 rate = 0.0; drate_dT = 0.0; @@ -3580,13 +3580,13 @@ namespace reaclib_rates { amrex::Real set_rate{0.0}; // il10r - ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i + ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i + -1.5 * tfactors.lnT9; ln_set_rate += log_scor; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i + dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; @@ -3600,15 +3600,15 @@ namespace reaclib_rates { 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; 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 = 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; } @@ -3621,15 +3621,15 @@ namespace reaclib_rates { 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; 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 = + -(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; } @@ -3643,14 +3643,14 @@ namespace reaclib_rates { } // il10r - ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i - + -1.5 * tfactors.lnT9; + 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; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + 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; } @@ -3667,9 +3667,9 @@ namespace reaclib_rates { 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) { + 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) { - // Cl35 + p --> He4 + S32 + // Cl35 + p --> Ar36 rate = 0.0; drate_dT = 0.0; @@ -3679,13 +3679,13 @@ namespace reaclib_rates { amrex::Real set_rate{0.0}; // il10r - ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i + ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i + -1.5 * tfactors.lnT9; ln_set_rate += log_scor; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i + dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; @@ -3699,15 +3699,15 @@ namespace reaclib_rates { 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; 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 = + -(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; } @@ -3720,15 +3720,15 @@ namespace reaclib_rates { 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; 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 = 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; } @@ -3742,14 +3742,14 @@ namespace reaclib_rates { } // 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 = -9.03294 + -2.00996 * tfactors.T9i + + -1.5 * tfactors.lnT9; 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; + dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } @@ -3800,6 +3800,42 @@ namespace reaclib_rates { } + 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) { + + // K39 + p --> He4 + Ar36 + + rate = 0.0; + drate_dT = 0.0; + + amrex::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; + + 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; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + 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) { @@ -3880,9 +3916,9 @@ namespace reaclib_rates { 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) { + 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) { - // K39 + p --> He4 + Ar36 + // Ca40 + He4 --> Ti44 rate = 0.0; drate_dT = 0.0; @@ -3891,15 +3927,15 @@ namespace reaclib_rates { 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; + // 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; 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 = + -(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; } @@ -3916,9 +3952,9 @@ namespace reaclib_rates { 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) { + 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) { - // Ca40 + He4 --> Ti44 + // Sc43 + p --> He4 + Ca40 rate = 0.0; drate_dT = 0.0; @@ -3927,15 +3963,15 @@ namespace reaclib_rates { 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; + // 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; 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 = + -(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; } @@ -3988,9 +4024,9 @@ namespace reaclib_rates { 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) { + 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) { - // Sc43 + p --> He4 + Ca40 + // Ti44 + He4 --> p + V47 rate = 0.0; drate_dT = 0.0; @@ -3999,15 +4035,15 @@ namespace reaclib_rates { 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; + // 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; 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 = 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; } @@ -4058,42 +4094,6 @@ namespace reaclib_rates { } - 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) { - - // Ti44 + He4 --> p + V47 - - rate = 0.0; - drate_dT = 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; - - 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; - - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - 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) { @@ -4195,9 +4195,9 @@ namespace reaclib_rates { 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) { + 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) { - // Cr48 + He4 --> Fe52 + // Cr48 + He4 --> p + Mn51 rate = 0.0; drate_dT = 0.0; @@ -4207,14 +4207,14 @@ namespace reaclib_rates { 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; + 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; 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 = + -(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; } @@ -4231,9 +4231,9 @@ namespace reaclib_rates { 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) { + 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) { - // Cr48 + He4 --> p + Mn51 + // Cr48 + He4 --> Fe52 rate = 0.0; drate_dT = 0.0; @@ -4243,14 +4243,14 @@ namespace reaclib_rates { 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; + 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; 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 = + -(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; } @@ -4303,9 +4303,9 @@ namespace reaclib_rates { 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) { + 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) { - // Fe52 + He4 --> Ni56 + // Fe52 + He4 --> p + Co55 rate = 0.0; drate_dT = 0.0; @@ -4315,14 +4315,14 @@ namespace reaclib_rates { 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; + 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; 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 = + -(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; } @@ -4339,9 +4339,9 @@ namespace reaclib_rates { 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) { + 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) { - // Fe52 + He4 --> p + Co55 + // Fe52 + He4 --> Ni56 rate = 0.0; drate_dT = 0.0; @@ -4351,14 +4351,14 @@ namespace reaclib_rates { 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; + 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; 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 = + -(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; } @@ -5393,7 +5393,7 @@ namespace reaclib_rates { } { - // Cl35_p_to_Ar36_reaclib + // Cl35_p_to_He4_S32_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -5403,15 +5403,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); } #endif - 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; + 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_Ar36_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib) = drate_dT; } } { - // Cl35_p_to_He4_S32_reaclib + // Cl35_p_to_Ar36_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -5421,10 +5421,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); } #endif - 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; + 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_He4_S32_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib) = drate_dT; } } @@ -5447,7 +5447,7 @@ namespace reaclib_rates { } { - // K39_p_to_Ca40_reaclib + // K39_p_to_He4_Ar36_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -5457,15 +5457,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); } #endif - 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; + 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_Ca40_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib) = drate_dT; } } { - // K39_p_to_He4_Ar36_reaclib + // K39_p_to_Ca40_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -5475,10 +5475,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); } #endif - 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; + 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_He4_Ar36_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib) = drate_dT; } } @@ -5501,7 +5501,7 @@ namespace reaclib_rates { } { - // Sc43_p_to_Ti44_reaclib + // Sc43_p_to_He4_Ca40_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -5511,15 +5511,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); } #endif - 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; + 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_Ti44_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib) = drate_dT; } } { - // Sc43_p_to_He4_Ca40_reaclib + // Sc43_p_to_Ti44_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -5529,15 +5529,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); } #endif - 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; + 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_He4_Ca40_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib) = drate_dT; } } { - // Ti44_He4_to_Cr48_reaclib + // Ti44_He4_to_p_V47_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -5547,15 +5547,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); } #endif - 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; + 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_Cr48_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_p_V47_reaclib) = drate_dT; } } { - // Ti44_He4_to_p_V47_reaclib + // Ti44_He4_to_Cr48_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -5565,10 +5565,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); } #endif - 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; + 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_p_V47_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_reaclib) = drate_dT; } } @@ -5591,7 +5591,7 @@ namespace reaclib_rates { } { - // Cr48_He4_to_Fe52_reaclib + // Cr48_He4_to_p_Mn51_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -5601,15 +5601,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); } #endif - 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; + 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_Fe52_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_p_Mn51_reaclib) = drate_dT; } } { - // Cr48_He4_to_p_Mn51_reaclib + // Cr48_He4_to_Fe52_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -5619,10 +5619,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); } #endif - 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; + 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_p_Mn51_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_reaclib) = drate_dT; } } @@ -5645,7 +5645,7 @@ namespace reaclib_rates { } { - // Fe52_He4_to_Ni56_reaclib + // Fe52_He4_to_p_Co55_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -5655,15 +5655,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); } #endif - 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; + 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_Ni56_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_p_Co55_reaclib) = drate_dT; } } { - // Fe52_He4_to_p_Co55_reaclib + // Fe52_He4_to_Ni56_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -5673,10 +5673,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); } #endif - 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; + 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_p_Co55_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_reaclib) = drate_dT; } } 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 94a7e0bcb..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_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/actual_network.H b/networks/he-burn/cno-he-burn-34am/actual_network.H index fafed1184..56719e770 100644 --- a/networks/he-burn/cno-he-burn-34am/actual_network.H +++ b/networks/he-burn/cno-he-burn-34am/actual_network.H @@ -365,22 +365,22 @@ namespace Rates 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_Ar36_reaclib = 66, - k_Cl35_p_to_He4_S32_reaclib = 67, + 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_Ca40_reaclib = 69, - k_K39_p_to_He4_Ar36_reaclib = 70, + 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_Ti44_reaclib = 72, - k_Sc43_p_to_He4_Ca40_reaclib = 73, - k_Ti44_He4_to_Cr48_reaclib = 74, - k_Ti44_He4_to_p_V47_reaclib = 75, + 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_Fe52_reaclib = 77, - k_Cr48_He4_to_p_Mn51_reaclib = 78, + 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_Ni56_reaclib = 80, - k_Fe52_He4_to_p_Co55_reaclib = 81, + 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, @@ -470,16 +470,16 @@ namespace Rates 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_V47_p_to_He4_Ti44_derived = 173, - k_Fe52_to_He4_Cr48_derived = 174, - k_Fe52_to_p_Mn51_derived = 175, - k_Mn51_p_to_He4_Cr48_derived = 176, - k_Ni56_to_He4_Fe52_derived = 177, - k_Ni56_to_p_Co55_derived = 178, - k_Co55_p_to_He4_Fe52_derived = 179, - NumRates = k_Co55_p_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 : @@ -617,22 +617,22 @@ namespace Rates "Na22_He4_to_Al26_reaclib", // 63, "Mg24_p_to_Al25_reaclib", // 64, "S32_He4_to_Ar36_reaclib", // 65, - "Cl35_p_to_Ar36_reaclib", // 66, - "Cl35_p_to_He4_S32_reaclib", // 67, + "Cl35_p_to_He4_S32_reaclib", // 66, + "Cl35_p_to_Ar36_reaclib", // 67, "Ar36_He4_to_Ca40_reaclib", // 68, - "K39_p_to_Ca40_reaclib", // 69, - "K39_p_to_He4_Ar36_reaclib", // 70, + "K39_p_to_He4_Ar36_reaclib", // 69, + "K39_p_to_Ca40_reaclib", // 70, "Ca40_He4_to_Ti44_reaclib", // 71, - "Sc43_p_to_Ti44_reaclib", // 72, - "Sc43_p_to_He4_Ca40_reaclib", // 73, - "Ti44_He4_to_Cr48_reaclib", // 74, - "Ti44_He4_to_p_V47_reaclib", // 75, + "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_Fe52_reaclib", // 77, - "Cr48_He4_to_p_Mn51_reaclib", // 78, + "Cr48_He4_to_p_Mn51_reaclib", // 77, + "Cr48_He4_to_Fe52_reaclib", // 78, "Mn51_p_to_Fe52_reaclib", // 79, - "Fe52_He4_to_Ni56_reaclib", // 80, - "Fe52_He4_to_p_Co55_reaclib", // 81, + "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, @@ -722,15 +722,15 @@ namespace Rates "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, - "V47_p_to_He4_Ti44_derived", // 173, - "Fe52_to_He4_Cr48_derived", // 174, - "Fe52_to_p_Mn51_derived", // 175, - "Mn51_p_to_He4_Cr48_derived", // 176, - "Ni56_to_He4_Fe52_derived", // 177, - "Ni56_to_p_Co55_derived", // 178, - "Co55_p_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 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 3a3ca9c75..cd50b8718 100644 --- a/networks/he-burn/cno-he-burn-34am/actual_rhs.H +++ b/networks/he-burn/cno-he-burn-34am/actual_rhs.H @@ -53,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; @@ -657,6 +659,8 @@ 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]] const amrex::Real rhoy = state.rho * state.y_e; @@ -673,34 +677,29 @@ void evaluate_rates(const burn_t& state, 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); // fill modified rates next -- these can have ReacLib or // 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 branched rates -- these can have ReacLib or - // TemperatureTabular/StarLib as the underlying rate or branches. - // We do this after DerivedRate in case the branching depends - // on a derived rate. - branched_rates::fill_rates(tfactors, rate_eval); - - // Fill approximate rates - approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); - tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); - } @@ -910,7 +909,7 @@ 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; @@ -1271,9 +1270,11 @@ 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_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; diff --git a/networks/he-burn/cno-he-burn-34am/branched_rates.H b/networks/he-burn/cno-he-burn-34am/branched_rates.H index 6a8556dfc..903382523 100644 --- a/networks/he-burn/cno-he-burn-34am/branched_rates.H +++ b/networks/he-burn/cno-he-burn-34am/branched_rates.H @@ -12,6 +12,8 @@ namespace branched_rates { + using namespace Rates; + using namespace temp_tabular; 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 fc9212835..a915ea783 100644 --- a/networks/he-burn/cno-he-burn-34am/derived_rates.H +++ b/networks/he-burn/cno-he-burn-34am/derived_rates.H @@ -5503,6 +5503,69 @@ namespace derived_rates { } + 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; + + // Evaluate partition function terms + + amrex::Real p_log_pf, dp_log_pf_dT9; + + // setting p log(partition 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; + + // setting He4 log(partition 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; + + // 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; + + // 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 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; + + 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; + + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (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) { @@ -5682,9 +5745,9 @@ namespace derived_rates { 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) { + 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) { - // V47 + p --> He4 + Ti44 + // Mn51 + p --> He4 + Cr48 rate = 0.0; drate_dT = 0.0; @@ -5697,38 +5760,38 @@ namespace derived_rates { p_log_pf = 0.0_rt; dp_log_pf_dT9 = 0.0_rt; + 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); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; // setting He4 log(partition 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; - - // 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 Mn51_log_pf, dMn51_log_pf_dT9; - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_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 + 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 + 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}; - // 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 = 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; 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 = 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; } @@ -5859,9 +5922,9 @@ namespace derived_rates { 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) { + 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) { - // Mn51 + p --> He4 + Cr48 + // Co55 + p --> He4 + Fe52 rate = 0.0; drate_dT = 0.0; @@ -5874,38 +5937,38 @@ namespace derived_rates { p_log_pf = 0.0_rt; dp_log_pf_dT9 = 0.0_rt; - 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); - amrex::Real He4_log_pf, dHe4_log_pf_dT9; // setting He4 log(partition 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 Co55_log_pf, dCo55_log_pf_dT9; - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_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 + 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 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 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; + 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 = 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 = 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; } @@ -6034,79 +6097,14 @@ namespace derived_rates { } - 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 - - rate = 0.0; - drate_dT = 0.0; - - // Evaluate partition function terms - - amrex::Real p_log_pf, dp_log_pf_dT9; - - // setting p log(partition 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; - - // setting He4 log(partition 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; - - // 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; - - // 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 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 = 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; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } - - } - template 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; @@ -6936,6 +6934,24 @@ namespace derived_rates { } } + { + // V47_p_to_He4_Ti44_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); + } +#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_He4_Ti44_derived @@ -6961,20 +6977,20 @@ namespace derived_rates { } { - // V47_p_to_He4_Ti44_derived + // 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_V47); + 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_V47); + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); } #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; + 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_V47_p_to_He4_Ti44_derived) = drate_dT; + rate_eval.dscreened_rates_dT(k_Mn51_p_to_He4_Cr48_derived) = drate_dT; } } @@ -7003,20 +7019,20 @@ namespace derived_rates { } { - // Mn51_p_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}; #ifdef SCREENING - log_scor = rate_eval.log_screen(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_Mn51); + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); } #endif - 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; + 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_Mn51_p_to_He4_Cr48_derived) = drate_dT; + rate_eval.dscreened_rates_dT(k_Co55_p_to_He4_Fe52_derived) = drate_dT; } } @@ -7044,24 +7060,6 @@ namespace derived_rates { } } - { - // Co55_p_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_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; - } - } - } 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 0b2252fbf..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,8 @@ namespace modified_rates { + using namespace Rates; + using namespace reaclib_rates; using namespace temp_tabular; 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 f595c64e7..14b944e65 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: 3.0.0-25-g1299feccc +pynucastro version: 3.0.0-36-g5ade6bfb9 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 d269c53eb..120426c10 100644 --- a/networks/he-burn/cno-he-burn-34am/reaclib_rates.H +++ b/networks/he-burn/cno-he-burn-34am/reaclib_rates.H @@ -4264,9 +4264,9 @@ namespace reaclib_rates { 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) { + 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) { - // Cl35 + p --> Ar36 + // Cl35 + p --> He4 + S32 rate = 0.0; drate_dT = 0.0; @@ -4276,13 +4276,13 @@ namespace reaclib_rates { amrex::Real set_rate{0.0}; // il10r - ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i + ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i + -1.5 * tfactors.lnT9; ln_set_rate += log_scor; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i + dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; @@ -4296,15 +4296,15 @@ namespace reaclib_rates { 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; 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 = 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; } @@ -4317,15 +4317,15 @@ namespace reaclib_rates { 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; 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 = + -(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; } @@ -4339,14 +4339,14 @@ namespace reaclib_rates { } // il10r - ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i - + -1.5 * tfactors.lnT9; + 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; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + 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; } @@ -4363,9 +4363,9 @@ namespace reaclib_rates { 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) { + 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) { - // Cl35 + p --> He4 + S32 + // Cl35 + p --> Ar36 rate = 0.0; drate_dT = 0.0; @@ -4375,13 +4375,13 @@ namespace reaclib_rates { amrex::Real set_rate{0.0}; // il10r - ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i + ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i + -1.5 * tfactors.lnT9; ln_set_rate += log_scor; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i + dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; @@ -4395,15 +4395,15 @@ namespace reaclib_rates { 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; 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 = + -(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; } @@ -4416,15 +4416,15 @@ namespace reaclib_rates { 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; 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 = 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; } @@ -4438,14 +4438,14 @@ namespace reaclib_rates { } // 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 = -9.03294 + -2.00996 * tfactors.T9i + + -1.5 * tfactors.lnT9; 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; + dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } @@ -4496,6 +4496,42 @@ namespace reaclib_rates { } + 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) { + + // K39 + p --> He4 + Ar36 + + rate = 0.0; + drate_dT = 0.0; + + amrex::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; + + 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; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + 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) { @@ -4576,9 +4612,9 @@ namespace reaclib_rates { 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) { + 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) { - // K39 + p --> He4 + Ar36 + // Ca40 + He4 --> Ti44 rate = 0.0; drate_dT = 0.0; @@ -4587,15 +4623,15 @@ namespace reaclib_rates { 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; + // 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; 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 = + -(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; } @@ -4612,9 +4648,9 @@ namespace reaclib_rates { 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) { + 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) { - // Ca40 + He4 --> Ti44 + // Sc43 + p --> He4 + Ca40 rate = 0.0; drate_dT = 0.0; @@ -4623,15 +4659,15 @@ namespace reaclib_rates { 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; + // 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; 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 = + -(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; } @@ -4684,9 +4720,9 @@ namespace reaclib_rates { 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) { + 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) { - // Sc43 + p --> He4 + Ca40 + // Ti44 + He4 --> p + V47 rate = 0.0; drate_dT = 0.0; @@ -4695,15 +4731,15 @@ namespace reaclib_rates { 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; + // 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; 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 = 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; } @@ -4754,42 +4790,6 @@ namespace reaclib_rates { } - 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) { - - // Ti44 + He4 --> p + V47 - - rate = 0.0; - drate_dT = 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; - - 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; - - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - 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) { @@ -4891,9 +4891,9 @@ namespace reaclib_rates { 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) { + 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) { - // Cr48 + He4 --> Fe52 + // Cr48 + He4 --> p + Mn51 rate = 0.0; drate_dT = 0.0; @@ -4903,14 +4903,14 @@ namespace reaclib_rates { 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; + 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; 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 = + -(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; } @@ -4927,9 +4927,9 @@ namespace reaclib_rates { 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) { + 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) { - // Cr48 + He4 --> p + Mn51 + // Cr48 + He4 --> Fe52 rate = 0.0; drate_dT = 0.0; @@ -4939,14 +4939,14 @@ namespace reaclib_rates { 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; + 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; 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 = + -(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; } @@ -4999,9 +4999,9 @@ namespace reaclib_rates { 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) { + 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) { - // Fe52 + He4 --> Ni56 + // Fe52 + He4 --> p + Co55 rate = 0.0; drate_dT = 0.0; @@ -5011,14 +5011,14 @@ namespace reaclib_rates { 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; + 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; 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 = + -(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; } @@ -5035,9 +5035,9 @@ namespace reaclib_rates { 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) { + 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) { - // Fe52 + He4 --> p + Co55 + // Fe52 + He4 --> Ni56 rate = 0.0; drate_dT = 0.0; @@ -5047,14 +5047,14 @@ namespace reaclib_rates { 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; + 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; 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 = + -(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; } @@ -6269,7 +6269,7 @@ namespace reaclib_rates { } { - // Cl35_p_to_Ar36_reaclib + // Cl35_p_to_He4_S32_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6279,15 +6279,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); } #endif - 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; + 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_Ar36_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib) = drate_dT; } } { - // Cl35_p_to_He4_S32_reaclib + // Cl35_p_to_Ar36_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6297,10 +6297,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); } #endif - 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; + 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_He4_S32_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib) = drate_dT; } } @@ -6323,7 +6323,7 @@ namespace reaclib_rates { } { - // K39_p_to_Ca40_reaclib + // K39_p_to_He4_Ar36_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6333,15 +6333,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); } #endif - 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; + 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_Ca40_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib) = drate_dT; } } { - // K39_p_to_He4_Ar36_reaclib + // K39_p_to_Ca40_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6351,10 +6351,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); } #endif - 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; + 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_He4_Ar36_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib) = drate_dT; } } @@ -6377,7 +6377,7 @@ namespace reaclib_rates { } { - // Sc43_p_to_Ti44_reaclib + // Sc43_p_to_He4_Ca40_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6387,15 +6387,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); } #endif - 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; + 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_Ti44_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib) = drate_dT; } } { - // Sc43_p_to_He4_Ca40_reaclib + // Sc43_p_to_Ti44_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6405,15 +6405,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); } #endif - 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; + 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_He4_Ca40_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib) = drate_dT; } } { - // Ti44_He4_to_Cr48_reaclib + // Ti44_He4_to_p_V47_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6423,15 +6423,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); } #endif - 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; + 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_Cr48_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_p_V47_reaclib) = drate_dT; } } { - // Ti44_He4_to_p_V47_reaclib + // Ti44_He4_to_Cr48_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6441,10 +6441,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); } #endif - 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; + 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_p_V47_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_reaclib) = drate_dT; } } @@ -6467,7 +6467,7 @@ namespace reaclib_rates { } { - // Cr48_He4_to_Fe52_reaclib + // Cr48_He4_to_p_Mn51_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6477,15 +6477,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); } #endif - 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; + 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_Fe52_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_p_Mn51_reaclib) = drate_dT; } } { - // Cr48_He4_to_p_Mn51_reaclib + // Cr48_He4_to_Fe52_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6495,10 +6495,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); } #endif - 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; + 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_p_Mn51_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_reaclib) = drate_dT; } } @@ -6521,7 +6521,7 @@ namespace reaclib_rates { } { - // Fe52_He4_to_Ni56_reaclib + // Fe52_He4_to_p_Co55_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6531,15 +6531,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); } #endif - 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; + 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_Ni56_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_p_Co55_reaclib) = drate_dT; } } { - // Fe52_He4_to_p_Co55_reaclib + // Fe52_He4_to_Ni56_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6549,10 +6549,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); } #endif - 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; + 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_p_Co55_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_reaclib) = drate_dT; } } 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 94a7e0bcb..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_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/actual_network.H b/networks/he-burn/he-burn-19am/actual_network.H index d2991b843..682f9cf7c 100644 --- a/networks/he-burn/he-burn-19am/actual_network.H +++ b/networks/he-burn/he-burn-19am/actual_network.H @@ -236,22 +236,22 @@ namespace Rates k_O16_O16_to_n_S31_reaclib = 24, k_O16_C12_to_n_Si27_reaclib = 25, k_S32_He4_to_Ar36_reaclib = 26, - k_Cl35_p_to_Ar36_reaclib = 27, - k_Cl35_p_to_He4_S32_reaclib = 28, + 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_Ca40_reaclib = 30, - k_K39_p_to_He4_Ar36_reaclib = 31, + 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_Ti44_reaclib = 33, - k_Sc43_p_to_He4_Ca40_reaclib = 34, - k_Ti44_He4_to_Cr48_reaclib = 35, - k_Ti44_He4_to_p_V47_reaclib = 36, + 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_Fe52_reaclib = 38, - k_Cr48_He4_to_p_Mn51_reaclib = 39, + 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_Ni56_reaclib = 41, - k_Fe52_He4_to_p_Co55_reaclib = 42, + 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, @@ -293,16 +293,16 @@ namespace Rates 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_V47_p_to_He4_Ti44_derived = 86, - k_Fe52_to_He4_Cr48_derived = 87, - k_Fe52_to_p_Mn51_derived = 88, - k_Mn51_p_to_He4_Cr48_derived = 89, - k_Ni56_to_He4_Fe52_derived = 90, - k_Ni56_to_p_Co55_derived = 91, - k_Co55_p_to_He4_Fe52_derived = 92, - NumRates = k_Co55_p_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 : @@ -372,22 +372,22 @@ namespace Rates "O16_O16_to_n_S31_reaclib", // 24, "O16_C12_to_n_Si27_reaclib", // 25, "S32_He4_to_Ar36_reaclib", // 26, - "Cl35_p_to_Ar36_reaclib", // 27, - "Cl35_p_to_He4_S32_reaclib", // 28, + "Cl35_p_to_He4_S32_reaclib", // 27, + "Cl35_p_to_Ar36_reaclib", // 28, "Ar36_He4_to_Ca40_reaclib", // 29, - "K39_p_to_Ca40_reaclib", // 30, - "K39_p_to_He4_Ar36_reaclib", // 31, + "K39_p_to_He4_Ar36_reaclib", // 30, + "K39_p_to_Ca40_reaclib", // 31, "Ca40_He4_to_Ti44_reaclib", // 32, - "Sc43_p_to_Ti44_reaclib", // 33, - "Sc43_p_to_He4_Ca40_reaclib", // 34, - "Ti44_He4_to_Cr48_reaclib", // 35, - "Ti44_He4_to_p_V47_reaclib", // 36, + "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_Fe52_reaclib", // 38, - "Cr48_He4_to_p_Mn51_reaclib", // 39, + "Cr48_He4_to_p_Mn51_reaclib", // 38, + "Cr48_He4_to_Fe52_reaclib", // 39, "Mn51_p_to_Fe52_reaclib", // 40, - "Fe52_He4_to_Ni56_reaclib", // 41, - "Fe52_He4_to_p_Co55_reaclib", // 42, + "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, @@ -429,15 +429,15 @@ namespace Rates "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, - "V47_p_to_He4_Ti44_derived", // 86, - "Fe52_to_He4_Cr48_derived", // 87, - "Fe52_to_p_Mn51_derived", // 88, - "Mn51_p_to_He4_Cr48_derived", // 89, - "Ni56_to_He4_Fe52_derived", // 90, - "Ni56_to_p_Co55_derived", // 91, - "Co55_p_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 diff --git a/networks/he-burn/he-burn-19am/actual_rhs.H b/networks/he-burn/he-burn-19am/actual_rhs.H index f118c1f0a..859628c07 100644 --- a/networks/he-burn/he-burn-19am/actual_rhs.H +++ b/networks/he-burn/he-burn-19am/actual_rhs.H @@ -53,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; @@ -367,6 +369,8 @@ 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]] const amrex::Real rhoy = state.rho * state.y_e; @@ -383,26 +387,24 @@ void evaluate_rates(const burn_t& state, 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); // fill modified rates next -- these can have ReacLib or // 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 branched rates -- these can have ReacLib or - // TemperatureTabular/StarLib as the underlying rate or branches. - // We do this after DerivedRate in case the branching depends - // on a derived rate. - branched_rates::fill_rates(tfactors, rate_eval); - - if (disable_C12_p_to_N13_reaclib) { rate_eval.screened_rates(k_C12_p_to_N13_reaclib) = 0.0; @@ -428,11 +430,8 @@ void evaluate_rates(const burn_t& state, // Fill approximate rates - approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); - tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); - } @@ -567,7 +566,7 @@ 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; @@ -760,9 +759,11 @@ 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_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; diff --git a/networks/he-burn/he-burn-19am/branched_rates.H b/networks/he-burn/he-burn-19am/branched_rates.H index 6a8556dfc..903382523 100644 --- a/networks/he-burn/he-burn-19am/branched_rates.H +++ b/networks/he-burn/he-burn-19am/branched_rates.H @@ -12,6 +12,8 @@ namespace branched_rates { + using namespace Rates; + using namespace temp_tabular; diff --git a/networks/he-burn/he-burn-19am/derived_rates.H b/networks/he-burn/he-burn-19am/derived_rates.H index a363b82c6..5e0060c31 100644 --- a/networks/he-burn/he-burn-19am/derived_rates.H +++ b/networks/he-burn/he-burn-19am/derived_rates.H @@ -1978,6 +1978,69 @@ namespace derived_rates { } + 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; + + // Evaluate partition function terms + + amrex::Real p_log_pf, dp_log_pf_dT9; + + // setting p log(partition 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; + + // setting He4 log(partition 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; + + // 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; + + // 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 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; + + 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; + + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (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) { @@ -2157,9 +2220,9 @@ namespace derived_rates { 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) { + 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) { - // V47 + p --> He4 + Ti44 + // Mn51 + p --> He4 + Cr48 rate = 0.0; drate_dT = 0.0; @@ -2172,38 +2235,38 @@ namespace derived_rates { p_log_pf = 0.0_rt; dp_log_pf_dT9 = 0.0_rt; + 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); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; // setting He4 log(partition 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; - - // 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 Mn51_log_pf, dMn51_log_pf_dT9; - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_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 + 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 + 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}; - // 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 = 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; 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 = 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; } @@ -2334,9 +2397,9 @@ namespace derived_rates { 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) { + 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) { - // Mn51 + p --> He4 + Cr48 + // Co55 + p --> He4 + Fe52 rate = 0.0; drate_dT = 0.0; @@ -2349,38 +2412,38 @@ namespace derived_rates { p_log_pf = 0.0_rt; dp_log_pf_dT9 = 0.0_rt; - 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); - amrex::Real He4_log_pf, dHe4_log_pf_dT9; // setting He4 log(partition 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 Co55_log_pf, dCo55_log_pf_dT9; - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_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 + 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 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 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; + 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 = 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 = 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; } @@ -2509,79 +2572,14 @@ namespace derived_rates { } - 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 - - rate = 0.0; - drate_dT = 0.0; - - // Evaluate partition function terms - - amrex::Real p_log_pf, dp_log_pf_dT9; - - // setting p log(partition 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; - - // setting He4 log(partition 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; - - // 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; - - // 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 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 = 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; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } - - } - template 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; @@ -2907,6 +2905,24 @@ namespace derived_rates { } } + { + // V47_p_to_He4_Ti44_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); + } +#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_He4_Ti44_derived @@ -2932,20 +2948,20 @@ namespace derived_rates { } { - // V47_p_to_He4_Ti44_derived + // 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_V47); + 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_V47); + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); } #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; + 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_V47_p_to_He4_Ti44_derived) = drate_dT; + rate_eval.dscreened_rates_dT(k_Mn51_p_to_He4_Cr48_derived) = drate_dT; } } @@ -2974,20 +2990,20 @@ namespace derived_rates { } { - // Mn51_p_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}; #ifdef SCREENING - log_scor = rate_eval.log_screen(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_Mn51); + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); } #endif - 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; + 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_Mn51_p_to_He4_Cr48_derived) = drate_dT; + rate_eval.dscreened_rates_dT(k_Co55_p_to_He4_Fe52_derived) = drate_dT; } } @@ -3015,24 +3031,6 @@ namespace derived_rates { } } - { - // Co55_p_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_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; - } - } - } diff --git a/networks/he-burn/he-burn-19am/modified_rates.H b/networks/he-burn/he-burn-19am/modified_rates.H index 4f9b267d8..edbab795f 100644 --- a/networks/he-burn/he-burn-19am/modified_rates.H +++ b/networks/he-burn/he-burn-19am/modified_rates.H @@ -12,6 +12,8 @@ namespace modified_rates { + using namespace Rates; + using namespace reaclib_rates; using namespace temp_tabular; diff --git a/networks/he-burn/he-burn-19am/pynucastro-info.txt b/networks/he-burn/he-burn-19am/pynucastro-info.txt index f595c64e7..14b944e65 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: 3.0.0-25-g1299feccc +pynucastro version: 3.0.0-36-g5ade6bfb9 diff --git a/networks/he-burn/he-burn-19am/reaclib_rates.H b/networks/he-burn/he-burn-19am/reaclib_rates.H index c98a51ddb..a68f7c959 100644 --- a/networks/he-burn/he-burn-19am/reaclib_rates.H +++ b/networks/he-burn/he-burn-19am/reaclib_rates.H @@ -1456,9 +1456,9 @@ namespace reaclib_rates { 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) { + 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) { - // Cl35 + p --> Ar36 + // Cl35 + p --> He4 + S32 rate = 0.0; drate_dT = 0.0; @@ -1468,13 +1468,13 @@ namespace reaclib_rates { amrex::Real set_rate{0.0}; // il10r - ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i + ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i + -1.5 * tfactors.lnT9; ln_set_rate += log_scor; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i + dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; @@ -1488,15 +1488,15 @@ namespace reaclib_rates { 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; 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 = 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; } @@ -1509,15 +1509,15 @@ namespace reaclib_rates { 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; 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 = + -(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; } @@ -1531,14 +1531,14 @@ namespace reaclib_rates { } // il10r - ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i - + -1.5 * tfactors.lnT9; + 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; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + 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; } @@ -1555,9 +1555,9 @@ namespace reaclib_rates { 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) { + 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) { - // Cl35 + p --> He4 + S32 + // Cl35 + p --> Ar36 rate = 0.0; drate_dT = 0.0; @@ -1567,13 +1567,13 @@ namespace reaclib_rates { amrex::Real set_rate{0.0}; // il10r - ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i + ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i + -1.5 * tfactors.lnT9; ln_set_rate += log_scor; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i + dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; @@ -1587,15 +1587,15 @@ namespace reaclib_rates { 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; 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 = + -(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; } @@ -1608,15 +1608,15 @@ namespace reaclib_rates { 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; 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 = 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; } @@ -1630,14 +1630,14 @@ namespace reaclib_rates { } // 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 = -9.03294 + -2.00996 * tfactors.T9i + + -1.5 * tfactors.lnT9; 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; + dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } @@ -1688,6 +1688,42 @@ namespace reaclib_rates { } + 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) { + + // K39 + p --> He4 + Ar36 + + rate = 0.0; + drate_dT = 0.0; + + amrex::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; + + 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; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + 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) { @@ -1768,9 +1804,9 @@ namespace reaclib_rates { 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) { + 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) { - // K39 + p --> He4 + Ar36 + // Ca40 + He4 --> Ti44 rate = 0.0; drate_dT = 0.0; @@ -1779,15 +1815,15 @@ namespace reaclib_rates { 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; + // 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; 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 = + -(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; } @@ -1804,9 +1840,9 @@ namespace reaclib_rates { 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) { + 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) { - // Ca40 + He4 --> Ti44 + // Sc43 + p --> He4 + Ca40 rate = 0.0; drate_dT = 0.0; @@ -1815,15 +1851,15 @@ namespace reaclib_rates { 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; + // 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; 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 = + -(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; } @@ -1876,9 +1912,9 @@ namespace reaclib_rates { 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) { + 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) { - // Sc43 + p --> He4 + Ca40 + // Ti44 + He4 --> p + V47 rate = 0.0; drate_dT = 0.0; @@ -1887,15 +1923,15 @@ namespace reaclib_rates { 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; + // 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; 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 = 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; } @@ -1946,42 +1982,6 @@ namespace reaclib_rates { } - 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) { - - // Ti44 + He4 --> p + V47 - - rate = 0.0; - drate_dT = 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; - - 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; - - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - 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) { @@ -2083,9 +2083,9 @@ namespace reaclib_rates { 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) { + 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) { - // Cr48 + He4 --> Fe52 + // Cr48 + He4 --> p + Mn51 rate = 0.0; drate_dT = 0.0; @@ -2095,14 +2095,14 @@ namespace reaclib_rates { 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; + 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; 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 = + -(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; } @@ -2119,9 +2119,9 @@ namespace reaclib_rates { 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) { + 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) { - // Cr48 + He4 --> p + Mn51 + // Cr48 + He4 --> Fe52 rate = 0.0; drate_dT = 0.0; @@ -2131,14 +2131,14 @@ namespace reaclib_rates { 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; + 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; 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 = + -(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; } @@ -2191,9 +2191,9 @@ namespace reaclib_rates { 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) { + 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) { - // Fe52 + He4 --> Ni56 + // Fe52 + He4 --> p + Co55 rate = 0.0; drate_dT = 0.0; @@ -2203,14 +2203,14 @@ namespace reaclib_rates { 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; + 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; 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 = + -(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; } @@ -2227,9 +2227,9 @@ namespace reaclib_rates { 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) { + 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) { - // Fe52 + He4 --> p + Co55 + // Fe52 + He4 --> Ni56 rate = 0.0; drate_dT = 0.0; @@ -2239,14 +2239,14 @@ namespace reaclib_rates { 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; + 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; 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 = + -(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; } @@ -2777,7 +2777,7 @@ namespace reaclib_rates { } { - // Cl35_p_to_Ar36_reaclib + // Cl35_p_to_He4_S32_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2787,15 +2787,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); } #endif - 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; + 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_Ar36_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib) = drate_dT; } } { - // Cl35_p_to_He4_S32_reaclib + // Cl35_p_to_Ar36_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2805,10 +2805,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); } #endif - 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; + 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_He4_S32_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib) = drate_dT; } } @@ -2831,7 +2831,7 @@ namespace reaclib_rates { } { - // K39_p_to_Ca40_reaclib + // K39_p_to_He4_Ar36_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2841,15 +2841,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); } #endif - 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; + 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_Ca40_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib) = drate_dT; } } { - // K39_p_to_He4_Ar36_reaclib + // K39_p_to_Ca40_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2859,10 +2859,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); } #endif - 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; + 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_He4_Ar36_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib) = drate_dT; } } @@ -2885,7 +2885,7 @@ namespace reaclib_rates { } { - // Sc43_p_to_Ti44_reaclib + // Sc43_p_to_He4_Ca40_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2895,15 +2895,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); } #endif - 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; + 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_Ti44_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib) = drate_dT; } } { - // Sc43_p_to_He4_Ca40_reaclib + // Sc43_p_to_Ti44_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2913,15 +2913,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); } #endif - 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; + 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_He4_Ca40_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib) = drate_dT; } } { - // Ti44_He4_to_Cr48_reaclib + // Ti44_He4_to_p_V47_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2931,15 +2931,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); } #endif - 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; + 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_Cr48_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_p_V47_reaclib) = drate_dT; } } { - // Ti44_He4_to_p_V47_reaclib + // Ti44_He4_to_Cr48_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2949,10 +2949,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); } #endif - 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; + 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_p_V47_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_reaclib) = drate_dT; } } @@ -2975,7 +2975,7 @@ namespace reaclib_rates { } { - // Cr48_He4_to_Fe52_reaclib + // Cr48_He4_to_p_Mn51_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -2985,15 +2985,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); } #endif - 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; + 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_Fe52_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_p_Mn51_reaclib) = drate_dT; } } { - // Cr48_He4_to_p_Mn51_reaclib + // Cr48_He4_to_Fe52_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -3003,10 +3003,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); } #endif - 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; + 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_p_Mn51_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_reaclib) = drate_dT; } } @@ -3029,7 +3029,7 @@ namespace reaclib_rates { } { - // Fe52_He4_to_Ni56_reaclib + // Fe52_He4_to_p_Co55_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -3039,15 +3039,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); } #endif - 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; + 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_Ni56_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_p_Co55_reaclib) = drate_dT; } } { - // Fe52_He4_to_p_Co55_reaclib + // Fe52_He4_to_Ni56_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -3057,10 +3057,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); } #endif - 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; + 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_p_Co55_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_reaclib) = drate_dT; } } 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 94a7e0bcb..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_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/actual_network.H b/networks/he-burn/he-burn-28amnp/actual_network.H index f1b69c28c..01e4f6c10 100644 --- a/networks/he-burn/he-burn-28amnp/actual_network.H +++ b/networks/he-burn/he-burn-28amnp/actual_network.H @@ -308,16 +308,16 @@ namespace Rates 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_Ar36_reaclib = 45, - k_Cl35_p_to_He4_S32_reaclib = 46, + 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_Ca40_reaclib = 48, - k_K39_p_to_He4_Ar36_reaclib = 49, + 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_Ti44_reaclib = 51, - k_Sc43_p_to_He4_Ca40_reaclib = 52, - k_Ti44_He4_to_Cr48_reaclib = 53, - k_Ti44_He4_to_p_V47_reaclib = 54, + 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, @@ -391,16 +391,16 @@ namespace Rates 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_V47_p_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 : @@ -496,16 +496,16 @@ namespace Rates "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_Ar36_reaclib", // 45, - "Cl35_p_to_He4_S32_reaclib", // 46, + "Cl35_p_to_He4_S32_reaclib", // 45, + "Cl35_p_to_Ar36_reaclib", // 46, "Ar36_He4_to_Ca40_reaclib", // 47, - "K39_p_to_Ca40_reaclib", // 48, - "K39_p_to_He4_Ar36_reaclib", // 49, + "K39_p_to_He4_Ar36_reaclib", // 48, + "K39_p_to_Ca40_reaclib", // 49, "Ca40_He4_to_Ti44_reaclib", // 50, - "Sc43_p_to_Ti44_reaclib", // 51, - "Sc43_p_to_He4_Ca40_reaclib", // 52, - "Ti44_He4_to_Cr48_reaclib", // 53, - "Ti44_He4_to_p_V47_reaclib", // 54, + "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, @@ -579,15 +579,15 @@ namespace Rates "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, - "V47_p_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 diff --git a/networks/he-burn/he-burn-28amnp/actual_rhs.H b/networks/he-burn/he-burn-28amnp/actual_rhs.H index c4e45def7..27d04ec42 100644 --- a/networks/he-burn/he-burn-28amnp/actual_rhs.H +++ b/networks/he-burn/he-burn-28amnp/actual_rhs.H @@ -53,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; @@ -447,6 +449,8 @@ 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]] const amrex::Real rhoy = state.rho * state.y_e; @@ -463,34 +467,29 @@ void evaluate_rates(const burn_t& state, 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); // fill modified rates next -- these can have ReacLib or // 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 branched rates -- these can have ReacLib or - // TemperatureTabular/StarLib as the underlying rate or branches. - // We do this after DerivedRate in case the branching depends - // on a derived rate. - branched_rates::fill_rates(tfactors, rate_eval); - - // Fill approximate rates - approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); - tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); - } @@ -649,7 +648,7 @@ 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; @@ -930,9 +929,11 @@ 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_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); diff --git a/networks/he-burn/he-burn-28amnp/branched_rates.H b/networks/he-burn/he-burn-28amnp/branched_rates.H index 6a8556dfc..903382523 100644 --- a/networks/he-burn/he-burn-28amnp/branched_rates.H +++ b/networks/he-burn/he-burn-28amnp/branched_rates.H @@ -12,6 +12,8 @@ namespace branched_rates { + using namespace Rates; + using namespace temp_tabular; diff --git a/networks/he-burn/he-burn-28amnp/derived_rates.H b/networks/he-burn/he-burn-28amnp/derived_rates.H index 5c5013d11..d56bf9724 100644 --- a/networks/he-burn/he-burn-28amnp/derived_rates.H +++ b/networks/he-burn/he-burn-28amnp/derived_rates.H @@ -3046,6 +3046,69 @@ namespace derived_rates { } + 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; + + // Evaluate partition function terms + + amrex::Real p_log_pf, dp_log_pf_dT9; + + // setting p log(partition 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; + + // setting He4 log(partition 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; + + // 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; + + // 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 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; + + 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; + + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (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) { @@ -3225,53 +3288,47 @@ namespace derived_rates { 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) { + 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) { - // V47 + p --> He4 + Ti44 + // Fe53 --> n + Fe52 rate = 0.0; drate_dT = 0.0; // Evaluate partition function terms - amrex::Real p_log_pf, dp_log_pf_dT9; - - // setting p log(partition 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 n_log_pf, dn_log_pf_dT9; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_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 V47_log_pf, dV47_log_pf_dT9; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - // interpolating V47 partition function - get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_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 Ti44_log_pf, dTi44_log_pf_dT9; + amrex::Real Fe53_log_pf, dFe53_log_pf_dT9; - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_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 + 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 = 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}; - // 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 = 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; 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 = 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; } @@ -3345,9 +3402,9 @@ namespace derived_rates { 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) { + 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) { - // Fe53 --> n + Fe52 + // Fe55 --> n + Fe54 rate = 0.0; drate_dT = 0.0; @@ -3360,32 +3417,32 @@ namespace derived_rates { n_log_pf = 0.0_rt; dn_log_pf_dT9 = 0.0_rt; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + amrex::Real Fe55_log_pf, dFe55_log_pf_dT9; - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_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 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 + 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}; - // 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 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; 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 = 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; } @@ -3459,9 +3516,9 @@ namespace derived_rates { 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) { + 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) { - // Fe55 --> n + Fe54 + // Ni57 --> n + Ni56 rate = 0.0; drate_dT = 0.0; @@ -3474,32 +3531,32 @@ namespace derived_rates { n_log_pf = 0.0_rt; dn_log_pf_dT9 = 0.0_rt; - amrex::Real Fe55_log_pf, dFe55_log_pf_dT9; + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - // interpolating Fe55 partition function - get_partition_function_cached(Fe55, tfactors.T9, pf_cache, Fe55_log_pf, dFe55_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 Fe54_log_pf, dFe54_log_pf_dT9; + amrex::Real Ni57_log_pf, dNi57_log_pf_dT9; - // interpolating Fe54 partition function - get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_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 + 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 + 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}; - // 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 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; 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 = 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; } @@ -3571,73 +3628,14 @@ namespace derived_rates { } - 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 - - rate = 0.0; - drate_dT = 0.0; - - // Evaluate partition function terms - - 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; - - 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); - - 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); - - 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}; - - // 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; - - 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; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } - - } - template 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; @@ -4221,6 +4219,24 @@ namespace derived_rates { } } + { + // V47_p_to_He4_Ti44_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); + } +#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_He4_Ti44_derived @@ -4246,20 +4262,14 @@ namespace derived_rates { } { - // V47_p_to_He4_Ti44_derived + // Fe53_to_n_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_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; + 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_V47_p_to_He4_Ti44_derived) = drate_dT; + rate_eval.dscreened_rates_dT(k_Fe53_to_n_Fe52_derived) = drate_dT; } } @@ -4276,14 +4286,14 @@ namespace derived_rates { } { - // Fe53_to_n_Fe52_derived + // Fe55_to_n_Fe54_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; + 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_Fe53_to_n_Fe52_derived) = drate_dT; + rate_eval.dscreened_rates_dT(k_Fe55_to_n_Fe54_derived) = drate_dT; } } @@ -4300,14 +4310,14 @@ namespace derived_rates { } { - // Fe55_to_n_Fe54_derived + // Ni57_to_n_Ni56_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; + 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_Fe55_to_n_Fe54_derived) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ni57_to_n_Ni56_derived) = drate_dT; } } @@ -4323,18 +4333,6 @@ namespace derived_rates { } } - { - // 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; - } - } - } diff --git a/networks/he-burn/he-burn-28amnp/modified_rates.H b/networks/he-burn/he-burn-28amnp/modified_rates.H index 4f9b267d8..edbab795f 100644 --- a/networks/he-burn/he-burn-28amnp/modified_rates.H +++ b/networks/he-burn/he-burn-28amnp/modified_rates.H @@ -12,6 +12,8 @@ namespace modified_rates { + using namespace Rates; + using namespace reaclib_rates; using namespace temp_tabular; diff --git a/networks/he-burn/he-burn-28amnp/pynucastro-info.txt b/networks/he-burn/he-burn-28amnp/pynucastro-info.txt index f595c64e7..14b944e65 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: 3.0.0-25-g1299feccc +pynucastro version: 3.0.0-36-g5ade6bfb9 diff --git a/networks/he-burn/he-burn-28amnp/reaclib_rates.H b/networks/he-burn/he-burn-28amnp/reaclib_rates.H index a451cbe05..d6f5e79fe 100644 --- a/networks/he-burn/he-burn-28amnp/reaclib_rates.H +++ b/networks/he-burn/he-burn-28amnp/reaclib_rates.H @@ -2104,9 +2104,9 @@ namespace reaclib_rates { 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) { + 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) { - // Cl35 + p --> Ar36 + // Cl35 + p --> He4 + S32 rate = 0.0; drate_dT = 0.0; @@ -2116,13 +2116,13 @@ namespace reaclib_rates { amrex::Real set_rate{0.0}; // il10r - ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i + ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i + -1.5 * tfactors.lnT9; ln_set_rate += log_scor; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i + dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; @@ -2136,15 +2136,15 @@ namespace reaclib_rates { 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; 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 = 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; } @@ -2157,15 +2157,15 @@ namespace reaclib_rates { 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; 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 = + -(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; } @@ -2179,14 +2179,14 @@ namespace reaclib_rates { } // il10r - ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i - + -1.5 * tfactors.lnT9; + 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; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + 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; } @@ -2203,9 +2203,9 @@ namespace reaclib_rates { 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) { + 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) { - // Cl35 + p --> He4 + S32 + // Cl35 + p --> Ar36 rate = 0.0; drate_dT = 0.0; @@ -2215,13 +2215,13 @@ namespace reaclib_rates { amrex::Real set_rate{0.0}; // il10r - ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i + ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i + -1.5 * tfactors.lnT9; ln_set_rate += log_scor; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i + dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; @@ -2235,15 +2235,15 @@ namespace reaclib_rates { 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; 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 = + -(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; } @@ -2256,15 +2256,15 @@ namespace reaclib_rates { 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; 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 = 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; } @@ -2278,14 +2278,14 @@ namespace reaclib_rates { } // 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 = -9.03294 + -2.00996 * tfactors.T9i + + -1.5 * tfactors.lnT9; 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; + dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } @@ -2336,6 +2336,42 @@ namespace reaclib_rates { } + 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) { + + // K39 + p --> He4 + Ar36 + + rate = 0.0; + drate_dT = 0.0; + + amrex::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; + + 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; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + 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) { @@ -2416,9 +2452,9 @@ namespace reaclib_rates { 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) { + 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) { - // K39 + p --> He4 + Ar36 + // Ca40 + He4 --> Ti44 rate = 0.0; drate_dT = 0.0; @@ -2427,15 +2463,15 @@ namespace reaclib_rates { 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; + // 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; 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 = + -(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; } @@ -2452,9 +2488,9 @@ namespace reaclib_rates { 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) { + 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) { - // Ca40 + He4 --> Ti44 + // Sc43 + p --> He4 + Ca40 rate = 0.0; drate_dT = 0.0; @@ -2463,15 +2499,15 @@ namespace reaclib_rates { 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; + // 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; 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 = + -(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; } @@ -2524,9 +2560,9 @@ namespace reaclib_rates { 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) { + 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) { - // Sc43 + p --> He4 + Ca40 + // Ti44 + He4 --> p + V47 rate = 0.0; drate_dT = 0.0; @@ -2535,15 +2571,15 @@ namespace reaclib_rates { 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; + // 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; 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 = 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; } @@ -2594,42 +2630,6 @@ namespace reaclib_rates { } - 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) { - - // Ti44 + He4 --> p + V47 - - rate = 0.0; - drate_dT = 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; - - 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; - - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - 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) { @@ -3725,7 +3725,7 @@ namespace reaclib_rates { } { - // Cl35_p_to_Ar36_reaclib + // Cl35_p_to_He4_S32_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -3735,15 +3735,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); } #endif - 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; + 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_Ar36_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib) = drate_dT; } } { - // Cl35_p_to_He4_S32_reaclib + // Cl35_p_to_Ar36_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -3753,10 +3753,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); } #endif - 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; + 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_He4_S32_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib) = drate_dT; } } @@ -3779,7 +3779,7 @@ namespace reaclib_rates { } { - // K39_p_to_Ca40_reaclib + // K39_p_to_He4_Ar36_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -3789,15 +3789,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); } #endif - 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; + 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_Ca40_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib) = drate_dT; } } { - // K39_p_to_He4_Ar36_reaclib + // K39_p_to_Ca40_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -3807,10 +3807,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); } #endif - 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; + 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_He4_Ar36_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib) = drate_dT; } } @@ -3833,7 +3833,7 @@ namespace reaclib_rates { } { - // Sc43_p_to_Ti44_reaclib + // Sc43_p_to_He4_Ca40_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -3843,15 +3843,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); } #endif - 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; + 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_Ti44_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib) = drate_dT; } } { - // Sc43_p_to_He4_Ca40_reaclib + // Sc43_p_to_Ti44_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -3861,15 +3861,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); } #endif - 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; + 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_He4_Ca40_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib) = drate_dT; } } { - // Ti44_He4_to_Cr48_reaclib + // Ti44_He4_to_p_V47_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -3879,15 +3879,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); } #endif - 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; + 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_Cr48_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_p_V47_reaclib) = drate_dT; } } { - // Ti44_He4_to_p_V47_reaclib + // Ti44_He4_to_Cr48_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -3897,10 +3897,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); } #endif - 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; + 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_p_V47_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_reaclib) = drate_dT; } } 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 94a7e0bcb..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_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/actual_network.H b/networks/he-burn/he-burn-33am/actual_network.H index feda35c42..d8368d5f6 100644 --- a/networks/he-burn/he-burn-33am/actual_network.H +++ b/networks/he-burn/he-burn-33am/actual_network.H @@ -362,16 +362,16 @@ namespace Rates 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_Ar36_reaclib = 69, - k_Cl35_p_to_He4_S32_reaclib = 70, + 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_Ca40_reaclib = 72, - k_K39_p_to_He4_Ar36_reaclib = 73, + 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_Ti44_reaclib = 75, - k_Sc43_p_to_He4_Ca40_reaclib = 76, - k_Ti44_He4_to_Cr48_reaclib = 77, - k_Ti44_He4_to_p_V47_reaclib = 78, + 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, @@ -463,10 +463,10 @@ namespace Rates 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_V47_p_to_He4_Ti44_derived = 172, - NumRates = k_V47_p_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 : @@ -594,16 +594,16 @@ namespace Rates "Cu59_n_to_He4_Co56_reaclib", // 66, "Zn60_n_to_He4_Ni57_reaclib", // 67, "S32_He4_to_Ar36_reaclib", // 68, - "Cl35_p_to_Ar36_reaclib", // 69, - "Cl35_p_to_He4_S32_reaclib", // 70, + "Cl35_p_to_He4_S32_reaclib", // 69, + "Cl35_p_to_Ar36_reaclib", // 70, "Ar36_He4_to_Ca40_reaclib", // 71, - "K39_p_to_Ca40_reaclib", // 72, - "K39_p_to_He4_Ar36_reaclib", // 73, + "K39_p_to_He4_Ar36_reaclib", // 72, + "K39_p_to_Ca40_reaclib", // 73, "Ca40_He4_to_Ti44_reaclib", // 74, - "Sc43_p_to_Ti44_reaclib", // 75, - "Sc43_p_to_He4_Ca40_reaclib", // 76, - "Ti44_He4_to_Cr48_reaclib", // 77, - "Ti44_He4_to_p_V47_reaclib", // 78, + "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, @@ -695,9 +695,9 @@ namespace Rates "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, - "V47_p_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 diff --git a/networks/he-burn/he-burn-33am/actual_rhs.H b/networks/he-burn/he-burn-33am/actual_rhs.H index 27d79b58b..40a19ac33 100644 --- a/networks/he-burn/he-burn-33am/actual_rhs.H +++ b/networks/he-burn/he-burn-33am/actual_rhs.H @@ -53,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; @@ -527,6 +529,8 @@ 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]] const amrex::Real rhoy = state.rho * state.y_e; @@ -543,34 +547,29 @@ void evaluate_rates(const burn_t& state, 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); // fill modified rates next -- these can have ReacLib or // 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 branched rates -- these can have ReacLib or - // TemperatureTabular/StarLib as the underlying rate or branches. - // We do this after DerivedRate in case the branching depends - // on a derived rate. - branched_rates::fill_rates(tfactors, rate_eval); - - // Fill approximate rates - approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); - tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); - } @@ -745,7 +744,7 @@ 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; @@ -1115,9 +1114,11 @@ 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_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); diff --git a/networks/he-burn/he-burn-33am/branched_rates.H b/networks/he-burn/he-burn-33am/branched_rates.H index 6a8556dfc..903382523 100644 --- a/networks/he-burn/he-burn-33am/branched_rates.H +++ b/networks/he-burn/he-burn-33am/branched_rates.H @@ -12,6 +12,8 @@ namespace branched_rates { + using namespace Rates; + using namespace temp_tabular; diff --git a/networks/he-burn/he-burn-33am/derived_rates.H b/networks/he-burn/he-burn-33am/derived_rates.H index d3f2f42ba..20d36f675 100644 --- a/networks/he-burn/he-burn-33am/derived_rates.H +++ b/networks/he-burn/he-burn-33am/derived_rates.H @@ -4474,6 +4474,69 @@ namespace derived_rates { } + 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; + + // Evaluate partition function terms + + amrex::Real p_log_pf, dp_log_pf_dT9; + + // setting p log(partition 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; + + // setting He4 log(partition 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; + + // 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; + + // 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 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; + + 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; + + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (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) { @@ -4651,79 +4714,14 @@ namespace derived_rates { } - 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; - - // Evaluate partition function terms - - amrex::Real p_log_pf, dp_log_pf_dT9; - - // setting p log(partition 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; - - // setting He4 log(partition 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; - - // 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; - - // 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 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; - - 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; - - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } - - } - template 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; @@ -5656,44 +5654,44 @@ namespace derived_rates { } { - // 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; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_V47); if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived) = drate_dT; + 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; + 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_p_V47_derived) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived) = drate_dT; } } { - // V47_p_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); - } -#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; + 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_V47_p_to_He4_Ti44_derived) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived) = drate_dT; } } diff --git a/networks/he-burn/he-burn-33am/modified_rates.H b/networks/he-burn/he-burn-33am/modified_rates.H index 4f9b267d8..edbab795f 100644 --- a/networks/he-burn/he-burn-33am/modified_rates.H +++ b/networks/he-burn/he-burn-33am/modified_rates.H @@ -12,6 +12,8 @@ namespace modified_rates { + using namespace Rates; + using namespace reaclib_rates; using namespace temp_tabular; diff --git a/networks/he-burn/he-burn-33am/pynucastro-info.txt b/networks/he-burn/he-burn-33am/pynucastro-info.txt index f595c64e7..14b944e65 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: 3.0.0-25-g1299feccc +pynucastro version: 3.0.0-36-g5ade6bfb9 diff --git a/networks/he-burn/he-burn-33am/reaclib_rates.H b/networks/he-burn/he-burn-33am/reaclib_rates.H index fa1db1316..bdaecadab 100644 --- a/networks/he-burn/he-burn-33am/reaclib_rates.H +++ b/networks/he-burn/he-burn-33am/reaclib_rates.H @@ -2968,9 +2968,9 @@ namespace reaclib_rates { 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) { + 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) { - // Cl35 + p --> Ar36 + // Cl35 + p --> He4 + S32 rate = 0.0; drate_dT = 0.0; @@ -2980,13 +2980,13 @@ namespace reaclib_rates { amrex::Real set_rate{0.0}; // il10r - ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i + ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i + -1.5 * tfactors.lnT9; ln_set_rate += log_scor; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i + dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; @@ -3000,15 +3000,15 @@ namespace reaclib_rates { 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; 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 = 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; } @@ -3021,15 +3021,15 @@ namespace reaclib_rates { 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; 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 = + -(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; } @@ -3043,14 +3043,14 @@ namespace reaclib_rates { } // il10r - ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i - + -1.5 * tfactors.lnT9; + 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; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + 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; } @@ -3067,9 +3067,9 @@ namespace reaclib_rates { 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) { + 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) { - // Cl35 + p --> He4 + S32 + // Cl35 + p --> Ar36 rate = 0.0; drate_dT = 0.0; @@ -3079,13 +3079,13 @@ namespace reaclib_rates { amrex::Real set_rate{0.0}; // il10r - ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i + ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i + -1.5 * tfactors.lnT9; ln_set_rate += log_scor; if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i + dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; @@ -3099,15 +3099,15 @@ namespace reaclib_rates { 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; 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 = + -(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; } @@ -3120,15 +3120,15 @@ namespace reaclib_rates { 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; 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 = 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; } @@ -3142,14 +3142,14 @@ namespace reaclib_rates { } // 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 = -9.03294 + -2.00996 * tfactors.T9i + + -1.5 * tfactors.lnT9; 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; + dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } @@ -3200,6 +3200,42 @@ namespace reaclib_rates { } + 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) { + + // K39 + p --> He4 + Ar36 + + rate = 0.0; + drate_dT = 0.0; + + amrex::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; + + 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; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + 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) { @@ -3280,9 +3316,9 @@ namespace reaclib_rates { 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) { + 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) { - // K39 + p --> He4 + Ar36 + // Ca40 + He4 --> Ti44 rate = 0.0; drate_dT = 0.0; @@ -3291,15 +3327,15 @@ namespace reaclib_rates { 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; + // 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; 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 = + -(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; } @@ -3316,9 +3352,9 @@ namespace reaclib_rates { 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) { + 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) { - // Ca40 + He4 --> Ti44 + // Sc43 + p --> He4 + Ca40 rate = 0.0; drate_dT = 0.0; @@ -3327,15 +3363,15 @@ namespace reaclib_rates { 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; + // 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; 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 = + -(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; } @@ -3388,9 +3424,9 @@ namespace reaclib_rates { 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) { + 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) { - // Sc43 + p --> He4 + Ca40 + // Ti44 + He4 --> p + V47 rate = 0.0; drate_dT = 0.0; @@ -3399,15 +3435,15 @@ namespace reaclib_rates { 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; + // 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; 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 = 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; } @@ -3458,42 +3494,6 @@ namespace reaclib_rates { } - 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) { - - // Ti44 + He4 --> p + V47 - - rate = 0.0; - drate_dT = 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; - - 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; - - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - 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) { @@ -4721,7 +4721,7 @@ namespace reaclib_rates { } { - // Cl35_p_to_Ar36_reaclib + // Cl35_p_to_He4_S32_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -4731,15 +4731,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); } #endif - 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; + 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_Ar36_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib) = drate_dT; } } { - // Cl35_p_to_He4_S32_reaclib + // Cl35_p_to_Ar36_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -4749,10 +4749,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); } #endif - 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; + 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_He4_S32_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib) = drate_dT; } } @@ -4775,7 +4775,7 @@ namespace reaclib_rates { } { - // K39_p_to_Ca40_reaclib + // K39_p_to_He4_Ar36_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -4785,15 +4785,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); } #endif - 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; + 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_Ca40_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib) = drate_dT; } } { - // K39_p_to_He4_Ar36_reaclib + // K39_p_to_Ca40_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -4803,10 +4803,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); } #endif - 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; + 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_He4_Ar36_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib) = drate_dT; } } @@ -4829,7 +4829,7 @@ namespace reaclib_rates { } { - // Sc43_p_to_Ti44_reaclib + // Sc43_p_to_He4_Ca40_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -4839,15 +4839,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); } #endif - 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; + 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_Ti44_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib) = drate_dT; } } { - // Sc43_p_to_He4_Ca40_reaclib + // Sc43_p_to_Ti44_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -4857,15 +4857,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); } #endif - 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; + 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_He4_Ca40_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib) = drate_dT; } } { - // Ti44_He4_to_Cr48_reaclib + // Ti44_He4_to_p_V47_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -4875,15 +4875,15 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); } #endif - 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; + 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_Cr48_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_p_V47_reaclib) = drate_dT; } } { - // Ti44_He4_to_p_V47_reaclib + // Ti44_He4_to_Cr48_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -4893,10 +4893,10 @@ namespace reaclib_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); } #endif - 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; + 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_p_V47_reaclib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_reaclib) = drate_dT; } } 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 94a7e0bcb..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_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/C-burn-simple/actual_rhs.H b/networks/ignition_reaclib/C-burn-simple/actual_rhs.H index f2561f3dd..c8c32d7c9 100644 --- a/networks/ignition_reaclib/C-burn-simple/actual_rhs.H +++ b/networks/ignition_reaclib/C-burn-simple/actual_rhs.H @@ -53,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; @@ -97,6 +99,8 @@ 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]] const amrex::Real rhoy = state.rho * state.y_e; @@ -113,34 +117,29 @@ void evaluate_rates(const burn_t& state, 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); // fill modified rates next -- these can have ReacLib or // 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 branched rates -- these can have ReacLib or - // TemperatureTabular/StarLib as the underlying rate or branches. - // We do this after DerivedRate in case the branching depends - // on a derived rate. - branched_rates::fill_rates(tfactors, rate_eval); - - // Fill approximate rates - approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); - tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); - } @@ -222,7 +221,7 @@ 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; @@ -310,9 +309,11 @@ 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_beta_neg_weaktab); diff --git a/networks/ignition_reaclib/C-burn-simple/branched_rates.H b/networks/ignition_reaclib/C-burn-simple/branched_rates.H index 6a8556dfc..903382523 100644 --- a/networks/ignition_reaclib/C-burn-simple/branched_rates.H +++ b/networks/ignition_reaclib/C-burn-simple/branched_rates.H @@ -12,6 +12,8 @@ namespace branched_rates { + using namespace Rates; + using namespace temp_tabular; diff --git a/networks/ignition_reaclib/C-burn-simple/derived_rates.H b/networks/ignition_reaclib/C-burn-simple/derived_rates.H index a5d72f80f..2d8da657a 100644 --- a/networks/ignition_reaclib/C-burn-simple/derived_rates.H +++ b/networks/ignition_reaclib/C-burn-simple/derived_rates.H @@ -15,12 +15,10 @@ namespace derived_rates { template 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; diff --git a/networks/ignition_reaclib/C-burn-simple/modified_rates.H b/networks/ignition_reaclib/C-burn-simple/modified_rates.H index 9373203e5..74c545a1b 100644 --- a/networks/ignition_reaclib/C-burn-simple/modified_rates.H +++ b/networks/ignition_reaclib/C-burn-simple/modified_rates.H @@ -12,6 +12,8 @@ namespace modified_rates { + using namespace Rates; + using namespace reaclib_rates; using namespace temp_tabular; diff --git a/networks/ignition_reaclib/C-burn-simple/pynucastro-info.txt b/networks/ignition_reaclib/C-burn-simple/pynucastro-info.txt index f595c64e7..14b944e65 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: 3.0.0-25-g1299feccc +pynucastro version: 3.0.0-36-g5ade6bfb9 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 94a7e0bcb..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_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/actual_rhs.H b/networks/ignition_reaclib/URCA-medium/actual_rhs.H index 36079baae..52afd6682 100644 --- a/networks/ignition_reaclib/URCA-medium/actual_rhs.H +++ b/networks/ignition_reaclib/URCA-medium/actual_rhs.H @@ -53,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; @@ -177,6 +179,8 @@ 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]] const amrex::Real rhoy = state.rho * state.y_e; @@ -193,34 +197,29 @@ void evaluate_rates(const burn_t& state, 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); // fill modified rates next -- these can have ReacLib or // 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 branched rates -- these can have ReacLib or - // TemperatureTabular/StarLib as the underlying rate or branches. - // We do this after DerivedRate in case the branching depends - // on a derived rate. - branched_rates::fill_rates(tfactors, rate_eval); - - // Fill approximate rates - approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); - tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); - } @@ -312,7 +311,7 @@ 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; @@ -447,9 +446,11 @@ 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_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); diff --git a/networks/ignition_reaclib/URCA-medium/branched_rates.H b/networks/ignition_reaclib/URCA-medium/branched_rates.H index 6a8556dfc..903382523 100644 --- a/networks/ignition_reaclib/URCA-medium/branched_rates.H +++ b/networks/ignition_reaclib/URCA-medium/branched_rates.H @@ -12,6 +12,8 @@ namespace branched_rates { + using namespace Rates; + using namespace temp_tabular; diff --git a/networks/ignition_reaclib/URCA-medium/derived_rates.H b/networks/ignition_reaclib/URCA-medium/derived_rates.H index a5d72f80f..2d8da657a 100644 --- a/networks/ignition_reaclib/URCA-medium/derived_rates.H +++ b/networks/ignition_reaclib/URCA-medium/derived_rates.H @@ -15,12 +15,10 @@ namespace derived_rates { template 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; diff --git a/networks/ignition_reaclib/URCA-medium/modified_rates.H b/networks/ignition_reaclib/URCA-medium/modified_rates.H index 9373203e5..74c545a1b 100644 --- a/networks/ignition_reaclib/URCA-medium/modified_rates.H +++ b/networks/ignition_reaclib/URCA-medium/modified_rates.H @@ -12,6 +12,8 @@ namespace modified_rates { + using namespace Rates; + using namespace reaclib_rates; using namespace temp_tabular; diff --git a/networks/ignition_reaclib/URCA-medium/pynucastro-info.txt b/networks/ignition_reaclib/URCA-medium/pynucastro-info.txt index f595c64e7..14b944e65 100644 --- a/networks/ignition_reaclib/URCA-medium/pynucastro-info.txt +++ b/networks/ignition_reaclib/URCA-medium/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-25-g1299feccc +pynucastro version: 3.0.0-36-g5ade6bfb9 diff --git a/networks/ignition_reaclib/URCA-medium/temperature_table_rates.H b/networks/ignition_reaclib/URCA-medium/temperature_table_rates.H index 94a7e0bcb..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_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/actual_rhs.H b/networks/ignition_reaclib/URCA-simple/actual_rhs.H index ae7f2e432..c2f573701 100644 --- a/networks/ignition_reaclib/URCA-simple/actual_rhs.H +++ b/networks/ignition_reaclib/URCA-simple/actual_rhs.H @@ -53,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; @@ -97,6 +99,8 @@ 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]] const amrex::Real rhoy = state.rho * state.y_e; @@ -113,34 +117,29 @@ void evaluate_rates(const burn_t& state, 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); // fill modified rates next -- these can have ReacLib or // 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 branched rates -- these can have ReacLib or - // TemperatureTabular/StarLib as the underlying rate or branches. - // We do this after DerivedRate in case the branching depends - // on a derived rate. - branched_rates::fill_rates(tfactors, rate_eval); - - // Fill approximate rates - approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); - tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); - } @@ -226,7 +225,7 @@ 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; @@ -318,9 +317,11 @@ 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_beta_neg_weaktab); diff --git a/networks/ignition_reaclib/URCA-simple/branched_rates.H b/networks/ignition_reaclib/URCA-simple/branched_rates.H index 6a8556dfc..903382523 100644 --- a/networks/ignition_reaclib/URCA-simple/branched_rates.H +++ b/networks/ignition_reaclib/URCA-simple/branched_rates.H @@ -12,6 +12,8 @@ namespace branched_rates { + using namespace Rates; + using namespace temp_tabular; diff --git a/networks/ignition_reaclib/URCA-simple/derived_rates.H b/networks/ignition_reaclib/URCA-simple/derived_rates.H index a5d72f80f..2d8da657a 100644 --- a/networks/ignition_reaclib/URCA-simple/derived_rates.H +++ b/networks/ignition_reaclib/URCA-simple/derived_rates.H @@ -15,12 +15,10 @@ namespace derived_rates { template 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; diff --git a/networks/ignition_reaclib/URCA-simple/modified_rates.H b/networks/ignition_reaclib/URCA-simple/modified_rates.H index 9373203e5..74c545a1b 100644 --- a/networks/ignition_reaclib/URCA-simple/modified_rates.H +++ b/networks/ignition_reaclib/URCA-simple/modified_rates.H @@ -12,6 +12,8 @@ namespace modified_rates { + using namespace Rates; + using namespace reaclib_rates; using namespace temp_tabular; diff --git a/networks/ignition_reaclib/URCA-simple/pynucastro-info.txt b/networks/ignition_reaclib/URCA-simple/pynucastro-info.txt index f595c64e7..14b944e65 100644 --- a/networks/ignition_reaclib/URCA-simple/pynucastro-info.txt +++ b/networks/ignition_reaclib/URCA-simple/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-25-g1299feccc +pynucastro version: 3.0.0-36-g5ade6bfb9 diff --git a/networks/ignition_reaclib/URCA-simple/temperature_table_rates.H b/networks/ignition_reaclib/URCA-simple/temperature_table_rates.H index 94a7e0bcb..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_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/actual_rhs.H b/networks/nova-li/actual_rhs.H index 6e0f3ea2b..dfb4de3b0 100644 --- a/networks/nova-li/actual_rhs.H +++ b/networks/nova-li/actual_rhs.H @@ -53,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; @@ -437,6 +439,8 @@ 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]] const amrex::Real rhoy = state.rho * state.y_e; @@ -453,34 +457,29 @@ void evaluate_rates(const burn_t& state, 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); // fill modified rates next -- these can have ReacLib or // 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 branched rates -- these can have ReacLib or - // TemperatureTabular/StarLib as the underlying rate or branches. - // We do this after DerivedRate in case the branching depends - // on a derived rate. - branched_rates::fill_rates(tfactors, rate_eval); - - // Fill approximate rates - approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); - tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); - } @@ -724,7 +723,7 @@ 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; @@ -987,9 +986,11 @@ 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_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; diff --git a/networks/nova-li/branched_rates.H b/networks/nova-li/branched_rates.H index 6a8556dfc..903382523 100644 --- a/networks/nova-li/branched_rates.H +++ b/networks/nova-li/branched_rates.H @@ -12,6 +12,8 @@ namespace branched_rates { + using namespace Rates; + using namespace temp_tabular; diff --git a/networks/nova-li/derived_rates.H b/networks/nova-li/derived_rates.H index a5d72f80f..2d8da657a 100644 --- a/networks/nova-li/derived_rates.H +++ b/networks/nova-li/derived_rates.H @@ -15,12 +15,10 @@ namespace derived_rates { template 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; diff --git a/networks/nova-li/modified_rates.H b/networks/nova-li/modified_rates.H index 9373203e5..74c545a1b 100644 --- a/networks/nova-li/modified_rates.H +++ b/networks/nova-li/modified_rates.H @@ -12,6 +12,8 @@ namespace modified_rates { + using namespace Rates; + using namespace reaclib_rates; using namespace temp_tabular; diff --git a/networks/nova-li/pynucastro-info.txt b/networks/nova-li/pynucastro-info.txt index f595c64e7..14b944e65 100644 --- a/networks/nova-li/pynucastro-info.txt +++ b/networks/nova-li/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-25-g1299feccc +pynucastro version: 3.0.0-36-g5ade6bfb9 diff --git a/networks/nova-li/temperature_table_rates.H b/networks/nova-li/temperature_table_rates.H index 94a7e0bcb..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_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/actual_rhs.H b/networks/nova/actual_rhs.H index 32ad89d61..83d95c020 100644 --- a/networks/nova/actual_rhs.H +++ b/networks/nova/actual_rhs.H @@ -53,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; @@ -317,6 +319,8 @@ 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]] const amrex::Real rhoy = state.rho * state.y_e; @@ -333,34 +337,29 @@ void evaluate_rates(const burn_t& state, 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); // fill modified rates next -- these can have ReacLib or // 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 branched rates -- these can have ReacLib or - // TemperatureTabular/StarLib as the underlying rate or branches. - // We do this after DerivedRate in case the branching depends - // on a derived rate. - branched_rates::fill_rates(tfactors, rate_eval); - - // Fill approximate rates - approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); - tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); - } @@ -580,7 +579,7 @@ 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; @@ -764,9 +763,11 @@ 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_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; diff --git a/networks/nova/branched_rates.H b/networks/nova/branched_rates.H index 6a8556dfc..903382523 100644 --- a/networks/nova/branched_rates.H +++ b/networks/nova/branched_rates.H @@ -12,6 +12,8 @@ namespace branched_rates { + using namespace Rates; + using namespace temp_tabular; diff --git a/networks/nova/derived_rates.H b/networks/nova/derived_rates.H index a5d72f80f..2d8da657a 100644 --- a/networks/nova/derived_rates.H +++ b/networks/nova/derived_rates.H @@ -15,12 +15,10 @@ namespace derived_rates { template 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; diff --git a/networks/nova/modified_rates.H b/networks/nova/modified_rates.H index 9373203e5..74c545a1b 100644 --- a/networks/nova/modified_rates.H +++ b/networks/nova/modified_rates.H @@ -12,6 +12,8 @@ namespace modified_rates { + using namespace Rates; + using namespace reaclib_rates; using namespace temp_tabular; diff --git a/networks/nova/pynucastro-info.txt b/networks/nova/pynucastro-info.txt index f595c64e7..14b944e65 100644 --- a/networks/nova/pynucastro-info.txt +++ b/networks/nova/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-25-g1299feccc +pynucastro version: 3.0.0-36-g5ade6bfb9 diff --git a/networks/nova/temperature_table_rates.H b/networks/nova/temperature_table_rates.H index 94a7e0bcb..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_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/actual_rhs.H b/networks/partition_test/actual_rhs.H index 3d40e9408..e717ba009 100644 --- a/networks/partition_test/actual_rhs.H +++ b/networks/partition_test/actual_rhs.H @@ -53,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; @@ -97,6 +99,8 @@ 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]] const amrex::Real rhoy = state.rho * state.y_e; @@ -113,34 +117,29 @@ void evaluate_rates(const burn_t& state, 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); // fill modified rates next -- these can have ReacLib or // 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 branched rates -- these can have ReacLib or - // TemperatureTabular/StarLib as the underlying rate or branches. - // We do this after DerivedRate in case the branching depends - // on a derived rate. - branched_rates::fill_rates(tfactors, rate_eval); - - // Fill approximate rates - approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); - tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); - } @@ -212,7 +211,7 @@ 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; @@ -290,9 +289,11 @@ 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_Co55_p_to_He4_Fe52_derived)*Y(Co55)*state.rho - screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(Co55)*state.rho; diff --git a/networks/partition_test/branched_rates.H b/networks/partition_test/branched_rates.H index 6a8556dfc..903382523 100644 --- a/networks/partition_test/branched_rates.H +++ b/networks/partition_test/branched_rates.H @@ -12,6 +12,8 @@ namespace branched_rates { + using namespace Rates; + using namespace temp_tabular; diff --git a/networks/partition_test/derived_rates.H b/networks/partition_test/derived_rates.H index 010e15cd4..16c57c582 100644 --- a/networks/partition_test/derived_rates.H +++ b/networks/partition_test/derived_rates.H @@ -192,12 +192,10 @@ namespace derived_rates { template 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; diff --git a/networks/partition_test/modified_rates.H b/networks/partition_test/modified_rates.H index 9373203e5..74c545a1b 100644 --- a/networks/partition_test/modified_rates.H +++ b/networks/partition_test/modified_rates.H @@ -12,6 +12,8 @@ namespace modified_rates { + using namespace Rates; + using namespace reaclib_rates; using namespace temp_tabular; diff --git a/networks/partition_test/pynucastro-info.txt b/networks/partition_test/pynucastro-info.txt index f595c64e7..14b944e65 100644 --- a/networks/partition_test/pynucastro-info.txt +++ b/networks/partition_test/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-25-g1299feccc +pynucastro version: 3.0.0-36-g5ade6bfb9 diff --git a/networks/partition_test/temperature_table_rates.H b/networks/partition_test/temperature_table_rates.H index 94a7e0bcb..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_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/actual_rhs.H b/networks/sn160/actual_rhs.H index cdbf184d8..af05a4f76 100644 --- a/networks/sn160/actual_rhs.H +++ b/networks/sn160/actual_rhs.H @@ -53,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; @@ -3067,6 +3069,8 @@ 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]] const amrex::Real rhoy = state.rho * state.y_e; @@ -3083,34 +3087,29 @@ void evaluate_rates(const burn_t& state, 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); // fill modified rates next -- these can have ReacLib or // 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 branched rates -- these can have ReacLib or - // TemperatureTabular/StarLib as the underlying rate or branches. - // We do this after DerivedRate in case the branching depends - // on a derived rate. - branched_rates::fill_rates(tfactors, rate_eval); - - // Fill approximate rates - approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); - tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); - } @@ -3873,7 +3872,7 @@ 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; @@ -6951,9 +6950,11 @@ 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_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); diff --git a/networks/sn160/branched_rates.H b/networks/sn160/branched_rates.H index 6a8556dfc..903382523 100644 --- a/networks/sn160/branched_rates.H +++ b/networks/sn160/branched_rates.H @@ -12,6 +12,8 @@ namespace branched_rates { + using namespace Rates; + using namespace temp_tabular; diff --git a/networks/sn160/derived_rates.H b/networks/sn160/derived_rates.H index a5d72f80f..2d8da657a 100644 --- a/networks/sn160/derived_rates.H +++ b/networks/sn160/derived_rates.H @@ -15,12 +15,10 @@ namespace derived_rates { template 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; diff --git a/networks/sn160/modified_rates.H b/networks/sn160/modified_rates.H index 9373203e5..74c545a1b 100644 --- a/networks/sn160/modified_rates.H +++ b/networks/sn160/modified_rates.H @@ -12,6 +12,8 @@ namespace modified_rates { + using namespace Rates; + using namespace reaclib_rates; using namespace temp_tabular; diff --git a/networks/sn160/pynucastro-info.txt b/networks/sn160/pynucastro-info.txt index f595c64e7..14b944e65 100644 --- a/networks/sn160/pynucastro-info.txt +++ b/networks/sn160/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-25-g1299feccc +pynucastro version: 3.0.0-36-g5ade6bfb9 diff --git a/networks/sn160/temperature_table_rates.H b/networks/sn160/temperature_table_rates.H index 94a7e0bcb..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_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 From 288eafa2c1e300dec1454b26597c85f4164d338b Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Fri, 4 Sep 2026 08:29:17 -0400 Subject: [PATCH 6/7] update --- networks/CNO_extras/pynucastro-info.txt | 2 +- networks/ECSN/pynucastro-info.txt | 2 +- .../ase-iron-starlib/pynucastro-info.txt | 2 +- networks/he-burn/ase-iron/pynucastro-info.txt | 2 +- networks/he-burn/ase-test/pynucastro-info.txt | 2 +- networks/he-burn/ase/pynucastro-info.txt | 2 +- .../cno-he-burn-33a/pynucastro-info.txt | 2 +- .../he-burn/cno-he-burn-34am/actual_rhs.H | 24 +++++++++---------- .../cno-he-burn-34am/pynucastro-info.txt | 2 +- .../he-burn/he-burn-19am/pynucastro-info.txt | 2 +- .../he-burn-28amnp/pynucastro-info.txt | 2 +- .../he-burn/he-burn-33am/pynucastro-info.txt | 2 +- .../C-burn-simple/pynucastro-info.txt | 2 +- .../URCA-medium/pynucastro-info.txt | 2 +- .../URCA-simple/pynucastro-info.txt | 2 +- networks/nova-li/pynucastro-info.txt | 2 +- networks/nova/pynucastro-info.txt | 2 +- networks/partition_test/pynucastro-info.txt | 2 +- networks/sn160/pynucastro-info.txt | 2 +- 19 files changed, 30 insertions(+), 30 deletions(-) diff --git a/networks/CNO_extras/pynucastro-info.txt b/networks/CNO_extras/pynucastro-info.txt index 14b944e65..29560334b 100644 --- a/networks/CNO_extras/pynucastro-info.txt +++ b/networks/CNO_extras/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-36-g5ade6bfb9 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/ECSN/pynucastro-info.txt b/networks/ECSN/pynucastro-info.txt index 14b944e65..29560334b 100644 --- a/networks/ECSN/pynucastro-info.txt +++ b/networks/ECSN/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-36-g5ade6bfb9 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/he-burn/ase-iron-starlib/pynucastro-info.txt b/networks/he-burn/ase-iron-starlib/pynucastro-info.txt index 14b944e65..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: 3.0.0-36-g5ade6bfb9 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/he-burn/ase-iron/pynucastro-info.txt b/networks/he-burn/ase-iron/pynucastro-info.txt index 14b944e65..29560334b 100644 --- a/networks/he-burn/ase-iron/pynucastro-info.txt +++ b/networks/he-burn/ase-iron/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-36-g5ade6bfb9 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/he-burn/ase-test/pynucastro-info.txt b/networks/he-burn/ase-test/pynucastro-info.txt index 14b944e65..29560334b 100644 --- a/networks/he-burn/ase-test/pynucastro-info.txt +++ b/networks/he-burn/ase-test/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-36-g5ade6bfb9 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/he-burn/ase/pynucastro-info.txt b/networks/he-burn/ase/pynucastro-info.txt index 14b944e65..29560334b 100644 --- a/networks/he-burn/ase/pynucastro-info.txt +++ b/networks/he-burn/ase/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-36-g5ade6bfb9 +pynucastro version: 3.0.0-38-gd4179ae35 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 14b944e65..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: 3.0.0-36-g5ade6bfb9 +pynucastro version: 3.0.0-38-gd4179ae35 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 cd50b8718..893697a6e 100644 --- a/networks/he-burn/cno-he-burn-34am/actual_rhs.H +++ b/networks/he-burn/cno-he-burn-34am/actual_rhs.H @@ -767,18 +767,6 @@ void get_ydot_weak(const burn_t& state, const tf_t tfactors = evaluate_tfactors(state.T); - { - // 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 - 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; - } - { // N13_to_C13_beta_pos_reaclib @@ -806,6 +794,18 @@ void get_ydot_weak(const burn_t& state, rate_eval.screened_rates(k_O15_to_N15_beta_pos_reaclib) = rate; } + { + // 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 + 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; + } + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); const auto& screened_rates = rate_eval.screened_rates; 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 14b944e65..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: 3.0.0-36-g5ade6bfb9 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/he-burn/he-burn-19am/pynucastro-info.txt b/networks/he-burn/he-burn-19am/pynucastro-info.txt index 14b944e65..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: 3.0.0-36-g5ade6bfb9 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/he-burn/he-burn-28amnp/pynucastro-info.txt b/networks/he-burn/he-burn-28amnp/pynucastro-info.txt index 14b944e65..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: 3.0.0-36-g5ade6bfb9 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/he-burn/he-burn-33am/pynucastro-info.txt b/networks/he-burn/he-burn-33am/pynucastro-info.txt index 14b944e65..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: 3.0.0-36-g5ade6bfb9 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/ignition_reaclib/C-burn-simple/pynucastro-info.txt b/networks/ignition_reaclib/C-burn-simple/pynucastro-info.txt index 14b944e65..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: 3.0.0-36-g5ade6bfb9 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/ignition_reaclib/URCA-medium/pynucastro-info.txt b/networks/ignition_reaclib/URCA-medium/pynucastro-info.txt index 14b944e65..29560334b 100644 --- a/networks/ignition_reaclib/URCA-medium/pynucastro-info.txt +++ b/networks/ignition_reaclib/URCA-medium/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-36-g5ade6bfb9 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/ignition_reaclib/URCA-simple/pynucastro-info.txt b/networks/ignition_reaclib/URCA-simple/pynucastro-info.txt index 14b944e65..29560334b 100644 --- a/networks/ignition_reaclib/URCA-simple/pynucastro-info.txt +++ b/networks/ignition_reaclib/URCA-simple/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-36-g5ade6bfb9 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/nova-li/pynucastro-info.txt b/networks/nova-li/pynucastro-info.txt index 14b944e65..29560334b 100644 --- a/networks/nova-li/pynucastro-info.txt +++ b/networks/nova-li/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-36-g5ade6bfb9 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/nova/pynucastro-info.txt b/networks/nova/pynucastro-info.txt index 14b944e65..29560334b 100644 --- a/networks/nova/pynucastro-info.txt +++ b/networks/nova/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-36-g5ade6bfb9 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/partition_test/pynucastro-info.txt b/networks/partition_test/pynucastro-info.txt index 14b944e65..29560334b 100644 --- a/networks/partition_test/pynucastro-info.txt +++ b/networks/partition_test/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-36-g5ade6bfb9 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/sn160/pynucastro-info.txt b/networks/sn160/pynucastro-info.txt index 14b944e65..29560334b 100644 --- a/networks/sn160/pynucastro-info.txt +++ b/networks/sn160/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 3.0.0-36-g5ade6bfb9 +pynucastro version: 3.0.0-38-gd4179ae35 From 6e19dcaaf35de43ae3e3399bf4cc224c6e1d949b Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Fri, 4 Sep 2026 09:07:27 -0400 Subject: [PATCH 7/7] update benchmark --- .../nse_net_integration_unit_test.out | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) 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