From ea3bd11488ffd05f3690afc10c8cb5263a93301f Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Wed, 11 Mar 2026 13:47:22 -0400 Subject: [PATCH] update the nova networks for nova, this now includes reverse rates for nova-li, this is mainly rederiving the reverse rates that are included. --- Docs/source/networks.rst | 33 +- networks/nova-li/actual_network.H | 206 +-- networks/nova-li/actual_rhs.H | 96 +- networks/nova-li/derived_rates.H | 220 +++ networks/nova-li/nova-li.png | Bin 59687 -> 60075 bytes networks/nova-li/nova_li.py | 14 +- networks/nova-li/partition_functions.H | 115 ++ networks/nova-li/pynucastro-info.txt | 2 +- networks/nova-li/reaclib_rates.H | 137 +- networks/nova/actual_network.H | 184 +- networks/nova/actual_rhs.H | 467 +++-- networks/nova/derived_rates.H | 2197 ++++++++++++++++++++++++ networks/nova/nova.png | Bin 58342 -> 38721 bytes networks/nova/nova.py | 15 +- networks/nova/partition_functions.H | 205 +++ networks/nova/pynucastro-info.txt | 2 +- networks/nova/reaclib_rates.H | 45 +- networks/nova/table_rates.H | 86 +- 18 files changed, 3453 insertions(+), 571 deletions(-) diff --git a/Docs/source/networks.rst b/Docs/source/networks.rst index ac6ebc07d5..17574ea9b1 100644 --- a/Docs/source/networks.rst +++ b/Docs/source/networks.rst @@ -185,16 +185,18 @@ This network is composed of 17 nuclei: $\isotm{H}{1,2}$, $\isotm{He}{3,4}$, $\isotm{Be}{7}$, $\isotm{B}{8}$, $\isotm{C}{12,13}$, $\isotm{N}{13-15}$, $\isotm{O}{14-17}$, $\isotm{F}{17,18}$ and is used to model the onset of a classical novae -thermonuclear runaway. The first set of nuclei, $\isotm{H}{1,2}$, -$\isotm{He}{3,4}$ represent the pp-chain sector of the reaction -network, while the second set, of $\isotm{Be}{7}$, and $\isotm{B}{8}$, -describe the involvement of the x-process. Finally, all the remaining -nuclei are active participants of the CNO cycle with endpoints at -$\isotm{F}{17}$ and $\isotm{F}{18}$. The triple-$\alpha$ reaction +thermonuclear runaway. These are linked together by 55 rates (including reverse rates). + +The first set of nuclei, $\isotm{H}{1,2}$, $\isotm{He}{3,4}$ represent +the pp-chain sector of the reaction network, while the second set, of +$\isotm{Be}{7}$, and $\isotm{B}{8}$, describe the involvement of the +x-process. Finally, all the remaining nuclei are active participants +of the CNO cycle with endpoints at $\isotm{F}{17}$ and +$\isotm{F}{18}$. The triple-$\alpha$ reaction $\alpha(\alpha\alpha,\gamma)\isotm{C}{12}$, serves as bridge between the nuclei of first and the last set. -The the cold-CNO chain of reactions of the CN-branch are: +The cold-CNO chain of reactions of the CN-branch are: * :math:`\isotm{C}{12}(p,\gamma)\isotm{N}{13}(\beta^{+}\nu_e)\isotm{C}{13}(p,\gamma)` @@ -202,14 +204,18 @@ while the NO-branch chain of reactions is: * :math:`\isotm{N}{14}(p,\gamma)\isotm{O}{15}(\beta^{+})\isotm{N}{15}(p,\gamma)\isotm{O}{16}(p,\gamma)\isotm{F}{17}(\beta^{+}\nu_e)\isotm{O}{17}` -where the isotopes $\isotm{N}{15}$ and $\isotm{O}{17}$ may decay back into $\isotm{C}{12}$ and $\isotm{N}{14}$ through -$\isotm{N}{15}(p,\alpha)\isotm{C}{12}$ and $\isotm{O}{17}(p,\alpha)\isotm{N}{14}$ respectively. +where the isotopes $\isotm{N}{15}$ and $\isotm{O}{17}$ may decay back +into $\isotm{C}{12}$ and $\isotm{N}{14}$ through +$\isotm{N}{15}(p,\alpha)\isotm{C}{12}$ and +$\isotm{O}{17}(p,\alpha)\isotm{N}{14}$ respectively. .. figure:: ../../networks/nova/nova.png :align: center -Once the temperature reaches a threshold of $\gtrsim 10^8\,\mathrm{K}$, the fast $p$-captures, for example, -$\isotm{N}{13}(p,\gamma)\isotm{O}{14}$, are more likely than the $\beta^{+}$-decays $\isotm{N}{13}(\beta^{+}\nu_e)\isotm{C}{13}$ +Once the temperature reaches a threshold of $\gtrsim +10^8\,\mathrm{K}$, the fast $p$-captures, for example, +$\isotm{N}{13}(p,\gamma)\isotm{O}{14}$, are more likely than the +$\beta^{+}$-decays $\isotm{N}{13}(\beta^{+}\nu_e)\isotm{C}{13}$ reactions. These rates are also included in this network. ``nova-li`` @@ -220,6 +226,11 @@ nuclei beyond fluorine. It should give a more accurate energy in late stages of the burst, and can also be used to explore lithium production. +To keep the network size down, a filtering process is done to remove +rates that are not expected to be important under the thermodynamic +conditions encountered in a nova. The result is that the network has +25 nuclei and 54 rates. + .. figure:: ../../networks/nova-li/nova-li.png :align: center diff --git a/networks/nova-li/actual_network.H b/networks/nova-li/actual_network.H index 452612048e..ed09e9d402 100644 --- a/networks/nova-li/actual_network.H +++ b/networks/nova-li/actual_network.H @@ -243,57 +243,57 @@ namespace Rates k_N13_to_C13_reaclib = 2, k_O14_to_N14_reaclib = 3, k_O15_to_N15_reaclib = 4, - k_B8_to_p_Be7_reaclib = 5, - k_B8_to_He4_He4_reaclib = 6, - k_F17_to_p_O16_reaclib = 7, - k_p_p_to_d_reaclib_bet_pos = 8, - k_p_p_to_d_reaclib_electron_capture = 9, - k_p_d_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_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_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_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_d_d_to_He4_reaclib = 9, + k_p_He3_to_He4_reaclib = 10, + k_He4_He3_to_Be7_reaclib = 11, + k_He4_Li7_to_B11_reaclib = 12, + k_p_Be7_to_B8_reaclib = 13, + k_p_B11_to_C12_reaclib = 14, + k_p_C12_to_N13_reaclib = 15, + k_He4_C12_to_O16_reaclib = 16, + k_p_C13_to_N14_reaclib = 17, + k_p_N13_to_O14_reaclib = 18, + k_p_N14_to_O15_reaclib = 19, + k_He4_N14_to_F18_reaclib = 20, + k_p_N15_to_O16_reaclib = 21, + k_He4_N15_to_F19_reaclib = 22, + k_He4_O14_to_Ne18_reaclib = 23, + k_He4_O15_to_Ne19_reaclib = 24, + k_p_O16_to_F17_reaclib = 25, + k_He4_O16_to_Ne20_reaclib = 26, + k_p_O17_to_F18_reaclib = 27, + k_He4_O17_to_Ne21_reaclib = 28, + k_p_O18_to_F19_reaclib = 29, + k_p_F17_to_Ne18_reaclib = 30, + k_p_F18_to_Ne19_reaclib = 31, + k_p_F19_to_Ne20_reaclib = 32, + k_d_He3_to_p_He4_reaclib = 33, + k_p_Li7_to_He4_He4_reaclib = 34, + k_He4_N13_to_p_O16_reaclib = 35, + k_p_N15_to_He4_C12_reaclib = 36, + k_He4_O14_to_p_F17_reaclib = 37, + k_p_O17_to_He4_N14_reaclib = 38, + k_p_O18_to_He4_N15_reaclib = 39, + k_p_F18_to_He4_O15_reaclib = 40, + k_He4_F18_to_p_Ne21_reaclib = 41, + k_p_F19_to_He4_O16_reaclib = 42, + k_He3_He3_to_p_p_He4_reaclib = 43, + k_d_Be7_to_p_He4_He4_reaclib = 44, + k_p_B11_to_He4_He4_He4_reaclib = 45, + k_He3_Be7_to_p_p_He4_He4_reaclib = 46, + k_He4_He4_He4_to_C12_reaclib = 47, + k_F17_to_O17_weaktab = 48, + k_F18_to_O18_weaktab = 49, + k_Ne18_to_F18_weaktab = 50, + k_Ne19_to_F19_weaktab = 51, + k_B8_to_p_Be7_derived = 52, + k_F17_to_p_O16_derived = 53, + k_He4_F17_to_p_Ne20_derived = 54, + NumRates = k_He4_F17_to_p_Ne20_derived }; // rate names -- note: the rates are 1-based, not zero-based, so we pad @@ -306,56 +306,56 @@ namespace Rates "N13_to_C13_reaclib", // 2, "O14_to_N14_reaclib", // 3, "O15_to_N15_reaclib", // 4, - "B8_to_p_Be7_reaclib", // 5, - "B8_to_He4_He4_reaclib", // 6, - "F17_to_p_O16_reaclib", // 7, - "p_p_to_d_reaclib_bet_pos", // 8, - "p_p_to_d_reaclib_electron_capture", // 9, - "p_d_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_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, - "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, + "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, + "d_d_to_He4_reaclib", // 9, + "p_He3_to_He4_reaclib", // 10, + "He4_He3_to_Be7_reaclib", // 11, + "He4_Li7_to_B11_reaclib", // 12, + "p_Be7_to_B8_reaclib", // 13, + "p_B11_to_C12_reaclib", // 14, + "p_C12_to_N13_reaclib", // 15, + "He4_C12_to_O16_reaclib", // 16, + "p_C13_to_N14_reaclib", // 17, + "p_N13_to_O14_reaclib", // 18, + "p_N14_to_O15_reaclib", // 19, + "He4_N14_to_F18_reaclib", // 20, + "p_N15_to_O16_reaclib", // 21, + "He4_N15_to_F19_reaclib", // 22, + "He4_O14_to_Ne18_reaclib", // 23, + "He4_O15_to_Ne19_reaclib", // 24, + "p_O16_to_F17_reaclib", // 25, + "He4_O16_to_Ne20_reaclib", // 26, + "p_O17_to_F18_reaclib", // 27, + "He4_O17_to_Ne21_reaclib", // 28, + "p_O18_to_F19_reaclib", // 29, + "p_F17_to_Ne18_reaclib", // 30, + "p_F18_to_Ne19_reaclib", // 31, + "p_F19_to_Ne20_reaclib", // 32, + "d_He3_to_p_He4_reaclib", // 33, + "p_Li7_to_He4_He4_reaclib", // 34, + "He4_N13_to_p_O16_reaclib", // 35, + "p_N15_to_He4_C12_reaclib", // 36, + "He4_O14_to_p_F17_reaclib", // 37, + "p_O17_to_He4_N14_reaclib", // 38, + "p_O18_to_He4_N15_reaclib", // 39, + "p_F18_to_He4_O15_reaclib", // 40, + "He4_F18_to_p_Ne21_reaclib", // 41, + "p_F19_to_He4_O16_reaclib", // 42, + "He3_He3_to_p_p_He4_reaclib", // 43, + "d_Be7_to_p_He4_He4_reaclib", // 44, + "p_B11_to_He4_He4_He4_reaclib", // 45, + "He3_Be7_to_p_p_He4_He4_reaclib", // 46, + "He4_He4_He4_to_C12_reaclib", // 47, + "F17_to_O17_weaktab", // 48, + "F18_to_O18_weaktab", // 49, + "Ne18_to_F18_weaktab", // 50, + "Ne19_to_F19_weaktab", // 51, + "B8_to_p_Be7_derived", // 52, + "F17_to_p_O16_derived", // 53, + "He4_F17_to_p_Ne20_derived" // 54, }; } @@ -382,8 +382,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_p_Be7_to_B8_reaclib, k_B8_to_p_Be7_derived, + H1, O16, -1, F17, -1, -1, O16, F17, k_p_O16_to_F17_reaclib, k_F17_to_p_O16_derived }; } #endif diff --git a/networks/nova-li/actual_rhs.H b/networks/nova-li/actual_rhs.H index bb455ba18d..236df84b1e 100644 --- a/networks/nova-li/actual_rhs.H +++ b/networks/nova-li/actual_rhs.H @@ -97,11 +97,11 @@ void evaluate_rates(const burn_t& state, actual_screen(pstate, scn_fac, scor, dscor_dt); } - ratraw = rate_eval.screened_rates(k_p_p_to_d_reaclib_bet_pos); - rate_eval.screened_rates(k_p_p_to_d_reaclib_bet_pos) *= scor; + ratraw = rate_eval.screened_rates(k_p_p_to_d_reaclib_beta_pos); + rate_eval.screened_rates(k_p_p_to_d_reaclib_beta_pos) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_p_to_d_reaclib_bet_pos); - rate_eval.dscreened_rates_dT(k_p_p_to_d_reaclib_bet_pos) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_p_to_d_reaclib_beta_pos); + rate_eval.dscreened_rates_dT(k_p_p_to_d_reaclib_beta_pos) = ratraw * dscor_dt + dratraw_dT * scor; } ratraw = rate_eval.screened_rates(k_p_p_to_d_reaclib_electron_capture); @@ -553,20 +553,6 @@ void evaluate_rates(const burn_t& state, } - { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 9.0_rt, 17.0_rt); - static_assert(scn_fac.z1 == 2.0_rt); - actual_screen(pstate, scn_fac, scor, dscor_dt); - } - - ratraw = rate_eval.screened_rates(k_He4_F17_to_p_Ne20_reaclib); - rate_eval.screened_rates(k_He4_F17_to_p_Ne20_reaclib) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_F17_to_p_Ne20_reaclib); - rate_eval.dscreened_rates_dT(k_He4_F17_to_p_Ne20_reaclib) = ratraw * dscor_dt + dratraw_dT * scor; - } - - { constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 9.0_rt, 18.0_rt); static_assert(scn_fac.z1 == 2.0_rt); @@ -643,6 +629,20 @@ void evaluate_rates(const burn_t& state, rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = ratraw * (scor * dscor2_dt + dscor_dt * scor2) + dratraw_dT * scor * scor2; } + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 9.0_rt, 17.0_rt); + static_assert(scn_fac.z1 == 2.0_rt); + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + ratraw = rate_eval.screened_rates(k_He4_F17_to_p_Ne20_derived); + rate_eval.screened_rates(k_He4_F17_to_p_Ne20_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_F17_to_p_Ne20_derived); + rate_eval.dscreened_rates_dT(k_He4_F17_to_p_Ne20_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + #endif // Fill approximate rates @@ -764,12 +764,12 @@ void get_ydot_weak(const burn_t& state, auto screened_rates = rate_eval.screened_rates; ydot_nuc(H1) = - -screened_rates(k_p_p_to_d_reaclib_bet_pos)*amrex::Math::powi<2>(Y(H1))*state.rho + + -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; ydot_nuc(H2) = - 0.5*screened_rates(k_p_p_to_d_reaclib_bet_pos)*amrex::Math::powi<2>(Y(H1))*state.rho + + 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; ydot_nuc(He3) = @@ -852,18 +852,18 @@ void rhs_nuc(const burn_t& state, using namespace Rates; ydot_nuc(H1) = - -screened_rates(k_p_p_to_d_reaclib_bet_pos)*amrex::Math::powi<2>(Y(H1))*state.rho + + -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_Be7_to_B8_reaclib)*Y(Be7)*Y(H1)*state.rho + screened_rates(k_B8_to_p_Be7_derived)*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_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_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 + @@ -876,17 +876,17 @@ void rhs_nuc(const burn_t& state, 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_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; + 2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(Be7)*Y(He3)*state.rho + + screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho; ydot_nuc(H2) = - 0.5*screened_rates(k_p_p_to_d_reaclib_bet_pos)*amrex::Math::powi<2>(Y(H1))*state.rho + + 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_d_d_to_He4_reaclib)*amrex::Math::powi<2>(Y(H2))*state.rho + @@ -921,7 +921,6 @@ void rhs_nuc(const burn_t& state, -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 + @@ -929,7 +928,8 @@ void rhs_nuc(const burn_t& state, 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 + - -0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(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) + + -screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho; ydot_nuc(Li7) = screened_rates(k_Be7_to_Li7_reaclib)*Y(Be7)*state.rho*state.y_e + @@ -939,13 +939,13 @@ void rhs_nuc(const burn_t& state, 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_p_Be7_to_B8_reaclib)*Y(Be7)*Y(H1)*state.rho + screened_rates(k_B8_to_p_Be7_derived)*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; 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_p_Be7_to_B8_reaclib)*Y(Be7)*Y(H1)*state.rho + -screened_rates(k_B8_to_p_Be7_derived)*Y(B8)); ydot_nuc(B11) = screened_rates(k_He4_Li7_to_B11_reaclib)*Y(He4)*Y(Li7)*state.rho + @@ -998,7 +998,7 @@ void rhs_nuc(const burn_t& state, 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_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_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; @@ -1015,10 +1015,10 @@ void rhs_nuc(const burn_t& state, screened_rates(k_F18_to_O18_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_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_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_He4_F17_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + -screened_rates(k_F17_to_O17_weaktab)*Y(F17); ydot_nuc(F18) = @@ -1050,7 +1050,7 @@ void rhs_nuc(const burn_t& state, 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_He4_F17_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho; ydot_nuc(Ne21) = screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(He4)*Y(O17)*state.rho + @@ -1115,7 +1115,7 @@ 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_bet_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_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; 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; @@ -1124,7 +1124,7 @@ void jac_nuc(const burn_t& state, 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; 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_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_N13_to_p_O16_reaclib)*Y(N13)*state.rho + screened_rates(k_He4_O14_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; @@ -1133,7 +1133,7 @@ void jac_nuc(const burn_t& state, 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; jac.set(H1, Be7, scratch); - scratch = screened_rates(k_B8_to_p_Be7_reaclib); + scratch = screened_rates(k_B8_to_p_Be7_derived); 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; @@ -1168,7 +1168,7 @@ void jac_nuc(const burn_t& state, 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; 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_to_p_O16_derived) + screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(He4)*state.rho - screened_rates(k_p_F17_to_Ne18_reaclib)*Y(H1)*state.rho; 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; @@ -1185,7 +1185,7 @@ 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_bet_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_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; 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; @@ -1303,7 +1303,7 @@ void jac_nuc(const burn_t& state, 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; 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_He4_C12_to_O16_reaclib)*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_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; 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; @@ -1347,7 +1347,7 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_p_O18_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_He4_F17_to_p_Ne20_derived)*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; @@ -1435,7 +1435,7 @@ void jac_nuc(const burn_t& state, 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; jac.set(Be7, Be7, scratch); - scratch = screened_rates(k_B8_to_p_Be7_reaclib); + scratch = screened_rates(k_B8_to_p_Be7_derived); jac.set(Be7, B8, scratch); jac.set(Be7, B11, 0.0); @@ -1488,7 +1488,7 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_p_Be7_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_reaclib) - screened_rates(k_B8_to_p_Be7_derived); jac.set(B8, B8, scratch); jac.set(B8, B11, 0.0); @@ -2005,7 +2005,7 @@ void jac_nuc(const burn_t& state, jac.set(O16, O18, 0.0); - scratch = screened_rates(k_F17_to_p_O16_reaclib); + scratch = screened_rates(k_F17_to_p_O16_derived); jac.set(O16, F17, scratch); jac.set(O16, F18, 0.0); @@ -2135,7 +2135,7 @@ void jac_nuc(const burn_t& state, 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_He4_F17_to_p_Ne20_derived)*Y(F17)*state.rho + screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(O14)*state.rho; jac.set(F17, He4, scratch); jac.set(F17, Li7, 0.0); @@ -2168,7 +2168,7 @@ void jac_nuc(const burn_t& state, 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_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_Ne18_reaclib)*Y(H1)*state.rho; jac.set(F17, F17, scratch); jac.set(F17, F18, 0.0); @@ -2412,7 +2412,7 @@ void jac_nuc(const burn_t& state, 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_He4_F17_to_p_Ne20_derived)*Y(F17)*state.rho + screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho; jac.set(Ne20, He4, scratch); jac.set(Ne20, Li7, 0.0); @@ -2444,7 +2444,7 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, O18, 0.0); - scratch = screened_rates(k_He4_F17_to_p_Ne20_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(He4)*state.rho; jac.set(Ne20, F17, scratch); jac.set(Ne20, F18, 0.0); diff --git a/networks/nova-li/derived_rates.H b/networks/nova-li/derived_rates.H index 579d7dd3dc..e7d147a226 100644 --- a/networks/nova-li/derived_rates.H +++ b/networks/nova-li/derived_rates.H @@ -9,6 +9,204 @@ using namespace Rates; +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_B8_to_p_Be7_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // B8 --> p + Be7 + + 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 Be7_log_pf, dBe7_log_pf_dT9; + + // setting Be7 log(partition function) to 0.0 by default, independent of T + Be7_log_pf = 0.0_rt; + dBe7_log_pf_dT9 = 0.0_rt; + + amrex::Real B8_log_pf, dB8_log_pf_dT9; + + // setting B8 log(partition function) to 0.0 by default, independent of T + B8_log_pf = 0.0_rt; + dB8_log_pf_dT9 = 0.0_rt; + + amrex::Real net_log_pf = p_log_pf + Be7_log_pf - B8_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dBe7_log_pf_dT9 - dB8_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 nacrr + ln_set_rate = 31.03415329791634 + -8.927520483432566 * tfactors.T9i; + + ln_set_rate += net_log_pf; + + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 8.927520483432566 * tfactors.T9i * tfactors.T9i; + + dln_set_rate_dT9 += net_dlog_pf_dT9; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } + + // ReacLib set derived from nacrn + ln_set_rate = 35.83166329791634 + -1.5825204834325672 * 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 += net_log_pf; + + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 1.5825204834325672 * 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 += net_dlog_pf_dT9; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_F17_to_p_O16_derived(const tf_t& tfactors, 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 + + 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 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; + + // 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 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + 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 rate_He4_F17_to_p_Ne20_derived(const tf_t& tfactors, 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 + + 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 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; + + // setting He4 log(partition 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; + + // 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 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + 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 @@ -22,6 +220,28 @@ fill_derived_rates(const tf_t& tfactors, T& rate_eval) [[maybe_unused]] amrex::Real rate; [[maybe_unused]] amrex::Real drate_dT; + part_fun::pf_cache_t pf_cache{}; + + pf_cache.index_temp_array_1 = interp_net::find_index(tfactors.T9, part_fun::temp_array_1); + + rate_B8_to_p_Be7_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_B8_to_p_Be7_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_B8_to_p_Be7_derived) = drate_dT; + + } + rate_F17_to_p_O16_derived(tfactors, 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; + + } + rate_He4_F17_to_p_Ne20_derived(tfactors, 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; + + } } #endif diff --git a/networks/nova-li/nova-li.png b/networks/nova-li/nova-li.png index 35d9089e59b3b81175e87a4366a715db8d12b5db..ad160c991a65b6cd60a63559ffd4fe86ad3f59ee 100644 GIT binary patch literal 60075 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 F{{iXA`*r{T literal 59687 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 B_7eaA diff --git a/networks/nova-li/nova_li.py b/networks/nova-li/nova_li.py index 6b01728168..1beaa4d379 100644 --- a/networks/nova-li/nova_li.py +++ b/networks/nova-li/nova_li.py @@ -15,17 +15,9 @@ def create_network(): "f17", "f18", "f19", "ne18", "ne19", "ne20", "ne21"] - nova_library = rl.linking_nuclei(all_nuclei, with_reverse=True) - - tl = pyna.TabularLibrary(ordering=["ffn", "oda", "langanke"]) - weak_library = tl.linking_nuclei(all_nuclei) - - # remove duplicates - all_lib = nova_library + weak_library - - all_lib.eliminate_duplicates(rate_type_preference="tabular") - - net = AmrexAstroCxxNetwork(libraries=[all_lib]) + net = pyna.network_helper(all_nuclei, + tabular_ordering=["ffn", "langanke", "oda"], + network_type="amrex") # now remove unimportant rates diff --git a/networks/nova-li/partition_functions.H b/networks/nova-li/partition_functions.H index 33eaf69e8f..eeb8dc8ef9 100644 --- a/networks/nova-li/partition_functions.H +++ b/networks/nova-li/partition_functions.H @@ -18,6 +18,101 @@ using namespace Species; namespace part_fun { + constexpr int npts_1 = 72; + + // this is T9 + + inline AMREX_GPU_MANAGED amrex::Array1D temp_array_1 = { + 0.01, 0.15, 0.2, 0.3, 0.4, + 0.5, 0.6, 0.7, 0.8, 0.9, + 1.0, 1.5, 2.0, 2.5, 3.0, + 3.5, 4.0, 4.5, 5.0, 6.0, + 7.0, 8.0, 9.0, 10.0, 12.0, + 14.0, 16.0, 18.0, 20.0, 22.0, + 24.0, 26.0, 28.0, 30.0, 35.0, + 40.0, 45.0, 50.0, 55.0, 60.0, + 65.0, 70.0, 75.0, 80.0, 85.0, + 90.0, 95.0, 100.0, 105.0, 110.0, + 115.0, 120.0, 125.0, 130.0, 135.0, + 140.0, 145.0, 150.0, 155.0, 160.0, + 165.0, 170.0, 175.0, 180.0, 190.0, + 200.0, 210.0, 220.0, 230.0, 240.0, + 250.0, 275.0, + }; + + + // O16 + + // this is log(partition function) + + inline AMREX_GPU_MANAGED amrex::Array1D O16_pf_array = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.02955880224154443, + 0.08617769624105241, 0.16551443847757333, 0.27763173659827955, 0.4252677354043441, 0.6043159668533296, + 0.7975071958841882, 1.007957920399979, 1.2296405510745139, 1.4609379041156563, 2.0681277817795625, + 2.70805020110221, 3.3775875160230218, 4.062165663857866, 4.7535901911063645, 5.4510384535657, + 6.142037405587356, 6.828712071641684, 7.512071245835466, 8.185907481482324, 8.85366542803745, + 9.517825071724143, 10.177324218165856, 10.831706855275558, 11.48246625748552, 12.128111104060462, + 12.774223335915433, 13.41652441595382, 14.054527458434775, 14.690979295318174, 15.324022551808413, + 15.956752500549557, 16.588099280204055, 17.216707939626428, 17.842646370492925, 18.469470908121796, + 19.09362521719479, 19.715407911546766, 20.337603356134426, 20.954377557909798, 22.19802884605391, + 23.43796058076729, 24.670655986211848, 25.905049387238495, 27.136724794113768, 28.368185181905268, + 29.602320498988682, 32.68726692127686, + }; + + constexpr amrex::Real O16_pf_threshold_T9 = 10.0; + + // F17 + + // this is log(partition function) + + inline AMREX_GPU_MANAGED amrex::Array1D F17_pf_array = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.009950330853168092, 0.01980262729617973, 0.02955880224154443, 0.04879016416943205, + 0.058268908123975824, 0.0769610411361284, 0.08617769624105241, 0.09531017980432493, 0.12221763272424911, + 0.13976194237515863, 0.1570037488096647, 0.17395330712343798, 0.19885085874516517, 0.26236426446749106, + 0.3293037471426003, 0.41871033485818504, 0.5247285289349821, 0.6471032420585384, 0.7884573603642703, + 0.9400072584914712, 1.1019400787607843, 1.2781522025001875, 1.4678743481123135, 1.9810014688665833, + 2.5416019934645457, 3.1441522786722644, 3.7612001156935624, 4.388257184424518, 5.0238805208462765, + 5.655991810819852, 6.2878585601617845, 6.917705609835305, 7.549609165154532, 8.183118079394745, + 8.814330422638774, 9.441452092939569, 10.077440859659566, 10.707728780601661, 11.33857207782545, + 11.970350312009105, 12.601487417784837, 13.233904752137237, 13.864300722133706, 14.498607402670718, + 15.131918791619999, 15.765697263786848, 16.3957273875566, 17.034386382832476, 17.667783558986645, + 18.301897207962398, 18.939474537367534, 19.571252771551187, 20.207427671356875, 21.479387816667746, + 22.755353682242777, 24.033808850340435, 25.311289864099532, 26.592562750080187, 27.877881193860073, + 29.165735482166713, 32.393195050726305, + }; + + constexpr amrex::Real F17_pf_threshold_T9 = 1.0; + + // Ne20 + + // this is log(partition function) + + inline AMREX_GPU_MANAGED amrex::Array1D Ne20_pf_array = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 1.5999872001381317e-05, 0.00038192705657577196, 0.0025407695097516073, 0.008962714607884434, + 0.02196890666877481, 0.04281712292730049, 0.07155385603147618, 0.10734115290026017, 0.19485435877707374, + 0.2952416765065437, 0.4013680599901673, 0.5094424676464369, 0.6178722970606984, 0.8329091229351039, + 1.0508216248317612, 1.269760544863939, 1.4929040961781488, 1.7191887763932197, 1.9530276168241774, + 2.194999882314108, 2.451005098112319, 2.714694743820879, 3.0007198150650303, 3.784189633918261, + 4.6443908991413725, 5.54907608489522, 6.46302945692067, 7.371489295214277, 8.266164436612492, + 9.148464968258095, 10.021270588192511, 10.881813675329736, 11.736069016284437, 12.584509081250419, + 13.425426551894413, 14.26019637922572, 15.096444403426338, 15.926935145497161, 16.75467248002987, + 17.579033555073977, 18.40149792453559, 19.222682329424394, 20.040068987239636, 20.854294099352817, + 21.671055235879937, 22.481123754498785, 23.295878067153517, 24.100853352969434, 24.909885675277682, + 25.720478110710527, 26.525384212323473, 27.329916023144627, 28.131796403841037, 29.741234316275136, + 31.347029237430736, 32.94914110977277, 34.548726725763856, 36.15618247699396, 37.76164424104842, + 39.36709013221299, 43.378053085496035, + }; + + constexpr amrex::Real Ne20_pf_threshold_T9 = 1.0; + // interpolation routine @@ -66,6 +161,8 @@ namespace part_fun { // Store the coefficient and derivative adjacent in memory, as they're // always accessed at the same time. amrex::Array2D data; + int index_temp_array_1{-1}; + AMREX_GPU_HOST_DEVICE AMREX_INLINE pf_cache_t() { // The entries will be default-initialized to -900, @@ -95,6 +192,24 @@ void get_partition_function(const int inuc, switch (inuc) { + case O16: + if (T9 > part_fun::O16_pf_threshold_T9) { + part_fun::interpolate_pf(T9, pf_cache.index_temp_array_1, part_fun::temp_array_1, part_fun::O16_pf_array, logpf, dlogpf_dT9); + } + break; + + case F17: + if (T9 > part_fun::F17_pf_threshold_T9) { + part_fun::interpolate_pf(T9, pf_cache.index_temp_array_1, part_fun::temp_array_1, part_fun::F17_pf_array, logpf, dlogpf_dT9); + } + break; + + case Ne20: + if (T9 > part_fun::Ne20_pf_threshold_T9) { + part_fun::interpolate_pf(T9, pf_cache.index_temp_array_1, part_fun::temp_array_1, part_fun::Ne20_pf_array, logpf, dlogpf_dT9); + } + break; + default: diff --git a/networks/nova-li/pynucastro-info.txt b/networks/nova-li/pynucastro-info.txt index e055581de4..ddc63d0654 100644 --- a/networks/nova-li/pynucastro-info.txt +++ b/networks/nova-li/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 2.9.0-28-gbcc09d414 +pynucastro version: 2.9.0-44-g77ed73b73 diff --git a/networks/nova-li/reaclib_rates.H b/networks/nova-li/reaclib_rates.H index 5ea7dfc347..5f7747bfc8 100644 --- a/networks/nova-li/reaclib_rates.H +++ b/networks/nova-li/reaclib_rates.H @@ -147,53 +147,6 @@ void rate_O15_to_N15_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::Rea } -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_B8_to_p_Be7_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // B8 --> p + Be7 - - rate = 0.0; - drate_dT = 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; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 8.93482 * tfactors.T9i * 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 (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; - - 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; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_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 rate_B8_to_He4_He4_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { @@ -227,39 +180,7 @@ void rate_B8_to_He4_He4_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex:: template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_F17_to_p_O16_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // F17 --> p + O16 - - rate = 0.0; - drate_dT = 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; - - 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; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_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 rate_p_p_to_d_reaclib_bet_pos(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_p_to_d_reaclib_beta_pos(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { // p + p --> d @@ -2348,38 +2269,6 @@ void rate_p_O18_to_He4_N15_reaclib(const tf_t& tfactors, amrex::Real& rate, amre } -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_F17_to_p_Ne20_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // F17 + He4 --> p + Ne20 - - rate = 0.0; - drate_dT = 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; - - 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; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_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 rate_p_F18_to_He4_O15_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { @@ -2823,12 +2712,6 @@ fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_O15_to_N15_reaclib) = drate_dT; - } - rate_B8_to_p_Be7_reaclib(tfactors, 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; - } rate_B8_to_He4_He4_reaclib(tfactors, rate, drate_dT); rate_eval.screened_rates(k_B8_to_He4_He4_reaclib) = rate; @@ -2836,16 +2719,10 @@ fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) rate_eval.dscreened_rates_dT(k_B8_to_He4_He4_reaclib) = drate_dT; } - rate_F17_to_p_O16_reaclib(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_F17_to_p_O16_reaclib) = rate; + rate_p_p_to_d_reaclib_beta_pos(tfactors, 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_F17_to_p_O16_reaclib) = drate_dT; - - } - rate_p_p_to_d_reaclib_bet_pos(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_p_to_d_reaclib_bet_pos) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_p_to_d_reaclib_bet_pos) = drate_dT; + rate_eval.dscreened_rates_dT(k_p_p_to_d_reaclib_beta_pos) = drate_dT; } rate_p_p_to_d_reaclib_electron_capture(tfactors, rate, drate_dT); @@ -3045,12 +2922,6 @@ fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_p_O18_to_He4_N15_reaclib) = drate_dT; - } - rate_He4_F17_to_p_Ne20_reaclib(tfactors, 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_p_F18_to_He4_O15_reaclib(tfactors, rate, drate_dT); rate_eval.screened_rates(k_p_F18_to_He4_O15_reaclib) = rate; diff --git a/networks/nova/actual_network.H b/networks/nova/actual_network.H index df0e6ef0e7..50a66631a8 100644 --- a/networks/nova/actual_network.H +++ b/networks/nova/actual_network.H @@ -194,35 +194,59 @@ namespace Rates 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_bet_pos = 6, - k_p_p_to_d_reaclib_electron_capture = 7, - k_p_d_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_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_He4_He4_He4_to_C12_reaclib = 31, - NumRates = k_He4_He4_He4_to_C12_reaclib + k_B8_to_He4_He4_reaclib = 4, + k_p_p_to_d_reaclib_beta_pos = 5, + k_p_p_to_d_reaclib_electron_capture = 6, + k_p_d_to_He3_reaclib = 7, + k_d_d_to_He4_reaclib = 8, + k_p_He3_to_He4_reaclib = 9, + k_He4_He3_to_Be7_reaclib = 10, + k_p_Be7_to_B8_reaclib = 11, + k_p_C12_to_N13_reaclib = 12, + k_He4_C12_to_O16_reaclib = 13, + k_p_C13_to_N14_reaclib = 14, + k_p_N13_to_O14_reaclib = 15, + k_p_N14_to_O15_reaclib = 16, + k_He4_N14_to_F18_reaclib = 17, + k_p_N15_to_O16_reaclib = 18, + k_p_O16_to_F17_reaclib = 19, + k_p_O17_to_F18_reaclib = 20, + k_d_He3_to_p_He4_reaclib = 21, + k_He4_N13_to_p_O16_reaclib = 22, + k_p_N15_to_He4_C12_reaclib = 23, + k_He4_O14_to_p_F17_reaclib = 24, + k_p_O17_to_He4_N14_reaclib = 25, + k_p_F18_to_He4_O15_reaclib = 26, + k_He3_He3_to_p_p_He4_reaclib = 27, + k_d_Be7_to_p_He4_He4_reaclib = 28, + k_He3_Be7_to_p_p_He4_He4_reaclib = 29, + k_He4_He4_He4_to_C12_reaclib = 30, + k_F17_to_O17_weaktab = 31, + k_O17_to_F17_weaktab = 32, + k_He3_to_p_d_derived = 33, + k_He4_to_d_d_derived = 34, + k_Be7_to_He4_He3_derived = 35, + k_B8_to_p_Be7_derived = 36, + k_N13_to_p_C12_derived = 37, + k_N14_to_p_C13_derived = 38, + k_O14_to_p_N13_derived = 39, + k_O15_to_p_N14_derived = 40, + k_O16_to_p_N15_derived = 41, + k_O16_to_He4_C12_derived = 42, + k_F17_to_p_O16_derived = 43, + k_F18_to_p_O17_derived = 44, + k_F18_to_He4_N14_derived = 45, + k_C12_to_He4_He4_He4_derived = 46, + k_p_He4_to_d_He3_derived = 47, + k_He4_C12_to_p_N15_derived = 48, + k_He4_N14_to_p_O17_derived = 49, + k_He4_O15_to_p_F18_derived = 50, + k_p_O16_to_He4_N13_derived = 51, + k_p_F17_to_He4_O14_derived = 52, + k_p_p_He4_to_He3_He3_derived = 53, + k_p_He4_He4_to_d_Be7_derived = 54, + k_p_p_He4_He4_to_He3_Be7_derived = 55, + NumRates = k_p_p_He4_He4_to_He3_Be7_derived }; // rate names -- note: the rates are 1-based, not zero-based, so we pad @@ -234,34 +258,58 @@ namespace Rates "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_bet_pos", // 6, - "p_p_to_d_reaclib_electron_capture", // 7, - "p_d_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_He3_to_p_p_He4_reaclib", // 28, - "d_Be7_to_p_He4_He4_reaclib", // 29, - "He3_Be7_to_p_p_He4_He4_reaclib", // 30, - "He4_He4_He4_to_C12_reaclib" // 31, + "B8_to_He4_He4_reaclib", // 4, + "p_p_to_d_reaclib_beta_pos", // 5, + "p_p_to_d_reaclib_electron_capture", // 6, + "p_d_to_He3_reaclib", // 7, + "d_d_to_He4_reaclib", // 8, + "p_He3_to_He4_reaclib", // 9, + "He4_He3_to_Be7_reaclib", // 10, + "p_Be7_to_B8_reaclib", // 11, + "p_C12_to_N13_reaclib", // 12, + "He4_C12_to_O16_reaclib", // 13, + "p_C13_to_N14_reaclib", // 14, + "p_N13_to_O14_reaclib", // 15, + "p_N14_to_O15_reaclib", // 16, + "He4_N14_to_F18_reaclib", // 17, + "p_N15_to_O16_reaclib", // 18, + "p_O16_to_F17_reaclib", // 19, + "p_O17_to_F18_reaclib", // 20, + "d_He3_to_p_He4_reaclib", // 21, + "He4_N13_to_p_O16_reaclib", // 22, + "p_N15_to_He4_C12_reaclib", // 23, + "He4_O14_to_p_F17_reaclib", // 24, + "p_O17_to_He4_N14_reaclib", // 25, + "p_F18_to_He4_O15_reaclib", // 26, + "He3_He3_to_p_p_He4_reaclib", // 27, + "d_Be7_to_p_He4_He4_reaclib", // 28, + "He3_Be7_to_p_p_He4_He4_reaclib", // 29, + "He4_He4_He4_to_C12_reaclib", // 30, + "F17_to_O17_weaktab", // 31, + "O17_to_F17_weaktab", // 32, + "He3_to_p_d_derived", // 33, + "He4_to_d_d_derived", // 34, + "Be7_to_He4_He3_derived", // 35, + "B8_to_p_Be7_derived", // 36, + "N13_to_p_C12_derived", // 37, + "N14_to_p_C13_derived", // 38, + "O14_to_p_N13_derived", // 39, + "O15_to_p_N14_derived", // 40, + "O16_to_p_N15_derived", // 41, + "O16_to_He4_C12_derived", // 42, + "F17_to_p_O16_derived", // 43, + "F18_to_p_O17_derived", // 44, + "F18_to_He4_N14_derived", // 45, + "C12_to_He4_He4_He4_derived", // 46, + "p_He4_to_d_He3_derived", // 47, + "He4_C12_to_p_N15_derived", // 48, + "He4_N14_to_p_O17_derived", // 49, + "He4_O15_to_p_F18_derived", // 50, + "p_O16_to_He4_N13_derived", // 51, + "p_F17_to_He4_O14_derived", // 52, + "p_p_He4_to_He3_He3_derived", // 53, + "p_He4_He4_to_d_Be7_derived", // 54, + "p_p_He4_He4_to_He3_Be7_derived" // 55, }; } @@ -285,9 +333,29 @@ namespace NSE_INDEX constexpr int H1_index = 1; constexpr int N_index = -1; constexpr int He4_index = 4; - constexpr int NumNSERatePairs = 0; + constexpr int NumNSERatePairs = 20; inline AMREX_GPU_MANAGED amrex::Array2D rate_pair_data { + H1, H2, -1, He3, -1, -1, H2, He3, k_p_d_to_He3_reaclib, k_He3_to_p_d_derived, + H2, H2, -1, He4, -1, -1, H2, H2, k_d_d_to_He4_reaclib, k_He4_to_d_d_derived, + He4, He3, -1, Be7, -1, -1, He3, Be7, k_He4_He3_to_Be7_reaclib, k_Be7_to_He4_He3_derived, + H1, Be7, -1, B8, -1, -1, Be7, B8, k_p_Be7_to_B8_reaclib, k_B8_to_p_Be7_derived, + 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, + H1, O16, -1, F17, -1, -1, O16, F17, k_p_O16_to_F17_reaclib, k_F17_to_p_O16_derived, + H1, O17, -1, F18, -1, -1, O17, F18, k_p_O17_to_F18_reaclib, k_F18_to_p_O17_derived, + H2, He3, -1, H1, He4, -1, H2, He3, k_d_He3_to_p_He4_reaclib, k_p_He4_to_d_He3_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, F18, -1, He4, O15, -1, F18, O15, k_p_F18_to_He4_O15_reaclib, k_He4_O15_to_p_F18_derived, + He4, He4, He4, C12, -1, -1, C12, -1, k_He4_He4_He4_to_C12_reaclib, k_C12_to_He4_He4_He4_derived }; } #endif diff --git a/networks/nova/actual_rhs.H b/networks/nova/actual_rhs.H index 8207a05fd3..dce7b7a41b 100644 --- a/networks/nova/actual_rhs.H +++ b/networks/nova/actual_rhs.H @@ -97,11 +97,11 @@ void evaluate_rates(const burn_t& state, actual_screen(pstate, scn_fac, scor, dscor_dt); } - ratraw = rate_eval.screened_rates(k_p_p_to_d_reaclib_bet_pos); - rate_eval.screened_rates(k_p_p_to_d_reaclib_bet_pos) *= scor; + ratraw = rate_eval.screened_rates(k_p_p_to_d_reaclib_beta_pos); + rate_eval.screened_rates(k_p_p_to_d_reaclib_beta_pos) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_p_to_d_reaclib_bet_pos); - rate_eval.dscreened_rates_dT(k_p_p_to_d_reaclib_bet_pos) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_p_to_d_reaclib_beta_pos); + rate_eval.dscreened_rates_dT(k_p_p_to_d_reaclib_beta_pos) = ratraw * dscor_dt + dratraw_dT * scor; } ratraw = rate_eval.screened_rates(k_p_p_to_d_reaclib_electron_capture); @@ -111,6 +111,13 @@ void evaluate_rates(const burn_t& state, rate_eval.dscreened_rates_dT(k_p_p_to_d_reaclib_electron_capture) = ratraw * dscor_dt + dratraw_dT * scor; } + ratraw = rate_eval.screened_rates(k_p_p_He4_He4_to_He3_Be7_derived); + rate_eval.screened_rates(k_p_p_He4_He4_to_He3_Be7_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_p_He4_He4_to_He3_Be7_derived); + rate_eval.dscreened_rates_dT(k_p_p_He4_He4_to_He3_Be7_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + { constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 1.0_rt, 2.0_rt); @@ -209,6 +216,13 @@ void evaluate_rates(const burn_t& state, rate_eval.dscreened_rates_dT(k_He4_C12_to_O16_reaclib) = ratraw * dscor_dt + dratraw_dT * scor; } + ratraw = rate_eval.screened_rates(k_He4_C12_to_p_N15_derived); + rate_eval.screened_rates(k_He4_C12_to_p_N15_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_C12_to_p_N15_derived); + rate_eval.dscreened_rates_dT(k_He4_C12_to_p_N15_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + { constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 6.0_rt, 13.0_rt); @@ -265,6 +279,13 @@ void evaluate_rates(const burn_t& state, rate_eval.dscreened_rates_dT(k_He4_N14_to_F18_reaclib) = ratraw * dscor_dt + dratraw_dT * scor; } + ratraw = rate_eval.screened_rates(k_He4_N14_to_p_O17_derived); + rate_eval.screened_rates(k_He4_N14_to_p_O17_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_N14_to_p_O17_derived); + rate_eval.dscreened_rates_dT(k_He4_N14_to_p_O17_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + { constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 7.0_rt, 15.0_rt); @@ -300,6 +321,13 @@ void evaluate_rates(const burn_t& state, rate_eval.dscreened_rates_dT(k_p_O16_to_F17_reaclib) = ratraw * dscor_dt + dratraw_dT * scor; } + ratraw = rate_eval.screened_rates(k_p_O16_to_He4_N13_derived); + rate_eval.screened_rates(k_p_O16_to_He4_N13_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_derived); + rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + { constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 8.0_rt, 17.0_rt); @@ -440,6 +468,76 @@ void evaluate_rates(const burn_t& state, rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = ratraw * (scor * dscor2_dt + dscor_dt * scor2) + dratraw_dT * scor * scor2; } + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 2.0_rt, 4.0_rt); + static_assert(scn_fac.z1 == 1.0_rt); + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + ratraw = rate_eval.screened_rates(k_p_He4_to_d_He3_derived); + rate_eval.screened_rates(k_p_He4_to_d_He3_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_He4_to_d_He3_derived); + rate_eval.dscreened_rates_dT(k_p_He4_to_d_He3_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 8.0_rt, 15.0_rt); + static_assert(scn_fac.z1 == 2.0_rt); + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + ratraw = rate_eval.screened_rates(k_He4_O15_to_p_F18_derived); + rate_eval.screened_rates(k_He4_O15_to_p_F18_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O15_to_p_F18_derived); + rate_eval.dscreened_rates_dT(k_He4_O15_to_p_F18_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 9.0_rt, 17.0_rt); + static_assert(scn_fac.z1 == 1.0_rt); + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + ratraw = rate_eval.screened_rates(k_p_F17_to_He4_O14_derived); + rate_eval.screened_rates(k_p_F17_to_He4_O14_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_F17_to_He4_O14_derived); + rate_eval.dscreened_rates_dT(k_p_F17_to_He4_O14_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 1.0_rt, 1.0_rt); + static_assert(scn_fac.z1 == 1.0_rt); + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + ratraw = rate_eval.screened_rates(k_p_p_He4_to_He3_He3_derived); + rate_eval.screened_rates(k_p_p_He4_to_He3_He3_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_p_He4_to_He3_He3_derived); + rate_eval.dscreened_rates_dT(k_p_p_He4_to_He3_He3_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 2.0_rt, 4.0_rt); + static_assert(scn_fac.z1 == 1.0_rt); + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + ratraw = rate_eval.screened_rates(k_p_He4_He4_to_d_Be7_derived); + rate_eval.screened_rates(k_p_He4_He4_to_d_Be7_derived) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_He4_He4_to_d_Be7_derived); + rate_eval.dscreened_rates_dT(k_p_He4_He4_to_d_Be7_derived) = ratraw * dscor_dt + dratraw_dT * scor; + } + #endif // Fill approximate rates @@ -452,6 +550,25 @@ void evaluate_rates(const burn_t& state, 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); + } @@ -500,14 +617,28 @@ void get_ydot_weak(const burn_t& state, // Calculate tabular rates and get ydot_weak + 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); + + auto screened_rates = rate_eval.screened_rates; ydot_nuc(H1) = - -screened_rates(k_p_p_to_d_reaclib_bet_pos)*amrex::Math::powi<2>(Y(H1))*state.rho + + -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; ydot_nuc(H2) = - 0.5*screened_rates(k_p_p_to_d_reaclib_bet_pos)*amrex::Math::powi<2>(Y(H1))*state.rho + + 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; ydot_nuc(He3) = @@ -545,10 +676,10 @@ void get_ydot_weak(const burn_t& state, ydot_nuc(O16) = 0.0_rt; ydot_nuc(O17) = - screened_rates(k_F17_to_O17_reaclib)*Y(F17); + (screened_rates(k_F17_to_O17_weaktab)*Y(F17) + -screened_rates(k_O17_to_F17_weaktab)*Y(O17)); ydot_nuc(F17) = - -screened_rates(k_F17_to_O17_reaclib)*Y(F17); + (-screened_rates(k_F17_to_O17_weaktab)*Y(F17) + screened_rates(k_O17_to_F17_weaktab)*Y(O17)); ydot_nuc(F18) = 0.0_rt; @@ -566,130 +697,130 @@ void rhs_nuc(const burn_t& state, using namespace Rates; ydot_nuc(H1) = - -screened_rates(k_p_p_to_d_reaclib_bet_pos)*amrex::Math::powi<2>(Y(H1))*state.rho + + -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_d_to_He3_reaclib)*Y(H2)*Y(H1)*state.rho + screened_rates(k_He3_to_p_d_derived)*Y(He3)) + -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_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_p_Be7_to_B8_reaclib)*Y(Be7)*Y(H1)*state.rho + screened_rates(k_B8_to_p_Be7_derived)*Y(B8)) + + (-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_d_He3_to_p_He4_reaclib)*Y(He3)*Y(H2)*state.rho + -screened_rates(k_p_He4_to_d_He3_derived)*Y(He4)*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_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_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_He3_He3_to_p_p_He4_reaclib)*amrex::Math::powi<2>(Y(He3))*state.rho + -screened_rates(k_p_p_He4_to_He3_He3_derived)*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_derived)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<2>(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_derived)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<3>(state.rho)); ydot_nuc(H2) = - 0.5*screened_rates(k_p_p_to_d_reaclib_bet_pos)*amrex::Math::powi<2>(Y(H1))*state.rho + + 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_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_p_d_to_He3_reaclib)*Y(H2)*Y(H1)*state.rho + screened_rates(k_He3_to_p_d_derived)*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_derived)*Y(He4)) + + (-screened_rates(k_d_He3_to_p_He4_reaclib)*Y(He3)*Y(H2)*state.rho + screened_rates(k_p_He4_to_d_He3_derived)*Y(He4)*Y(H1)*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_derived)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<2>(state.rho)); ydot_nuc(He3) = - screened_rates(k_p_d_to_He3_reaclib)*Y(H2)*Y(H1)*state.rho + + (screened_rates(k_p_d_to_He3_reaclib)*Y(H2)*Y(H1)*state.rho + -screened_rates(k_He3_to_p_d_derived)*Y(He3)) + -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_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_He4_He3_to_Be7_reaclib)*Y(He3)*Y(He4)*state.rho + screened_rates(k_Be7_to_He4_He3_derived)*Y(Be7)) + + (-screened_rates(k_d_He3_to_p_He4_reaclib)*Y(He3)*Y(H2)*state.rho + screened_rates(k_p_He4_to_d_He3_derived)*Y(He4)*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_derived)*Y(He4)*amrex::Math::powi<2>(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_derived)*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) + - 0.5*screened_rates(k_d_d_to_He4_reaclib)*amrex::Math::powi<2>(Y(H2))*state.rho + + (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_derived)*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_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 + - 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 + - -0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho); + (-screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He3)*Y(He4)*state.rho + screened_rates(k_Be7_to_He4_He3_derived)*Y(Be7)) + + (-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_d_He3_to_p_He4_reaclib)*Y(He3)*Y(H2)*state.rho + -screened_rates(k_p_He4_to_d_He3_derived)*Y(He4)*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_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_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) + + (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_derived)*Y(He4)*amrex::Math::powi<2>(Y(H1))*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_derived)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<2>(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_derived)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<3>(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)); 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_He4_He3_to_Be7_reaclib)*Y(He3)*Y(He4)*state.rho + -screened_rates(k_Be7_to_He4_He3_derived)*Y(Be7)) + + (-screened_rates(k_p_Be7_to_B8_reaclib)*Y(Be7)*Y(H1)*state.rho + screened_rates(k_B8_to_p_Be7_derived)*Y(B8)) + + (-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_derived)*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_derived)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<3>(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_p_Be7_to_B8_reaclib)*Y(Be7)*Y(H1)*state.rho + -screened_rates(k_B8_to_p_Be7_derived)*Y(B8)); 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 + - 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_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_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) + + (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)); 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_p_C13_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_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_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); 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_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); 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_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_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); 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_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_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_p_F17_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_p_F18_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho; + (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_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); 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_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_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); 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_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)); 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_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_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)); 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_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_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*Y(O15)*state.rho); } @@ -750,64 +881,68 @@ 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_bet_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_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_He4_O14_derived)*Y(F17)*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 - 0.5*screened_rates(k_p_He4_He4_to_d_Be7_derived)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_p_He4_to_d_He3_derived)*Y(He4)*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_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_d_to_He3_reaclib)*Y(H2)*state.rho - 1.0*screened_rates(k_p_p_He4_He4_to_He3_Be7_derived)*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_derived)*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; 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; 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_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_to_p_d_derived) + 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; 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_He4_C12_to_p_N15_derived)*Y(C12)*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_O14_to_p_F17_reaclib)*Y(O14)*state.rho + screened_rates(k_He4_O15_to_p_F18_derived)*Y(O15)*state.rho - 1.0*screened_rates(k_p_He4_He4_to_d_Be7_derived)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho) - screened_rates(k_p_He4_to_d_He3_derived)*Y(H1)*state.rho - 1.0*screened_rates(k_p_p_He4_He4_to_He3_Be7_derived)*Y(He4)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<3>(state.rho) - screened_rates(k_p_p_He4_to_He3_He3_derived)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(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; jac.set(H1, Be7, scratch); - jac.set(H1, B8, 0.0); + scratch = screened_rates(k_B8_to_p_Be7_derived); + jac.set(H1, B8, scratch); - scratch = -screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + 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; jac.set(H1, C12, scratch); scratch = -screened_rates(k_p_C13_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_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; jac.set(H1, N13, scratch); - scratch = -screened_rates(k_p_N14_to_O15_reaclib)*Y(H1)*state.rho; + 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; 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; jac.set(H1, N15, scratch); - scratch = screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*state.rho + screened_rates(k_O14_to_p_N13_derived); jac.set(H1, O14, scratch); - jac.set(H1, O15, 0.0); + scratch = screened_rates(k_He4_O15_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_p_O16_to_F17_reaclib)*Y(H1)*state.rho; + scratch = 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; 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; jac.set(H1, O17, scratch); - jac.set(H1, F17, 0.0); + scratch = screened_rates(k_F17_to_p_O16_derived) - screened_rates(k_p_F17_to_He4_O14_derived)*Y(H1)*state.rho; + jac.set(H1, F17, scratch); - scratch = -screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F18_to_p_O17_derived) - screened_rates(k_p_F18_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_bet_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 = 0.5*screened_rates(k_p_He4_He4_to_d_Be7_derived)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + screened_rates(k_p_He4_to_d_He3_derived)*Y(He4)*state.rho - 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; 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; jac.set(H2, H2, scratch); - scratch = -screened_rates(k_d_He3_to_p_He4_reaclib)*Y(H2)*state.rho; + scratch = screened_rates(k_He3_to_p_d_derived) - screened_rates(k_d_He3_to_p_He4_reaclib)*Y(H2)*state.rho; jac.set(H2, He3, scratch); - jac.set(H2, He4, 0.0); + scratch = 2.0*screened_rates(k_He4_to_d_d_derived) + 1.0*screened_rates(k_p_He4_He4_to_d_Be7_derived)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho) + screened_rates(k_p_He4_to_d_He3_derived)*Y(H1)*state.rho; + jac.set(H2, He4, scratch); scratch = -screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(H2)*state.rho; jac.set(H2, Be7, scratch); @@ -836,19 +971,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_p_He3_to_He4_reaclib)*Y(He3)*state.rho + screened_rates(k_p_He4_to_d_He3_derived)*Y(He4)*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_derived)*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_derived)*Y(He4)*Y(H1)*amrex::Math::powi<2>(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; 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_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_to_p_d_derived) - 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; jac.set(He3, He3, scratch); - scratch = -screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He3)*state.rho; + scratch = -screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He3)*state.rho + screened_rates(k_p_He4_to_d_He3_derived)*Y(H1)*state.rho + 0.5*screened_rates(k_p_p_He4_He4_to_He3_Be7_derived)*Y(He4)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<3>(state.rho) + screened_rates(k_p_p_He4_to_He3_He3_derived)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(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_to_He4_He3_derived) - screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(He3)*state.rho; jac.set(He3, Be7, scratch); jac.set(He3, B8, 0.0); @@ -875,7 +1010,7 @@ 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_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_He3_to_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_p_He4_He4_to_d_Be7_derived)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_p_He4_to_d_He3_derived)*Y(He4)*state.rho + screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*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 - 1.0*screened_rates(k_p_p_He4_He4_to_He3_Be7_derived)*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_derived)*Y(He4)*Y(H1)*amrex::Math::powi<2>(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; @@ -884,16 +1019,16 @@ void jac_nuc(const burn_t& state, 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; 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_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_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_N14_to_p_O17_derived)*Y(N14)*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_to_d_d_derived) - 2.0*screened_rates(k_p_He4_He4_to_d_Be7_derived)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho) - screened_rates(k_p_He4_to_d_He3_derived)*Y(H1)*state.rho - 1.0*screened_rates(k_p_p_He4_He4_to_He3_Be7_derived)*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_derived)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(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 = screened_rates(k_Be7_to_He4_He3_derived) + 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; jac.set(He4, Be7, scratch); scratch = 2.0*screened_rates(k_B8_to_He4_He4_reaclib); jac.set(He4, B8, scratch); - scratch = -screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho; + scratch = 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; jac.set(He4, C12, scratch); jac.set(He4, C13, 0.0); @@ -901,7 +1036,7 @@ void jac_nuc(const burn_t& state, scratch = -screened_rates(k_He4_N13_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_He4_N14_to_F18_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*state.rho; jac.set(He4, N14, scratch); scratch = screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(H1)*state.rho; @@ -910,19 +1045,22 @@ void jac_nuc(const burn_t& state, scratch = -screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*state.rho; jac.set(He4, O14, scratch); - jac.set(He4, O15, 0.0); + scratch = -screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*state.rho; + jac.set(He4, O15, scratch); - jac.set(He4, O16, 0.0); + scratch = screened_rates(k_O16_to_He4_C12_derived) + screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + jac.set(He4, O16, scratch); scratch = screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(H1)*state.rho; jac.set(He4, O17, scratch); - jac.set(He4, F17, 0.0); + scratch = screened_rates(k_p_F17_to_He4_O14_derived)*Y(H1)*state.rho; + jac.set(He4, F17, scratch); - scratch = screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F18_to_He4_N14_derived) + screened_rates(k_p_F18_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_p_Be7_to_B8_reaclib)*Y(Be7)*state.rho + 0.5*screened_rates(k_p_He4_He4_to_d_Be7_derived)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + 0.5*screened_rates(k_p_p_He4_He4_to_He3_Be7_derived)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<3>(state.rho); jac.set(Be7, H1, scratch); scratch = -screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(Be7)*state.rho; @@ -931,13 +1069,14 @@ void jac_nuc(const burn_t& state, 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; jac.set(Be7, He3, scratch); - scratch = screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He3)*state.rho; + scratch = screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He3)*state.rho + 1.0*screened_rates(k_p_He4_He4_to_d_Be7_derived)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho) + 0.5*screened_rates(k_p_p_He4_He4_to_He3_Be7_derived)*Y(He4)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<3>(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_to_He4_He3_derived) - 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; jac.set(Be7, Be7, scratch); - jac.set(Be7, B8, 0.0); + scratch = screened_rates(k_B8_to_p_Be7_derived); + jac.set(Be7, B8, scratch); jac.set(Be7, C12, 0.0); @@ -973,7 +1112,7 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_p_Be7_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_reaclib) - screened_rates(k_B8_to_p_Be7_derived); jac.set(B8, B8, scratch); jac.set(B8, C12, 0.0); @@ -1005,19 +1144,20 @@ void jac_nuc(const burn_t& state, 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_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); 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_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; jac.set(C12, C12, scratch); jac.set(C12, C13, 0.0); - jac.set(C12, N13, 0.0); + scratch = screened_rates(k_N13_to_p_C12_derived); + jac.set(C12, N13, scratch); jac.set(C12, N14, 0.0); @@ -1028,7 +1168,8 @@ void jac_nuc(const burn_t& state, jac.set(C12, O15, 0.0); - jac.set(C12, O16, 0.0); + scratch = screened_rates(k_O16_to_He4_C12_derived); + jac.set(C12, O16, scratch); jac.set(C12, O17, 0.0); @@ -1057,7 +1198,8 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_N13_to_C13_reaclib); jac.set(C13, N13, scratch); - jac.set(C13, N14, 0.0); + scratch = screened_rates(k_N14_to_p_C13_derived); + jac.set(C13, N14, scratch); jac.set(C13, N15, 0.0); @@ -1073,7 +1215,7 @@ 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_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; jac.set(N13, H1, scratch); jac.set(N13, H2, 0.0); @@ -1092,18 +1234,20 @@ void jac_nuc(const burn_t& state, 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_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; jac.set(N13, N13, scratch); jac.set(N13, N14, 0.0); jac.set(N13, N15, 0.0); - jac.set(N13, O14, 0.0); + scratch = screened_rates(k_O14_to_p_N13_derived); + jac.set(N13, O14, scratch); jac.set(N13, O15, 0.0); - jac.set(N13, O16, 0.0); + scratch = screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + jac.set(N13, O16, scratch); jac.set(N13, O17, 0.0); @@ -1118,7 +1262,7 @@ void jac_nuc(const burn_t& state, jac.set(N14, He3, 0.0); - scratch = -screened_rates(k_He4_N14_to_F18_reaclib)*Y(N14)*state.rho; + 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; jac.set(N14, He4, scratch); jac.set(N14, Be7, 0.0); @@ -1132,7 +1276,7 @@ void jac_nuc(const burn_t& state, 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_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; jac.set(N14, N14, scratch); jac.set(N14, N15, 0.0); @@ -1140,7 +1284,8 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_O14_to_N14_reaclib); jac.set(N14, O14, scratch); - jac.set(N14, O15, 0.0); + scratch = screened_rates(k_O15_to_p_N14_derived); + jac.set(N14, O15, scratch); jac.set(N14, O16, 0.0); @@ -1149,7 +1294,8 @@ void jac_nuc(const burn_t& state, jac.set(N14, F17, 0.0); - jac.set(N14, F18, 0.0); + scratch = screened_rates(k_F18_to_He4_N14_derived); + jac.set(N14, F18, scratch); 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; jac.set(N15, H1, scratch); @@ -1158,13 +1304,15 @@ void jac_nuc(const burn_t& state, jac.set(N15, He3, 0.0); - jac.set(N15, He4, 0.0); + scratch = screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*state.rho; + jac.set(N15, He4, scratch); jac.set(N15, Be7, 0.0); jac.set(N15, B8, 0.0); - jac.set(N15, C12, 0.0); + scratch = screened_rates(k_He4_C12_to_p_N15_derived)*Y(He4)*state.rho; + jac.set(N15, C12, scratch); jac.set(N15, C13, 0.0); @@ -1180,7 +1328,8 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_O15_to_N15_reaclib); jac.set(N15, O15, scratch); - jac.set(N15, O16, 0.0); + scratch = screened_rates(k_O16_to_p_N15_derived); + jac.set(N15, O16, scratch); jac.set(N15, O17, 0.0); @@ -1188,7 +1337,7 @@ 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_p_F17_to_He4_O14_derived)*Y(F17)*state.rho + screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*state.rho; jac.set(O14, H1, scratch); jac.set(O14, H2, 0.0); @@ -1213,7 +1362,7 @@ void jac_nuc(const burn_t& state, 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_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); jac.set(O14, O14, scratch); jac.set(O14, O15, 0.0); @@ -1222,7 +1371,8 @@ void jac_nuc(const burn_t& state, jac.set(O14, O17, 0.0); - jac.set(O14, F17, 0.0); + scratch = screened_rates(k_p_F17_to_He4_O14_derived)*Y(H1)*state.rho; + jac.set(O14, F17, scratch); jac.set(O14, F18, 0.0); @@ -1233,7 +1383,8 @@ void jac_nuc(const burn_t& state, jac.set(O15, He3, 0.0); - jac.set(O15, He4, 0.0); + scratch = -screened_rates(k_He4_O15_to_p_F18_derived)*Y(O15)*state.rho; + jac.set(O15, He4, scratch); jac.set(O15, Be7, 0.0); @@ -1252,7 +1403,7 @@ void jac_nuc(const burn_t& state, jac.set(O15, O14, 0.0); - scratch = -screened_rates(k_O15_to_N15_reaclib); + scratch = -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); jac.set(O15, O15, scratch); jac.set(O15, O16, 0.0); @@ -1264,7 +1415,7 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_p_F18_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_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; jac.set(O16, H1, scratch); jac.set(O16, H2, 0.0); @@ -1295,12 +1446,13 @@ void jac_nuc(const burn_t& state, jac.set(O16, O15, 0.0); - scratch = -screened_rates(k_p_O16_to_F17_reaclib)*Y(H1)*state.rho; + scratch = -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; jac.set(O16, O16, scratch); jac.set(O16, O17, 0.0); - jac.set(O16, F17, 0.0); + scratch = screened_rates(k_F17_to_p_O16_derived); + jac.set(O16, F17, scratch); jac.set(O16, F18, 0.0); @@ -1311,7 +1463,8 @@ void jac_nuc(const burn_t& state, jac.set(O17, He3, 0.0); - jac.set(O17, He4, 0.0); + scratch = screened_rates(k_He4_N14_to_p_O17_derived)*Y(N14)*state.rho; + jac.set(O17, He4, scratch); jac.set(O17, Be7, 0.0); @@ -1323,7 +1476,8 @@ void jac_nuc(const burn_t& state, jac.set(O17, N13, 0.0); - jac.set(O17, N14, 0.0); + scratch = screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*state.rho; + jac.set(O17, N14, scratch); jac.set(O17, N15, 0.0); @@ -1333,15 +1487,16 @@ 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_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; jac.set(O17, O17, scratch); - scratch = screened_rates(k_F17_to_O17_reaclib); + scratch = screened_rates(k_F17_to_O17_weaktab); jac.set(O17, F17, scratch); - jac.set(O17, F18, 0.0); + scratch = screened_rates(k_F18_to_p_O17_derived); + jac.set(O17, F18, scratch); - scratch = screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*state.rho; + scratch = -screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*state.rho + screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*state.rho; jac.set(F17, H1, scratch); jac.set(F17, H2, 0.0); @@ -1373,9 +1528,10 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_p_O16_to_F17_reaclib)*Y(H1)*state.rho; jac.set(F17, O16, scratch); - jac.set(F17, O17, 0.0); + scratch = screened_rates(k_O17_to_F17_weaktab); + jac.set(F17, O17, scratch); - scratch = -screened_rates(k_F17_to_O17_reaclib); + scratch = -screened_rates(k_F17_to_O17_weaktab) - screened_rates(k_F17_to_p_O16_derived) - screened_rates(k_p_F17_to_He4_O14_derived)*Y(H1)*state.rho; jac.set(F17, F17, scratch); jac.set(F17, F18, 0.0); @@ -1387,7 +1543,7 @@ void jac_nuc(const burn_t& state, jac.set(F18, He3, 0.0); - scratch = screened_rates(k_He4_N14_to_F18_reaclib)*Y(N14)*state.rho; + 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; jac.set(F18, He4, scratch); jac.set(F18, Be7, 0.0); @@ -1407,7 +1563,8 @@ void jac_nuc(const burn_t& state, jac.set(F18, O14, 0.0); - jac.set(F18, O15, 0.0); + scratch = screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*state.rho; + jac.set(F18, O15, scratch); jac.set(F18, O16, 0.0); @@ -1416,7 +1573,7 @@ void jac_nuc(const burn_t& state, 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_to_He4_N14_derived) - screened_rates(k_F18_to_p_O17_derived) - screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(H1)*state.rho; jac.set(F18, F18, scratch); diff --git a/networks/nova/derived_rates.H b/networks/nova/derived_rates.H index 579d7dd3dc..ad37fc3fb3 100644 --- a/networks/nova/derived_rates.H +++ b/networks/nova/derived_rates.H @@ -9,6 +9,2061 @@ using namespace Rates; +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_He3_to_p_d_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // He3 --> p + d + + rate = 0.0; + drate_dT = 0.0; + + // Evaluate partition function terms + + amrex::Real He3_log_pf, dHe3_log_pf_dT9; + + // setting He3 log(partition function) to 0.0 by default, independent of T + He3_log_pf = 0.0_rt; + dHe3_log_pf_dT9 = 0.0_rt; + + amrex::Real p_log_pf, dp_log_pf_dT9; + + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; + + amrex::Real d_log_pf, dd_log_pf_dT9; + + // setting d log(partition function) to 0.0 by default, independent of T + d_log_pf = 0.0_rt; + dd_log_pf_dT9 = 0.0_rt; + + amrex::Real net_log_pf = p_log_pf + d_log_pf - He3_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dd_log_pf_dT9 - dHe3_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 de04 + ln_set_rate = 32.462003866933586 + -63.74913110454079 * tfactors.T9i + -3.7208 * tfactors.T913i + 0.198654 * tfactors.T913 + + 1.833333 * tfactors.lnT9; + + ln_set_rate += net_log_pf; + + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 63.74913110454079 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.7208 * tfactors.T943i + (1.0/3.0) * 0.198654 * tfactors.T923i + + 1.833333 * tfactors.T9i; + + dln_set_rate_dT9 += net_dlog_pf_dT9; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } + + // ReacLib set derived from de04n + ln_set_rate = 31.055733866933583 + -63.74913110454079 * tfactors.T9i + -3.7208 * tfactors.T913i + 0.871782 * tfactors.T913 + + 0.833333 * tfactors.lnT9; + + ln_set_rate += net_log_pf; + + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 63.74913110454079 * 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 += net_dlog_pf_dT9; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_He4_to_d_d_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // He4 --> d + d + + rate = 0.0; + drate_dT = 0.0; + + // Evaluate partition function terms + + amrex::Real He4_log_pf, dHe4_log_pf_dT9; + + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; + + amrex::Real d_log_pf, dd_log_pf_dT9; + + // setting d log(partition function) to 0.0 by default, independent of T + d_log_pf = 0.0_rt; + dd_log_pf_dT9 = 0.0_rt; + + amrex::Real net_log_pf = d_log_pf + d_log_pf - He4_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dd_log_pf_dT9 + dd_log_pf_dT9 - dHe4_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 nacrn + ln_set_rate = 28.331961272809913 + -276.72748859272605 * 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 += net_log_pf; + + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 276.72748859272605 * 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 += net_dlog_pf_dT9; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_Be7_to_He4_He3_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // Be7 --> He4 + He3 + + rate = 0.0; + drate_dT = 0.0; + + // Evaluate partition function terms + + amrex::Real He3_log_pf, dHe3_log_pf_dT9; + + // setting He3 log(partition function) to 0.0 by default, independent of T + He3_log_pf = 0.0_rt; + dHe3_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 Be7_log_pf, dBe7_log_pf_dT9; + + // setting Be7 log(partition function) to 0.0 by default, independent of T + Be7_log_pf = 0.0_rt; + dBe7_log_pf_dT9 = 0.0_rt; + + amrex::Real net_log_pf = He4_log_pf + He3_log_pf - Be7_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dHe3_log_pf_dT9 - dBe7_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 cd08n + ln_set_rate = 40.84436725519251 + -18.41793396772273 * 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 += net_log_pf; + + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 18.41793396772273 * 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 += net_dlog_pf_dT9; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } + + // ReacLib set derived from cd08n + ln_set_rate = 38.74676725519251 + -18.41793396772273 * 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 += net_log_pf; + + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 18.41793396772273 * 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 += net_dlog_pf_dT9; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_B8_to_p_Be7_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // B8 --> p + Be7 + + 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 Be7_log_pf, dBe7_log_pf_dT9; + + // setting Be7 log(partition function) to 0.0 by default, independent of T + Be7_log_pf = 0.0_rt; + dBe7_log_pf_dT9 = 0.0_rt; + + amrex::Real B8_log_pf, dB8_log_pf_dT9; + + // setting B8 log(partition function) to 0.0 by default, independent of T + B8_log_pf = 0.0_rt; + dB8_log_pf_dT9 = 0.0_rt; + + amrex::Real net_log_pf = p_log_pf + Be7_log_pf - B8_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dBe7_log_pf_dT9 - dB8_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 nacrr + ln_set_rate = 31.03415329791634 + -8.927520483432566 * tfactors.T9i; + + ln_set_rate += net_log_pf; + + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 8.927520483432566 * tfactors.T9i * tfactors.T9i; + + dln_set_rate_dT9 += net_dlog_pf_dT9; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } + + // ReacLib set derived from nacrn + ln_set_rate = 35.83166329791634 + -1.5825204834325672 * 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 += net_log_pf; + + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 1.5825204834325672 * 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 += net_dlog_pf_dT9; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_N13_to_p_C12_derived(const tf_t& tfactors, 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 + + rate = 0.0; + drate_dT = 0.0; + + // Evaluate partition function terms + + 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; + + amrex::Real p_log_pf, dp_log_pf_dT9; + + // setting p log(partition 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; + + // 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 ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // 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; + + ln_set_rate += net_log_pf; + + 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; + + dln_set_rate_dT9 += net_dlog_pf_dT9; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } + + // 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + 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 rate_N14_to_p_C13_derived(const tf_t& tfactors, 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 + + 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 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; + + 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; + + 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}; + + // 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; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += 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; + + ln_set_rate += net_log_pf; + + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 101.17495170634825 * tfactors.T9i * tfactors.T9i; + + dln_set_rate_dT9 += net_dlog_pf_dT9; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_O14_to_p_N13_derived(const tf_t& tfactors, 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 + + rate = 0.0; + drate_dT = 0.0; + + // Evaluate partition function terms + + 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); + + amrex::Real p_log_pf, dp_log_pf_dT9; + + // setting p log(partition 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; + + // 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 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + 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 rate_O15_to_p_N14_derived(const tf_t& tfactors, 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 + + 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 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; + + // 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 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += 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; + + ln_set_rate += net_log_pf; + + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 87.67370699689953 * tfactors.T9i * tfactors.T9i; + + dln_set_rate_dT9 += net_dlog_pf_dT9; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } + + // 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; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + 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 rate_O16_to_p_N15_derived(const tf_t& tfactors, 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 + + rate = 0.0; + drate_dT = 0.0; + + // Evaluate partition function terms + + 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; + + amrex::Real p_log_pf, dp_log_pf_dT9; + + // setting p log(partition 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; + + // 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 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += 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; + + ln_set_rate += net_log_pf; + + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 143.65591378057286 * tfactors.T9i * tfactors.T9i; + + dln_set_rate_dT9 += net_dlog_pf_dT9; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } + + // 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; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + 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 rate_O16_to_He4_C12_derived(const tf_t& tfactors, 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 + + rate = 0.0; + drate_dT = 0.0; + + // Evaluate partition function terms + + 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; + + amrex::Real He4_log_pf, dHe4_log_pf_dT9; + + // setting He4 log(partition 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; + + // 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 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + 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 rate_F17_to_p_O16_derived(const tf_t& tfactors, 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 + + 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 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; + + // 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 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + 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 rate_F18_to_p_O17_derived(const tf_t& tfactors, 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 + + 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 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; + + // 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 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (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; + + ln_set_rate += net_log_pf; + + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 65.81406921275192 * tfactors.T9i * tfactors.T9i; + + dln_set_rate_dT9 += net_dlog_pf_dT9; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } + + // 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; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + 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 rate_F18_to_He4_N14_derived(const tf_t& tfactors, 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 + + rate = 0.0; + drate_dT = 0.0; + + // Evaluate partition function terms + + amrex::Real He4_log_pf, dHe4_log_pf_dT9; + + // setting He4 log(partition 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; + + // 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; + + // 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 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (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; + + ln_set_rate += net_log_pf; + + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 56.396987529872604 * tfactors.T9i * tfactors.T9i; + + dln_set_rate_dT9 += net_dlog_pf_dT9; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } + + // 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; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + 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 rate_C12_to_He4_He4_He4_derived(const tf_t& tfactors, 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 + + rate = 0.0; + drate_dT = 0.0; + + // Evaluate partition function terms + + 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; + + amrex::Real He4_log_pf, dHe4_log_pf_dT9; + + // setting He4 log(partition 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 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + 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 rate_p_He4_to_d_He3_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // p + He4 --> d + He3 + + rate = 0.0; + drate_dT = 0.0; + + // Evaluate partition function terms + + amrex::Real He3_log_pf, dHe3_log_pf_dT9; + + // setting He3 log(partition function) to 0.0 by default, independent of T + He3_log_pf = 0.0_rt; + dHe3_log_pf_dT9 = 0.0_rt; + + amrex::Real p_log_pf, dp_log_pf_dT9; + + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; + + amrex::Real d_log_pf, dd_log_pf_dT9; + + // setting d log(partition function) to 0.0 by default, independent of T + d_log_pf = 0.0_rt; + dd_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 net_log_pf = d_log_pf + He3_log_pf - p_log_pf - He4_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dd_log_pf_dT9 + dHe3_log_pf_dT9 - dp_log_pf_dT9 - dHe4_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 de04 + ln_set_rate = 43.013484586436284 + -212.97835748819008 * 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 += net_log_pf; + + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 212.97835748819008 * 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 += net_dlog_pf_dT9; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } + + // ReacLib set derived from de04 + ln_set_rate = 26.40048458643628 + -212.97835748819008 * 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 += net_log_pf; + + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 212.97835748819008 * 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 += net_dlog_pf_dT9; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_He4_C12_to_p_N15_derived(const tf_t& tfactors, 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 + + rate = 0.0; + drate_dT = 0.0; + + // Evaluate partition function terms + + 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; + + amrex::Real p_log_pf, dp_log_pf_dT9; + + // setting p log(partition 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 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; + + 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}; + + // 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; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + 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 rate_He4_N14_to_p_O17_derived(const tf_t& tfactors, 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 + + 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 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; + + // 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 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + 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 rate_He4_O15_to_p_F18_derived(const tf_t& tfactors, 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 + + rate = 0.0; + drate_dT = 0.0; + + // Evaluate partition function terms + + 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); + + amrex::Real p_log_pf, dp_log_pf_dT9; + + // setting p log(partition 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; + + // 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; + + // setting He4 log(partition 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 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + 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 rate_p_O16_to_He4_N13_derived(const tf_t& tfactors, 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 + + 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 O16_log_pf, 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; + + // setting He4 log(partition 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; + + // 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 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + 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 rate_p_F17_to_He4_O14_derived(const tf_t& tfactors, 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 + + 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 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; + + // setting He4 log(partition 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; + + // 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 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += 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; + + ln_set_rate += net_log_pf; + + 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; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + 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 rate_p_p_He4_to_He3_He3_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // p + p + He4 --> He3 + He3 + + rate = 0.0; + drate_dT = 0.0; + + // Evaluate partition function terms + + amrex::Real He3_log_pf, dHe3_log_pf_dT9; + + // setting He3 log(partition function) to 0.0 by default, independent of T + He3_log_pf = 0.0_rt; + dHe3_log_pf_dT9 = 0.0_rt; + + amrex::Real p_log_pf, dp_log_pf_dT9; + + // setting p log(partition 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 net_log_pf = He3_log_pf + He3_log_pf - p_log_pf - p_log_pf - He4_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe3_log_pf_dT9 + dHe3_log_pf_dT9 - dp_log_pf_dT9 - dp_log_pf_dT9 - dHe4_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 nacrn + ln_set_rate = 2.968630719502702 + -149.22922638364452 * tfactors.T9i + -12.277 * tfactors.T913i + -0.103699 * tfactors.T913 + + -0.0649967 * tfactors.T9 + 0.0168191 * tfactors.T953 + -2.166667 * tfactors.lnT9; + + ln_set_rate += net_log_pf; + + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 149.22922638364452 * 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.166667 * tfactors.T9i; + + dln_set_rate_dT9 += net_dlog_pf_dT9; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_p_He4_He4_to_d_Be7_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // p + He4 + He4 --> d + Be7 + + 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 d_log_pf, dd_log_pf_dT9; + + // setting d log(partition function) to 0.0 by default, independent of T + d_log_pf = 0.0_rt; + dd_log_pf_dT9 = 0.0_rt; + + amrex::Real Be7_log_pf, dBe7_log_pf_dT9; + + // setting Be7 log(partition function) to 0.0 by default, independent of T + Be7_log_pf = 0.0_rt; + dBe7_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 net_log_pf = d_log_pf + Be7_log_pf - p_log_pf - He4_log_pf - He4_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dd_log_pf_dT9 + dBe7_log_pf_dT9 - dp_log_pf_dT9 - dHe4_log_pf_dT9 - dHe4_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 cf88n + ln_set_rate = 6.9715645118037095 + -194.56042352046737 * tfactors.T9i + -12.428 * tfactors.T913i + + -2.166667 * tfactors.lnT9; + + ln_set_rate += net_log_pf; + + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 194.56042352046737 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -12.428 * tfactors.T943i + + -2.166667 * tfactors.T9i; + + dln_set_rate_dT9 += net_dlog_pf_dT9; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_p_p_He4_He4_to_He3_Be7_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + + // p + p + He4 + He4 --> He3 + Be7 + + rate = 0.0; + drate_dT = 0.0; + + // Evaluate partition function terms + + amrex::Real He3_log_pf, dHe3_log_pf_dT9; + + // setting He3 log(partition function) to 0.0 by default, independent of T + He3_log_pf = 0.0_rt; + dHe3_log_pf_dT9 = 0.0_rt; + + amrex::Real p_log_pf, dp_log_pf_dT9; + + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; + + amrex::Real Be7_log_pf, dBe7_log_pf_dT9; + + // setting Be7 log(partition function) to 0.0 by default, independent of T + Be7_log_pf = 0.0_rt; + dBe7_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 net_log_pf = He3_log_pf + Be7_log_pf - p_log_pf - p_log_pf - He4_log_pf - He4_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe3_log_pf_dT9 + dBe7_log_pf_dT9 - dp_log_pf_dT9 - dp_log_pf_dT9 - dHe4_log_pf_dT9 - dHe4_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 mafon + ln_set_rate = -11.817242174569923 + -130.81129241593683 * tfactors.T9i + -21.793 * tfactors.T913i + -1.98126e-09 * tfactors.T913 + + 1.84204e-10 * tfactors.T9 + -1.46403e-11 * tfactors.T953 + -3.666667 * tfactors.lnT9; + + ln_set_rate += net_log_pf; + + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 130.81129241593683 * 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.666667 * tfactors.T9i; + + dln_set_rate_dT9 += net_dlog_pf_dT9; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } + +} + template AMREX_GPU_HOST_DEVICE AMREX_INLINE @@ -22,6 +2077,148 @@ fill_derived_rates(const tf_t& tfactors, T& rate_eval) [[maybe_unused]] amrex::Real rate; [[maybe_unused]] amrex::Real drate_dT; + part_fun::pf_cache_t pf_cache{}; + + pf_cache.index_temp_array_1 = interp_net::find_index(tfactors.T9, part_fun::temp_array_1); + + rate_He3_to_p_d_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_He3_to_p_d_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He3_to_p_d_derived) = drate_dT; + + } + rate_He4_to_d_d_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_He4_to_d_d_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_to_d_d_derived) = drate_dT; + + } + rate_Be7_to_He4_He3_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Be7_to_He4_He3_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Be7_to_He4_He3_derived) = drate_dT; + + } + rate_B8_to_p_Be7_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_B8_to_p_Be7_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_B8_to_p_Be7_derived) = drate_dT; + + } + rate_N13_to_p_C12_derived(tfactors, 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; + + } + rate_N14_to_p_C13_derived(tfactors, 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; + + } + rate_O14_to_p_N13_derived(tfactors, 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; + + } + rate_O15_to_p_N14_derived(tfactors, 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; + + } + rate_O16_to_p_N15_derived(tfactors, 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; + + } + rate_O16_to_He4_C12_derived(tfactors, 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; + + } + rate_F17_to_p_O16_derived(tfactors, 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; + + } + rate_F18_to_p_O17_derived(tfactors, 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; + + } + rate_F18_to_He4_N14_derived(tfactors, 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; + + } + rate_C12_to_He4_He4_He4_derived(tfactors, 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; + + } + rate_p_He4_to_d_He3_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_p_He4_to_d_He3_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_He4_to_d_He3_derived) = drate_dT; + + } + rate_He4_C12_to_p_N15_derived(tfactors, 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_He4_N14_to_p_O17_derived(tfactors, 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_He4_O15_to_p_F18_derived(tfactors, 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_p_O16_to_He4_N13_derived(tfactors, 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_p_F17_to_He4_O14_derived(tfactors, 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_p_p_He4_to_He3_He3_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_p_p_He4_to_He3_He3_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_p_He4_to_He3_He3_derived) = drate_dT; + + } + rate_p_He4_He4_to_d_Be7_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_p_He4_He4_to_d_Be7_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_He4_He4_to_d_Be7_derived) = drate_dT; + + } + rate_p_p_He4_He4_to_He3_Be7_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_p_p_He4_He4_to_He3_Be7_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_p_He4_He4_to_He3_Be7_derived) = drate_dT; + + } } #endif diff --git a/networks/nova/nova.png b/networks/nova/nova.png index 5963b45df6a1dc5f588773359cee929e5e3da0aa..83478b9dfc6b70cda74aa9fff9f5effe496d764e 100644 GIT binary patch literal 38721 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 NYwT0cR6FGVe*uTz{+<8; literal 58342 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∾a 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 o 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 diff --git a/networks/nova/nova.py b/networks/nova/nova.py index 8acf876f97..91ef46f1c7 100644 --- a/networks/nova/nova.py +++ b/networks/nova/nova.py @@ -1,18 +1,16 @@ import pynucastro as pyna -from pynucastro.networks import AmrexAstroCxxNetwork def create_network(): - mylibrary = pyna.rates.ReacLibLibrary() - all_nuclei = ["p", "h2", "he3", "he4", "be7", "b8", "c12", "c13", "n13", "n14", "n15", "o14", "o15", "o16", "o17", "f17", "f18"] - nova_library = mylibrary.linking_nuclei(all_nuclei, with_reverse=False) + net = pyna.network_helper(all_nuclei, + tabular_ordering=["ffn", "langanke", "oda"], + network_type="amrex") - net = AmrexAstroCxxNetwork(libraries=[nova_library]) return net @@ -31,9 +29,10 @@ def create_network(): edge_labels = {(pyna.Nucleus("he4"), pyna.Nucleus("c12")): r"$\alpha(\alpha\alpha,\gamma){}^{12}\mathrm{C}$"} - net.plot(rho, T, comp, - rotated=False, outfile="nova.png", + net.plot(rotated=False, outfile="nova.png", N_range=(-1, 10), Z_range=(0, 10), hide_xalpha=True, hide_xp=True, - curved_edges=True, edge_labels=edge_labels, + edge_labels=edge_labels, node_size=300, node_font_size=10) + + net.summary() diff --git a/networks/nova/partition_functions.H b/networks/nova/partition_functions.H index a261ab6483..68a41075a3 100644 --- a/networks/nova/partition_functions.H +++ b/networks/nova/partition_functions.H @@ -18,6 +18,173 @@ using namespace Species; namespace part_fun { + constexpr int npts_1 = 72; + + // this is T9 + + inline AMREX_GPU_MANAGED amrex::Array1D temp_array_1 = { + 0.01, 0.15, 0.2, 0.3, 0.4, + 0.5, 0.6, 0.7, 0.8, 0.9, + 1.0, 1.5, 2.0, 2.5, 3.0, + 3.5, 4.0, 4.5, 5.0, 6.0, + 7.0, 8.0, 9.0, 10.0, 12.0, + 14.0, 16.0, 18.0, 20.0, 22.0, + 24.0, 26.0, 28.0, 30.0, 35.0, + 40.0, 45.0, 50.0, 55.0, 60.0, + 65.0, 70.0, 75.0, 80.0, 85.0, + 90.0, 95.0, 100.0, 105.0, 110.0, + 115.0, 120.0, 125.0, 130.0, 135.0, + 140.0, 145.0, 150.0, 155.0, 160.0, + 165.0, 170.0, 175.0, 180.0, 190.0, + 200.0, 210.0, 220.0, 230.0, 240.0, + 250.0, 275.0, + }; + + + // O14 + + // this is log(partition function) + + inline AMREX_GPU_MANAGED amrex::Array1D O14_pf_array = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.04879016416943205, + 0.10436001532424286, 0.1823215567939546, 0.27763173659827955, 0.3852624007906449, 0.5007752879124892, + 0.6097655716208943, 0.712949807856125, 0.8153648132841944, 0.9082585601768908, 1.1085626195212777, + 1.269760544863939, 1.3937663759585917, 1.4906543764441336, 1.5644405465033646, 1.6193882432872684, + 1.6582280766035324, 1.6845453849209058, 1.6974487897568136, 1.7029282555214393, 1.6974487897568136, + 1.6845453849209058, 1.665818245870208, 1.6409365794934714, 1.6094379124341003, 1.5748464676644813, + 1.534714366238164, 1.4883995840570443, 1.4422019930581866, 1.3887912413184778, 1.33500106673234, + 1.2781522025001875, 1.2178757094949273, 1.1568811967920856, 1.091923300517313, 1.0260415958332743, + 0.9555114450274363, 0.8878912573524571, 0.8153648132841944, 0.7419373447293773, 0.5933268452777344, + 0.4382549309311553, 0.28517894223366247, 0.12221763272424911, -0.040821994520255166, -0.2045671657412744, + -0.3696154552144672, -0.7874578600311866, + }; + + constexpr amrex::Real O14_pf_threshold_T9 = 10.0; + + // O15 + + // this is log(partition function) + + inline AMREX_GPU_MANAGED amrex::Array1D O15_pf_array = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.04879016416943205, + 0.10436001532424286, 0.1906203596086497, 0.3148107398400336, 0.47000362924573563, 0.6418538861723947, + 0.8329091229351039, 1.0296194171811581, 1.2325602611778486, 1.43746264769429, 1.9572739077056285, + 2.4849066497880004, 3.0155349008501706, 3.55820113047182, 4.109233174715851, 4.672828834461906, + 5.241747015059643, 5.814130531825066, 6.391917113392602, 6.966024187106113, 7.549609165154532, + 8.125630988477065, 8.702842538302868, 9.277999020449997, 9.852194258148577, 10.42821608147111, + 11.00043178410354, 11.571194373094205, 12.144197241812087, 12.7098736543592, 13.279367126213993, + 13.845069360205818, 14.414347059052979, 14.975531474761027, 15.541842221869874, 16.105010411409665, + 16.666217059468007, 17.22995316637645, 17.793321303930423, 18.35560874720865, 19.47847103810022, + 20.602227508569356, 21.723897717254317, 22.846724264043022, 23.969756828847586, 25.09397871172002, + 26.22043406223961, 29.03956608598326, + }; + + constexpr amrex::Real O15_pf_threshold_T9 = 10.0; + + // O16 + + // this is log(partition function) + + inline AMREX_GPU_MANAGED amrex::Array1D O16_pf_array = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.02955880224154443, + 0.08617769624105241, 0.16551443847757333, 0.27763173659827955, 0.4252677354043441, 0.6043159668533296, + 0.7975071958841882, 1.007957920399979, 1.2296405510745139, 1.4609379041156563, 2.0681277817795625, + 2.70805020110221, 3.3775875160230218, 4.062165663857866, 4.7535901911063645, 5.4510384535657, + 6.142037405587356, 6.828712071641684, 7.512071245835466, 8.185907481482324, 8.85366542803745, + 9.517825071724143, 10.177324218165856, 10.831706855275558, 11.48246625748552, 12.128111104060462, + 12.774223335915433, 13.41652441595382, 14.054527458434775, 14.690979295318174, 15.324022551808413, + 15.956752500549557, 16.588099280204055, 17.216707939626428, 17.842646370492925, 18.469470908121796, + 19.09362521719479, 19.715407911546766, 20.337603356134426, 20.954377557909798, 22.19802884605391, + 23.43796058076729, 24.670655986211848, 25.905049387238495, 27.136724794113768, 28.368185181905268, + 29.602320498988682, 32.68726692127686, + }; + + constexpr amrex::Real O16_pf_threshold_T9 = 10.0; + + // O17 + + // this is log(partition function) + + inline AMREX_GPU_MANAGED amrex::Array1D O17_pf_array = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.009950330853168092, 0.009950330853168092, + 0.01980262729617973, 0.02955880224154443, 0.03922071315328133, 0.03922071315328133, 0.058268908123975824, + 0.0769610411361284, 0.09531017980432493, 0.12221763272424911, 0.13976194237515863, 0.2151113796169455, + 0.30010459245033816, 0.4054651081081644, 0.5364933705145685, 0.6830968447064438, 0.8458682675776092, + 1.0260415958332743, 1.2178757094949273, 1.4182774069729414, 1.631199404215613, 2.1972245773362196, + 2.803360380906535, 3.4339872044851463, 4.07753744390572, 4.727387818712341, 5.3706380281276624, + 6.018593214496234, 6.660575149839686, 7.299797366758161, 7.937374696163295, 8.573573524852344, + 9.20833836930551, 9.84161214881804, 10.474467099121865, 11.107960231903714, 11.744037185933616, + 12.375815420117268, 13.008074231002201, 13.641157170819497, 14.27293540500315, 14.907433858481587, + 15.541842221869874, 16.176364559082295, 16.811242831518264, 17.445170652418238, 18.081003376382203, + 18.713350357915186, 19.35284482498281, 19.98721115537519, 20.6234455016642, 21.895747974180978, + 23.17427093505873, 24.448959264183063, 25.72721214289187, 27.01298140785541, 28.298850488504204, + 29.585466167433697, 32.8184069217693, + }; + + constexpr amrex::Real O17_pf_threshold_T9 = 2.0; + + // F17 + + // this is log(partition function) + + inline AMREX_GPU_MANAGED amrex::Array1D F17_pf_array = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.009950330853168092, 0.01980262729617973, 0.02955880224154443, 0.04879016416943205, + 0.058268908123975824, 0.0769610411361284, 0.08617769624105241, 0.09531017980432493, 0.12221763272424911, + 0.13976194237515863, 0.1570037488096647, 0.17395330712343798, 0.19885085874516517, 0.26236426446749106, + 0.3293037471426003, 0.41871033485818504, 0.5247285289349821, 0.6471032420585384, 0.7884573603642703, + 0.9400072584914712, 1.1019400787607843, 1.2781522025001875, 1.4678743481123135, 1.9810014688665833, + 2.5416019934645457, 3.1441522786722644, 3.7612001156935624, 4.388257184424518, 5.0238805208462765, + 5.655991810819852, 6.2878585601617845, 6.917705609835305, 7.549609165154532, 8.183118079394745, + 8.814330422638774, 9.441452092939569, 10.077440859659566, 10.707728780601661, 11.33857207782545, + 11.970350312009105, 12.601487417784837, 13.233904752137237, 13.864300722133706, 14.498607402670718, + 15.131918791619999, 15.765697263786848, 16.3957273875566, 17.034386382832476, 17.667783558986645, + 18.301897207962398, 18.939474537367534, 19.571252771551187, 20.207427671356875, 21.479387816667746, + 22.755353682242777, 24.033808850340435, 25.311289864099532, 26.592562750080187, 27.877881193860073, + 29.165735482166713, 32.393195050726305, + }; + + constexpr amrex::Real F17_pf_threshold_T9 = 1.0; + + // F18 + + // this is log(partition function) + + inline AMREX_GPU_MANAGED amrex::Array1D F18_pf_array = { + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.01980262729617973, 0.058268908123975824, 0.11332868530700327, + 0.19885085874516517, 0.28517894223366247, 0.3852624007906449, 0.4762341789963717, 0.6523251860396901, + 0.8064758658669485, 0.9360933591703348, 1.0438040521731147, 1.1378330018213911, 1.5303947050936475, + 1.742219023667919, 1.9387416595767009, 2.125847914493992, 2.312535423847214, 2.4932054526026954, + 2.681021528714291, 2.8791984572980396, 3.0819099697950434, 3.292126286607793, 3.856510295497887, + 4.468204330914934, 5.111987788356544, 5.768320995793772, 6.431331081933479, 7.098375638590786, + 7.757906208351747, 8.420682291035394, 9.080231686629162, 9.740968623038354, 10.395130356885344, + 11.052476048529304, 11.711776323715394, 12.367340793126296, 13.025852477023484, 13.68426227135432, + 14.346138809026444, 15.003353980360327, 15.665538935316304, 16.325109820342647, 16.98938901690174, + 17.654962870557586, 18.319754825362406, 18.985994553002424, 19.650321295026878, 20.316800228504665, + 20.985630101413904, 21.65148513968584, 22.32265341352701, 22.991259485170836, 24.334183749590636, + 25.679092894547672, 27.02771463936839, 28.377709063416525, 29.735155270198756, 31.093627125719348, + 32.45933485323085, 35.88424876151032, + }; + + constexpr amrex::Real F18_pf_threshold_T9 = 1.5; + // interpolation routine @@ -66,6 +233,8 @@ namespace part_fun { // Store the coefficient and derivative adjacent in memory, as they're // always accessed at the same time. amrex::Array2D data; + int index_temp_array_1{-1}; + AMREX_GPU_HOST_DEVICE AMREX_INLINE pf_cache_t() { // The entries will be default-initialized to -900, @@ -95,6 +264,42 @@ void get_partition_function(const int inuc, switch (inuc) { + case O14: + if (T9 > part_fun::O14_pf_threshold_T9) { + part_fun::interpolate_pf(T9, pf_cache.index_temp_array_1, part_fun::temp_array_1, part_fun::O14_pf_array, logpf, dlogpf_dT9); + } + break; + + case O15: + if (T9 > part_fun::O15_pf_threshold_T9) { + part_fun::interpolate_pf(T9, pf_cache.index_temp_array_1, part_fun::temp_array_1, part_fun::O15_pf_array, logpf, dlogpf_dT9); + } + break; + + case O16: + if (T9 > part_fun::O16_pf_threshold_T9) { + part_fun::interpolate_pf(T9, pf_cache.index_temp_array_1, part_fun::temp_array_1, part_fun::O16_pf_array, logpf, dlogpf_dT9); + } + break; + + case O17: + if (T9 > part_fun::O17_pf_threshold_T9) { + part_fun::interpolate_pf(T9, pf_cache.index_temp_array_1, part_fun::temp_array_1, part_fun::O17_pf_array, logpf, dlogpf_dT9); + } + break; + + case F17: + if (T9 > part_fun::F17_pf_threshold_T9) { + part_fun::interpolate_pf(T9, pf_cache.index_temp_array_1, part_fun::temp_array_1, part_fun::F17_pf_array, logpf, dlogpf_dT9); + } + break; + + case F18: + if (T9 > part_fun::F18_pf_threshold_T9) { + part_fun::interpolate_pf(T9, pf_cache.index_temp_array_1, part_fun::temp_array_1, part_fun::F18_pf_array, logpf, dlogpf_dT9); + } + break; + default: diff --git a/networks/nova/pynucastro-info.txt b/networks/nova/pynucastro-info.txt index e055581de4..ddc63d0654 100644 --- a/networks/nova/pynucastro-info.txt +++ b/networks/nova/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 2.9.0-28-gbcc09d414 +pynucastro version: 2.9.0-44-g77ed73b73 diff --git a/networks/nova/reaclib_rates.H b/networks/nova/reaclib_rates.H index cc9d868852..c4d04b26eb 100644 --- a/networks/nova/reaclib_rates.H +++ b/networks/nova/reaclib_rates.H @@ -115,37 +115,6 @@ void rate_O15_to_N15_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::Rea } -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_F17_to_O17_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // F17 --> O17 - - rate = 0.0; - drate_dT = 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); - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } - -} - template AMREX_GPU_HOST_DEVICE AMREX_INLINE void rate_B8_to_He4_He4_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { @@ -179,7 +148,7 @@ void rate_B8_to_He4_He4_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex:: template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_p_to_d_reaclib_bet_pos(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +void rate_p_p_to_d_reaclib_beta_pos(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { // p + p --> d @@ -1598,12 +1567,6 @@ fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_O15_to_N15_reaclib) = drate_dT; - } - rate_F17_to_O17_reaclib(tfactors, 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; - } rate_B8_to_He4_He4_reaclib(tfactors, rate, drate_dT); rate_eval.screened_rates(k_B8_to_He4_He4_reaclib) = rate; @@ -1611,10 +1574,10 @@ fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) rate_eval.dscreened_rates_dT(k_B8_to_He4_He4_reaclib) = drate_dT; } - rate_p_p_to_d_reaclib_bet_pos(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_p_to_d_reaclib_bet_pos) = rate; + rate_p_p_to_d_reaclib_beta_pos(tfactors, 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_bet_pos) = drate_dT; + rate_eval.dscreened_rates_dT(k_p_p_to_d_reaclib_beta_pos) = drate_dT; } rate_p_p_to_d_reaclib_electron_capture(tfactors, rate, drate_dT); diff --git a/networks/nova/table_rates.H b/networks/nova/table_rates.H index 6d3fff3c96..db2bd4b037 100644 --- a/networks/nova/table_rates.H +++ b/networks/nova/table_rates.H @@ -21,7 +21,7 @@ using namespace amrex::literals; // Log(g/cm^3) Log(K) erg erg erg Log(1/s) Log(erg/s) Log(erg/s) // -const int num_tables = 0; +const int num_tables = 2; enum TableVars : std::uint8_t { @@ -54,6 +54,90 @@ constexpr int add_vars = 1; // 1 Additional Var in entries namespace rate_tables { + // F17 --> O17 + inline AMREX_GPU_MANAGED table_t j_F17_O17_meta{.ntemp=12, .nrhoy=11, .nvars=3, .nheader=5}; + inline AMREX_GPU_MANAGED amrex::Array1D j_F17_O17_rhoy{1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0}; + inline AMREX_GPU_MANAGED amrex::Array1D j_F17_O17_temp{7.0, 8.0, 8.30103, 8.60206, 8.845098, 9.0, 9.176091, 9.30103, 9.477121, 9.69897, 10.0, 10.477121}; + // Array3D is column-major (Fortran-ordering). T varies fastest, then rho Ye, then the component + inline AMREX_GPU_MANAGED amrex::Array3D + j_F17_O17_data{ +-1.98599, -1.985996, -1.985997, -1.985998, -1.985991, -1.985811, -1.984179, -1.977601, -1.918501, -1.559899, -0.462121, 1.718247, // RATE +-1.985903, -1.985964, -1.985971, -1.985976, -1.985976, -1.985801, -1.984173, -1.977571, -1.918501, -1.559899, -0.462121, 1.718247, +-1.985273, -1.985641, -1.985715, -1.985762, -1.985784, -1.985681, -1.984074, -1.977479, -1.918324, -1.559899, -0.462121, 1.718247, +-1.982066, -1.982755, -1.98325, -1.983647, -1.983854, -1.983902, -1.982956, -1.976495, -1.917434, -1.559232, -0.462121, 1.718247, +-1.962293, -1.962505, -1.963077, -1.964279, -1.965373, -1.965787, -1.96628, -1.962645, -1.906863, -1.553549, -0.461157, 1.718247, +-1.822514, -1.822514, -1.822514, -1.821886, -1.820939, -1.819671, -1.816492, -1.812226, -1.783616, -1.497551, -0.452441, 1.719242, +-1.201147, -1.201147, -1.200311, -1.199474, -1.196963, -1.193611, -1.183682, -1.172312, -1.140726, -1.040908, -0.370812, 1.722232, +-0.075628, -0.075628, -0.075628, -0.075628, -0.073653, -0.071677, -0.06675, -0.060857, -0.041154, 0.012185, 0.215715, 1.752107, +1.273239, 1.273239, 1.273239, 1.273239, 1.273239, 1.274239, 1.276237, 1.280233, 1.289225, 1.314208, 1.405246, 2.033211, +2.796007, 2.796007, 2.796007, 2.796007, 2.796007, 2.796007, 2.797007, 2.799007, 2.802007, 2.812007, 2.843009, 3.076122, +4.404, 4.404, 4.404, 4.404, 4.404, 4.404, 4.404, 4.405, 4.406, 4.408, 4.416, 4.486005, +-7.78129, -7.78129, -7.78129, -7.78129, -7.78129, -7.78129, -7.77529, -7.74729, -7.56429, -6.87729, -5.49729, -2.92229, // NU +-7.78129, -7.78129, -7.78129, -7.78129, -7.78129, -7.78129, -7.77529, -7.74729, -7.56429, -6.87729, -5.49729, -2.92229, +-7.77929, -7.78029, -7.78029, -7.78029, -7.78029, -7.78029, -7.77429, -7.74729, -7.56329, -6.87729, -5.49729, -2.92229, +-7.77029, -7.77229, -7.77329, -7.77429, -7.77529, -7.77529, -7.77129, -7.74429, -7.56129, -6.87629, -5.49729, -2.92229, +-7.71829, -7.71829, -7.71929, -7.72229, -7.72429, -7.72429, -7.72329, -7.70629, -7.53729, -6.86929, -5.49629, -2.92229, +-7.41529, -7.41529, -7.41429, -7.41329, -7.40829, -7.40229, -7.38929, -7.37129, -7.29229, -6.79729, -5.48829, -2.92129, +-6.53729, -6.53629, -6.53629, -6.53429, -6.53029, -6.52229, -6.50629, -6.48329, -6.42629, -6.25829, -5.40329, -2.91829, +-5.25129, -5.25129, -5.25129, -5.25029, -5.24829, -5.24529, -5.23729, -5.22629, -5.19729, -5.11129, -4.79429, -2.88729, +-3.71829, -3.71829, -3.71829, -3.71829, -3.71729, -3.71629, -3.71329, -3.70929, -3.69629, -3.66029, -3.51729, -2.60029, +-1.96929, -1.96929, -1.96929, -1.96929, -1.96929, -1.96829, -1.96729, -1.96529, -1.95929, -1.94629, -1.89529, -1.50629, +-0.07329, -0.07329, -0.07329, -0.07329, -0.07329, -0.07329, -0.07329, -0.07229, -0.07029, -0.06629, -0.05229, 0.07271, +-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, // GAMMA +-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, +-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, +-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, +-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, +-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, +-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, +-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, +-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, +-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, +-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, + }; + + // O17 --> F17 + inline AMREX_GPU_MANAGED table_t j_O17_F17_meta{.ntemp=12, .nrhoy=11, .nvars=3, .nheader=5}; + inline AMREX_GPU_MANAGED amrex::Array1D j_O17_F17_rhoy{1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0}; + inline AMREX_GPU_MANAGED amrex::Array1D j_O17_F17_temp{7.0, 8.0, 8.30103, 8.60206, 8.845098, 9.0, 9.176091, 9.30103, 9.477121, 9.69897, 10.0, 10.477121}; + // Array3D is column-major (Fortran-ordering). T varies fastest, then rho Ye, then the component + inline AMREX_GPU_MANAGED amrex::Array3D + j_O17_F17_data{ +-99.69897, -99.69897, -72.639, -36.441, -21.007, -15.597, -11.237, -8.922, -6.409967, -4.069196, -1.723001, 1.202117, // RATE +-99.69897, -99.69897, -73.639, -37.441, -21.42, -15.619, -11.238, -8.923, -6.409967, -4.069196, -1.723001, 1.202117, +-99.69897, -99.69897, -74.645, -38.443, -22.368, -15.825, -11.253, -8.926, -6.409967, -4.069196, -1.723001, 1.202117, +-99.69897, -99.69897, -75.7, -39.46, -23.374, -16.647, -11.395, -8.957, -6.415967, -4.070194, -1.723997, 1.202117, +-99.69897, -99.69897, -77.203, -40.631, -24.441, -17.678, -12.128, -9.246, -6.468963, -4.078179, -1.723997, 1.202117, +-99.69897, -99.69897, -81.385, -42.905, -25.991, -18.982, -13.265, -10.212996, -6.911898, -4.161015, -1.732959, 1.202117, +-99.69897, -99.69897, -93.93, -49.222, -29.674, -21.645, -15.175994, -11.777875, -8.12459, -4.770369, -1.82157, 1.199117, +-99.69897, -99.69897, -99.69897, -64.67, -38.52992, -27.872783, -19.361149, -14.944239, -10.306988, -6.238059, -2.468687, 1.168123, +-99.69897, -99.69897, -99.69897, -98.710944, -57.848526, -41.325098, -28.297405, -21.662021, -14.845418, -9.070587, -4.075741, 0.87518, +-99.69897, -99.69897, -99.69897, -99.69897, -99.69897, -71.263098, -48.267405, -36.650021, -24.85878, -15.119379, -7.19457, -0.32867, +-99.69897, -99.69897, -99.69897, -99.69897, -99.69897, -99.69897, -91.333914, -68.95548, -46.405418, -28.066379, -13.71257, -2.65565, +-105.79529, -105.79529, -79.71329, -43.20829, -27.52229, -21.94929, -17.40029, -14.94929, -12.24129, -9.65029, -6.95829, -3.50429, // NU +-105.79529, -105.79529, -80.71429, -44.20829, -27.93529, -21.97129, -17.40229, -14.95029, -12.24129, -9.65029, -6.95829, -3.50429, +-105.79529, -105.79529, -81.71929, -45.21029, -28.88429, -22.17729, -17.41629, -14.95329, -12.24229, -9.65029, -6.95829, -3.50429, +-105.79529, -105.79529, -82.77429, -46.22829, -29.89029, -22.99929, -17.55829, -14.98429, -12.24729, -9.65029, -6.95829, -3.50429, +-105.79529, -105.79529, -84.27729, -47.39929, -30.95629, -24.03029, -18.29129, -15.27329, -12.30129, -9.65929, -6.95929, -3.50429, +-105.79529, -105.79529, -88.46029, -49.67329, -32.50629, -25.33429, -19.42829, -16.23929, -12.74329, -9.74129, -6.96829, -3.50429, +-105.79529, -105.79529, -101.00429, -55.98929, -36.19029, -27.99729, -21.33929, -17.80529, -13.95529, -10.35029, -7.05629, -3.50729, +-105.79529, -105.79529, -105.79529, -71.43729, -45.04529, -34.22129, -25.51129, -20.95629, -16.13629, -11.83029, -7.70729, -3.53929, +-105.79529, -105.79529, -105.79529, -105.71329, -64.38629, -47.70729, -34.50029, -27.73529, -20.72829, -14.69429, -9.32329, -3.83329, +-105.79529, -105.79529, -105.79529, -105.79529, -105.79529, -77.64529, -54.47029, -42.72329, -30.74129, -20.74329, -12.44229, -5.03929, +-105.79529, -105.79529, -105.79529, -105.79529, -105.79529, -105.79529, -97.53629, -75.02829, -52.28829, -33.69029, -18.96029, -7.36629, +-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, // GAMMA +-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, +-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, +-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, +-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, +-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, +-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, +-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, +-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, +-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, +-100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, + }; + }