From e6b94c7c7d846f4aae69a3b4e3bdcf847b8fb1ed Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Sat, 11 Jan 2025 16:04:27 -0500 Subject: [PATCH 1/2] move CNO_He_burn and clean-up this is now under he-burn and uses the he_burn_core.py script --- networks/CNO_He_burn | 1 + networks/CNO_He_burn/CNO_He_burn.png | Bin 114440 -> 0 bytes networks/CNO_He_burn/CNO_He_burn.py | 123 --- networks/CNO_He_burn/_parameters | 4 - .../cno-he-burn-33a}/Make.package | 0 networks/he-burn/cno-he-burn-33a/_parameters | 2 + .../cno-he-burn-33a}/actual_network.H | 0 .../cno-he-burn-33a}/actual_network_data.cpp | 0 .../cno-he-burn-33a}/actual_rhs.H | 867 ++++++------------ .../cno-he-burn-33a/cno_he_burn_33a.py | 52 ++ .../he-burn/cno-he-burn-33a/he_burn_core.py | 1 + .../cno-he-burn-33a}/inputs.burn_cell.VODE | 0 .../cno-he-burn-33a}/partition_functions.H | 0 .../partition_functions_data.cpp | 0 .../cno-he-burn-33a}/pynucastro.net | 0 .../cno-he-burn-33a}/reaclib_rates.H | 5 +- .../cno-he-burn-33a}/table_rates.H | 0 .../cno-he-burn-33a}/table_rates_data.cpp | 0 .../cno-he-burn-33a}/tfactors.H | 0 networks/he-burn/he_burn_core.py | 8 +- 20 files changed, 358 insertions(+), 705 deletions(-) create mode 120000 networks/CNO_He_burn delete mode 100644 networks/CNO_He_burn/CNO_He_burn.png delete mode 100644 networks/CNO_He_burn/CNO_He_burn.py delete mode 100644 networks/CNO_He_burn/_parameters rename networks/{CNO_He_burn => he-burn/cno-he-burn-33a}/Make.package (100%) create mode 100644 networks/he-burn/cno-he-burn-33a/_parameters rename networks/{CNO_He_burn => he-burn/cno-he-burn-33a}/actual_network.H (100%) rename networks/{CNO_He_burn => he-burn/cno-he-burn-33a}/actual_network_data.cpp (100%) rename networks/{CNO_He_burn => he-burn/cno-he-burn-33a}/actual_rhs.H (88%) create mode 100644 networks/he-burn/cno-he-burn-33a/cno_he_burn_33a.py create mode 120000 networks/he-burn/cno-he-burn-33a/he_burn_core.py rename networks/{CNO_He_burn => he-burn/cno-he-burn-33a}/inputs.burn_cell.VODE (100%) rename networks/{CNO_He_burn => he-burn/cno-he-burn-33a}/partition_functions.H (100%) rename networks/{CNO_He_burn => he-burn/cno-he-burn-33a}/partition_functions_data.cpp (100%) rename networks/{CNO_He_burn => he-burn/cno-he-burn-33a}/pynucastro.net (100%) rename networks/{CNO_He_burn => he-burn/cno-he-burn-33a}/reaclib_rates.H (99%) rename networks/{CNO_He_burn => he-burn/cno-he-burn-33a}/table_rates.H (100%) rename networks/{CNO_He_burn => he-burn/cno-he-burn-33a}/table_rates_data.cpp (100%) rename networks/{CNO_He_burn => he-burn/cno-he-burn-33a}/tfactors.H (100%) diff --git a/networks/CNO_He_burn b/networks/CNO_He_burn new file mode 120000 index 0000000000..b68c89f1cb --- /dev/null +++ b/networks/CNO_He_burn @@ -0,0 +1 @@ +he-burn/cno-he-burn-33a \ No newline at end of file diff --git a/networks/CNO_He_burn/CNO_He_burn.png b/networks/CNO_He_burn/CNO_He_burn.png deleted file mode 100644 index 456c50495f40eb1cd117253a637e8592bd634ac9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114440 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
5{L~qgtwP(V*UGO_~MC8!Z=ZDgJvW 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�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%0A_~Ucx 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 CPw@f( diff --git a/networks/CNO_He_burn/CNO_He_burn.py b/networks/CNO_He_burn/CNO_He_burn.py deleted file mode 100644 index 945d1d69d0..0000000000 --- a/networks/CNO_He_burn/CNO_He_burn.py +++ /dev/null @@ -1,123 +0,0 @@ -# a blend of CNO_extras and subch_simple - -import pynucastro as pyna -from pynucastro.networks import AmrexAstroCxxNetwork - -DO_DERIVED_RATES = False - -def get_library(): - - reaclib_lib = pyna.ReacLibLibrary() - - all_reactants = ["h1", "he4", - "c12", "c13", - "n13", "n14", "n15", - "o14", "o15", "o16", "o17", "o18", - "f17", "f18", "f19", - "ne18", "ne19", "ne20", "ne21", - "na22", "na23", - "mg22", "mg24", - "al27", "si28", "p31", "s32", - "cl35", "ar36", "k39", "ca40", - "sc43", "ti44", "v47", "cr48", - "mn51", "fe52", "co55", "ni56"] - - subch = reaclib_lib.linking_nuclei(all_reactants) - - # in this list, we have the reactants, the actual reactants, - # and modified products that we will use instead - other_rates = [("c12(c12,n)mg23", "mg24"), - ("o16(o16,n)s31", "s32"), - ("o16(c12,n)si27", "si28")] - - for r, mp in other_rates: - _r = reaclib_lib.get_rate_by_name(r) - _r.modify_products(mp) - subch += pyna.Library(rates=[_r]) - - # finally, the aprox nets don't include the reverse rates for - # C12+C12, C12+O16, and O16+O16, so remove those - - for r in subch.get_rates(): - if sorted(r.products) in [[pyna.Nucleus("c12"), pyna.Nucleus("c12")], - [pyna.Nucleus("c12"), pyna.Nucleus("o16")], - [pyna.Nucleus("o16"), pyna.Nucleus("o16")]]: - subch.remove_rate(r) - - # C12+Ne20 and reverse - # (a,g) links between Na23 and Al27 - # (a,g) links between Al27 and P31 - - rates_to_remove = ["p31(p,c12)ne20", - "si28(a,c12)ne20", - "ne20(c12,p)p31", - "ne20(c12,a)si28", - "na23(a,g)al27", - "al27(g,a)na23", - "al27(a,g)p31", - "p31(g,a)al27"] - - for r in rates_to_remove: - print("removing: ", r) - _r = subch.get_rate_by_name(r) - subch.remove_rate(_r) - - if DO_DERIVED_RATES: - rates_to_derive = [] - for r in subch.get_rates(): - if r.reverse: - # this rate was computed using detailed balance, regardless - # of whether Q < 0 or not. We want to remove it and then - # recompute it - rates_to_derive.append(r) - - # now for each of those derived rates, look to see if the pair exists - - for r in rates_to_derive: - fr = subch.get_rate_by_nuclei(r.products, r.reactants) - if fr: - print(f"modifying {r} from {fr}") - subch.remove_rate(r) - d = pyna.DerivedRate(rate=fr, compute_Q=False, use_pf=True) - subch.add_rate(d) - - return subch - -def doit(): - - subch = get_library() - - # these are the rates that we are going to allow to be optionally - # zeroed - r1 = subch.get_rate_by_name("c12(p,g)n13") - r2 = subch.get_rate_by_name("n13(he4,p)o16") - - net = AmrexAstroCxxNetwork(libraries=[subch], symmetric_screening=True, disable_rate_params=[r1, r2]) - net.make_ap_pg_approx(intermediate_nuclei=["cl35", "k39", "sc43", "v47", "mn51", "co55"]) - net.remove_nuclei(["cl35", "k39", "sc43", "v47", "mn51", "co55"]) - - # finally, the aprox nets don't include the reverse rates for - # C12+C12, C12+O16, and O16+O16, so remove those - - print(f"number of nuclei: {len(net.unique_nuclei)}") - print(f"number of rates: {len(net.rates)}") - - comp = pyna.Composition(net.get_nuclei()) - comp.set_all(0.1) - comp.set_nuc("he4", 0.95) - comp.normalize() - - rho = 1.e6 - T = 1.e9 - - net.plot(rho, T, comp, outfile="CNO_He_burn.png", - rotated=True, hide_xalpha=True, curved_edges=True, - size=(1500, 450), - node_size=500, node_font_size=11, node_color="#337dff", node_shape="s", - Z_range=(1,29)) - - net.write_network() - - -if __name__ == "__main__": - doit() diff --git a/networks/CNO_He_burn/_parameters b/networks/CNO_He_burn/_parameters deleted file mode 100644 index e98e970b5e..0000000000 --- a/networks/CNO_He_burn/_parameters +++ /dev/null @@ -1,4 +0,0 @@ -@namespace: network - -disable_p_C12_to_N13 int 0 -disable_He4_N13_to_p_O16 int 0 diff --git a/networks/CNO_He_burn/Make.package b/networks/he-burn/cno-he-burn-33a/Make.package similarity index 100% rename from networks/CNO_He_burn/Make.package rename to networks/he-burn/cno-he-burn-33a/Make.package diff --git a/networks/he-burn/cno-he-burn-33a/_parameters b/networks/he-burn/cno-he-burn-33a/_parameters new file mode 100644 index 0000000000..e7a017d5aa --- /dev/null +++ b/networks/he-burn/cno-he-burn-33a/_parameters @@ -0,0 +1,2 @@ +@namespace: network + diff --git a/networks/CNO_He_burn/actual_network.H b/networks/he-burn/cno-he-burn-33a/actual_network.H similarity index 100% rename from networks/CNO_He_burn/actual_network.H rename to networks/he-burn/cno-he-burn-33a/actual_network.H diff --git a/networks/CNO_He_burn/actual_network_data.cpp b/networks/he-burn/cno-he-burn-33a/actual_network_data.cpp similarity index 100% rename from networks/CNO_He_burn/actual_network_data.cpp rename to networks/he-burn/cno-he-burn-33a/actual_network_data.cpp diff --git a/networks/CNO_He_burn/actual_rhs.H b/networks/he-burn/cno-he-burn-33a/actual_rhs.H similarity index 88% rename from networks/CNO_He_burn/actual_rhs.H rename to networks/he-burn/cno-he-burn-33a/actual_rhs.H index 7985edf788..b35dec71a3 100644 --- a/networks/CNO_He_burn/actual_rhs.H +++ b/networks/he-burn/cno-he-burn-33a/actual_rhs.H @@ -71,28 +71,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { fill_reaclib_rates(tfactors, rate_eval); - if (disable_p_C12_to_N13) { - rate_eval.screened_rates(k_p_C12_to_N13) = 0.0; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C12_to_N13) = 0.0; - } - rate_eval.screened_rates(k_N13_to_p_C12) = 0.0; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N13_to_p_C12) = 0.0; - } - } - - if (disable_He4_N13_to_p_O16) { - rate_eval.screened_rates(k_He4_N13_to_p_O16) = 0.0; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16) = 0.0; - } - rate_eval.screened_rates(k_p_O16_to_He4_N13) = 0.0; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13) = 0.0; - } - } - // Evaluate screening factors @@ -113,13 +91,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_N13_to_p_C12); - rate_eval.screened_rates(k_N13_to_p_C12) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_N13_to_p_C12); - rate_eval.dscreened_rates_dT(k_N13_to_p_C12) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_p_C12_to_N13); rate_eval.screened_rates(k_p_C12_to_N13) *= scor; if constexpr (std::is_same_v) { @@ -129,23 +100,42 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 6.0_rt, 13.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 6.0_rt, 12.0_rt); - static_assert(scn_fac.z1 == 1.0_rt); + static_assert(scn_fac.z1 == 2.0_rt); actual_screen(pstate, scn_fac, scor, dscor_dt); } - ratraw = rate_eval.screened_rates(k_N14_to_p_C13); - rate_eval.screened_rates(k_N14_to_p_C13) *= scor; + ratraw = rate_eval.screened_rates(k_He4_C12_to_O16); + rate_eval.screened_rates(k_He4_C12_to_O16) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_N14_to_p_C13); - rate_eval.dscreened_rates_dT(k_N14_to_p_C13) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_C12_to_O16); + rate_eval.dscreened_rates_dT(k_He4_C12_to_O16) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_He4_C12_to_p_N15); + rate_eval.screened_rates(k_He4_C12_to_p_N15) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_C12_to_p_N15); + rate_eval.dscreened_rates_dT(k_He4_C12_to_p_N15) = 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); + + + static_assert(scn_fac.z1 == 1.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); } + ratraw = rate_eval.screened_rates(k_p_C13_to_N14); rate_eval.screened_rates(k_p_C13_to_N14) *= scor; if constexpr (std::is_same_v) { @@ -165,13 +155,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_O14_to_p_N13); - rate_eval.screened_rates(k_O14_to_p_N13) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_O14_to_p_N13); - rate_eval.dscreened_rates_dT(k_O14_to_p_N13) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_p_N13_to_O14); rate_eval.screened_rates(k_p_N13_to_O14) *= scor; if constexpr (std::is_same_v) { @@ -191,13 +174,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_O15_to_p_N14); - rate_eval.screened_rates(k_O15_to_p_N14) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_O15_to_p_N14); - rate_eval.dscreened_rates_dT(k_O15_to_p_N14) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_p_N14_to_O15); rate_eval.screened_rates(k_p_N14_to_O15) *= scor; if constexpr (std::is_same_v) { @@ -207,23 +183,42 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 7.0_rt, 15.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 7.0_rt, 14.0_rt); - static_assert(scn_fac.z1 == 1.0_rt); + static_assert(scn_fac.z1 == 2.0_rt); actual_screen(pstate, scn_fac, scor, dscor_dt); } - ratraw = rate_eval.screened_rates(k_O16_to_p_N15); - rate_eval.screened_rates(k_O16_to_p_N15) *= scor; + ratraw = rate_eval.screened_rates(k_He4_N14_to_F18); + rate_eval.screened_rates(k_He4_N14_to_F18) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_O16_to_p_N15); - rate_eval.dscreened_rates_dT(k_O16_to_p_N15) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_N14_to_F18); + rate_eval.dscreened_rates_dT(k_He4_N14_to_F18) = ratraw * dscor_dt + dratraw_dT * scor; } + ratraw = rate_eval.screened_rates(k_He4_N14_to_p_O17); + rate_eval.screened_rates(k_He4_N14_to_p_O17) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_N14_to_p_O17); + rate_eval.dscreened_rates_dT(k_He4_N14_to_p_O17) = 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); + + + static_assert(scn_fac.z1 == 1.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + ratraw = rate_eval.screened_rates(k_p_N15_to_O16); rate_eval.screened_rates(k_p_N15_to_O16) *= scor; if constexpr (std::is_same_v) { @@ -231,13 +226,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_N15_to_O16) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_C12_to_p_N15); - rate_eval.screened_rates(k_He4_C12_to_p_N15) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_C12_to_p_N15); - rate_eval.dscreened_rates_dT(k_He4_C12_to_p_N15) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_p_N15_to_He4_C12); rate_eval.screened_rates(k_p_N15_to_He4_C12) *= scor; if constexpr (std::is_same_v) { @@ -247,7 +235,7 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 6.0_rt, 12.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 7.0_rt, 15.0_rt); static_assert(scn_fac.z1 == 2.0_rt); @@ -257,89 +245,101 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_O16_to_He4_C12); - rate_eval.screened_rates(k_O16_to_He4_C12) *= scor; + ratraw = rate_eval.screened_rates(k_He4_N15_to_F19); + rate_eval.screened_rates(k_He4_N15_to_F19) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_O16_to_He4_C12); - rate_eval.dscreened_rates_dT(k_O16_to_He4_C12) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_N15_to_F19); + rate_eval.dscreened_rates_dT(k_He4_N15_to_F19) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_C12_to_O16); - rate_eval.screened_rates(k_He4_C12_to_O16) *= scor; + ratraw = rate_eval.screened_rates(k_He4_N15_to_p_O18); + rate_eval.screened_rates(k_He4_N15_to_p_O18) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_C12_to_O16); - rate_eval.dscreened_rates_dT(k_He4_C12_to_O16) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_N15_to_p_O18); + rate_eval.dscreened_rates_dT(k_He4_N15_to_p_O18) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 8.0_rt, 16.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 8.0_rt, 14.0_rt); - static_assert(scn_fac.z1 == 1.0_rt); + static_assert(scn_fac.z1 == 2.0_rt); actual_screen(pstate, scn_fac, scor, dscor_dt); } - ratraw = rate_eval.screened_rates(k_F17_to_p_O16); - rate_eval.screened_rates(k_F17_to_p_O16) *= scor; + ratraw = rate_eval.screened_rates(k_He4_O14_to_Ne18); + rate_eval.screened_rates(k_He4_O14_to_Ne18) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_F17_to_p_O16); - rate_eval.dscreened_rates_dT(k_F17_to_p_O16) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O14_to_Ne18); + rate_eval.dscreened_rates_dT(k_He4_O14_to_Ne18) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_O16_to_F17); - rate_eval.screened_rates(k_p_O16_to_F17) *= scor; + ratraw = rate_eval.screened_rates(k_He4_O14_to_p_F17); + rate_eval.screened_rates(k_He4_O14_to_p_F17) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O16_to_F17); - rate_eval.dscreened_rates_dT(k_p_O16_to_F17) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O14_to_p_F17); + rate_eval.dscreened_rates_dT(k_He4_O14_to_p_F17) = 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); + 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 == 1.0_rt); + static_assert(scn_fac.z1 == 2.0_rt); actual_screen(pstate, scn_fac, scor, dscor_dt); } - ratraw = rate_eval.screened_rates(k_F18_to_p_O17); - rate_eval.screened_rates(k_F18_to_p_O17) *= scor; + ratraw = rate_eval.screened_rates(k_He4_O15_to_Ne19); + rate_eval.screened_rates(k_He4_O15_to_Ne19) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_F18_to_p_O17); - rate_eval.dscreened_rates_dT(k_F18_to_p_O17) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O15_to_Ne19); + rate_eval.dscreened_rates_dT(k_He4_O15_to_Ne19) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_O17_to_F18); - rate_eval.screened_rates(k_p_O17_to_F18) *= scor; + ratraw = rate_eval.screened_rates(k_He4_O15_to_p_F18); + rate_eval.screened_rates(k_He4_O15_to_p_F18) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O17_to_F18); - rate_eval.dscreened_rates_dT(k_p_O17_to_F18) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O15_to_p_F18); + rate_eval.dscreened_rates_dT(k_He4_O15_to_p_F18) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_N14_to_p_O17); - rate_eval.screened_rates(k_He4_N14_to_p_O17) *= scor; + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 8.0_rt, 16.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_O16_to_F17); + rate_eval.screened_rates(k_p_O16_to_F17) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_N14_to_p_O17); - rate_eval.dscreened_rates_dT(k_He4_N14_to_p_O17) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O16_to_F17); + rate_eval.dscreened_rates_dT(k_p_O16_to_F17) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_O17_to_He4_N14); - rate_eval.screened_rates(k_p_O17_to_He4_N14) *= scor; + ratraw = rate_eval.screened_rates(k_p_O16_to_He4_N13); + rate_eval.screened_rates(k_p_O16_to_He4_N13) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O17_to_He4_N14); - rate_eval.dscreened_rates_dT(k_p_O17_to_He4_N14) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13); + rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 7.0_rt, 14.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 8.0_rt, 16.0_rt); static_assert(scn_fac.z1 == 2.0_rt); @@ -349,23 +349,23 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_F18_to_He4_N14); - rate_eval.screened_rates(k_F18_to_He4_N14) *= scor; + ratraw = rate_eval.screened_rates(k_He4_O16_to_Ne20); + rate_eval.screened_rates(k_He4_O16_to_Ne20) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_F18_to_He4_N14); - rate_eval.dscreened_rates_dT(k_F18_to_He4_N14) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20); + rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_N14_to_F18); - rate_eval.screened_rates(k_He4_N14_to_F18) *= scor; + ratraw = rate_eval.screened_rates(k_He4_O16_to_p_F19); + rate_eval.screened_rates(k_He4_O16_to_p_F19) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_N14_to_F18); - rate_eval.dscreened_rates_dT(k_He4_N14_to_F18) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O16_to_p_F19); + rate_eval.dscreened_rates_dT(k_He4_O16_to_p_F19) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 8.0_rt, 18.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 8.0_rt, 17.0_rt); static_assert(scn_fac.z1 == 1.0_rt); @@ -375,37 +375,23 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_F19_to_p_O18); - rate_eval.screened_rates(k_F19_to_p_O18) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_F19_to_p_O18); - rate_eval.dscreened_rates_dT(k_F19_to_p_O18) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_p_O18_to_F19); - rate_eval.screened_rates(k_p_O18_to_F19) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O18_to_F19); - rate_eval.dscreened_rates_dT(k_p_O18_to_F19) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_He4_N15_to_p_O18); - rate_eval.screened_rates(k_He4_N15_to_p_O18) *= scor; + ratraw = rate_eval.screened_rates(k_p_O17_to_F18); + rate_eval.screened_rates(k_p_O17_to_F18) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_N15_to_p_O18); - rate_eval.dscreened_rates_dT(k_He4_N15_to_p_O18) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O17_to_F18); + rate_eval.dscreened_rates_dT(k_p_O17_to_F18) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_O18_to_He4_N15); - rate_eval.screened_rates(k_p_O18_to_He4_N15) *= scor; + ratraw = rate_eval.screened_rates(k_p_O17_to_He4_N14); + rate_eval.screened_rates(k_p_O17_to_He4_N14) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O18_to_He4_N15); - rate_eval.dscreened_rates_dT(k_p_O18_to_He4_N15) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O17_to_He4_N14); + rate_eval.dscreened_rates_dT(k_p_O17_to_He4_N14) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 7.0_rt, 15.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 8.0_rt, 17.0_rt); static_assert(scn_fac.z1 == 2.0_rt); @@ -415,23 +401,16 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_F19_to_He4_N15); - rate_eval.screened_rates(k_F19_to_He4_N15) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_F19_to_He4_N15); - rate_eval.dscreened_rates_dT(k_F19_to_He4_N15) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_He4_N15_to_F19); - rate_eval.screened_rates(k_He4_N15_to_F19) *= scor; + ratraw = rate_eval.screened_rates(k_He4_O17_to_Ne21); + rate_eval.screened_rates(k_He4_O17_to_Ne21) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_N15_to_F19); - rate_eval.dscreened_rates_dT(k_He4_N15_to_F19) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O17_to_Ne21); + rate_eval.dscreened_rates_dT(k_He4_O17_to_Ne21) = 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); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 8.0_rt, 18.0_rt); static_assert(scn_fac.z1 == 1.0_rt); @@ -441,51 +420,37 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_Ne18_to_p_F17); - rate_eval.screened_rates(k_Ne18_to_p_F17) *= scor; + ratraw = rate_eval.screened_rates(k_p_O18_to_F19); + rate_eval.screened_rates(k_p_O18_to_F19) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ne18_to_p_F17); - rate_eval.dscreened_rates_dT(k_Ne18_to_p_F17) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O18_to_F19); + rate_eval.dscreened_rates_dT(k_p_O18_to_F19) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_F17_to_Ne18); - rate_eval.screened_rates(k_p_F17_to_Ne18) *= scor; + ratraw = rate_eval.screened_rates(k_p_O18_to_He4_N15); + rate_eval.screened_rates(k_p_O18_to_He4_N15) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_F17_to_Ne18); - rate_eval.dscreened_rates_dT(k_p_F17_to_Ne18) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O18_to_He4_N15); + rate_eval.dscreened_rates_dT(k_p_O18_to_He4_N15) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 8.0_rt, 14.0_rt); + 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 == 2.0_rt); + static_assert(scn_fac.z1 == 1.0_rt); actual_screen(pstate, scn_fac, scor, dscor_dt); } - ratraw = rate_eval.screened_rates(k_Ne18_to_He4_O14); - rate_eval.screened_rates(k_Ne18_to_He4_O14) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ne18_to_He4_O14); - rate_eval.dscreened_rates_dT(k_Ne18_to_He4_O14) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_He4_O14_to_Ne18); - rate_eval.screened_rates(k_He4_O14_to_Ne18) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O14_to_Ne18); - rate_eval.dscreened_rates_dT(k_He4_O14_to_Ne18) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_He4_O14_to_p_F17); - rate_eval.screened_rates(k_He4_O14_to_p_F17) *= scor; + ratraw = rate_eval.screened_rates(k_p_F17_to_Ne18); + rate_eval.screened_rates(k_p_F17_to_Ne18) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O14_to_p_F17); - rate_eval.dscreened_rates_dT(k_He4_O14_to_p_F17) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_F17_to_Ne18); + rate_eval.dscreened_rates_dT(k_p_F17_to_Ne18) = ratraw * dscor_dt + dratraw_dT * scor; } ratraw = rate_eval.screened_rates(k_p_F17_to_He4_O14); @@ -507,13 +472,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_Ne19_to_p_F18); - rate_eval.screened_rates(k_Ne19_to_p_F18) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ne19_to_p_F18); - rate_eval.dscreened_rates_dT(k_Ne19_to_p_F18) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_p_F18_to_Ne19); rate_eval.screened_rates(k_p_F18_to_Ne19) *= scor; if constexpr (std::is_same_v) { @@ -521,13 +479,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_F18_to_Ne19) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_O15_to_p_F18); - rate_eval.screened_rates(k_He4_O15_to_p_F18) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O15_to_p_F18); - rate_eval.dscreened_rates_dT(k_He4_O15_to_p_F18) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_p_F18_to_He4_O15); rate_eval.screened_rates(k_p_F18_to_He4_O15) *= scor; if constexpr (std::is_same_v) { @@ -537,7 +488,7 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 8.0_rt, 15.0_rt); + 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); @@ -547,18 +498,18 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_Ne19_to_He4_O15); - rate_eval.screened_rates(k_Ne19_to_He4_O15) *= scor; + ratraw = rate_eval.screened_rates(k_He4_F18_to_Na22); + rate_eval.screened_rates(k_He4_F18_to_Na22) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ne19_to_He4_O15); - rate_eval.dscreened_rates_dT(k_Ne19_to_He4_O15) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_F18_to_Na22); + rate_eval.dscreened_rates_dT(k_He4_F18_to_Na22) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_O15_to_Ne19); - rate_eval.screened_rates(k_He4_O15_to_Ne19) *= scor; + ratraw = rate_eval.screened_rates(k_He4_F18_to_p_Ne21); + rate_eval.screened_rates(k_He4_F18_to_p_Ne21) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O15_to_Ne19); - rate_eval.dscreened_rates_dT(k_He4_O15_to_Ne19) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_F18_to_p_Ne21); + rate_eval.dscreened_rates_dT(k_He4_F18_to_p_Ne21) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -573,13 +524,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_Ne20_to_p_F19); - rate_eval.screened_rates(k_Ne20_to_p_F19) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ne20_to_p_F19); - rate_eval.dscreened_rates_dT(k_Ne20_to_p_F19) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_p_F19_to_Ne20); rate_eval.screened_rates(k_p_F19_to_Ne20) *= scor; if constexpr (std::is_same_v) { @@ -587,13 +531,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_F19_to_Ne20) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_O16_to_p_F19); - rate_eval.screened_rates(k_He4_O16_to_p_F19) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O16_to_p_F19); - rate_eval.dscreened_rates_dT(k_He4_O16_to_p_F19) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_p_F19_to_He4_O16); rate_eval.screened_rates(k_p_F19_to_He4_O16) *= scor; if constexpr (std::is_same_v) { @@ -602,124 +539,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 8.0_rt, 16.0_rt); - - - static_assert(scn_fac.z1 == 2.0_rt); - - - actual_screen(pstate, scn_fac, scor, dscor_dt); - } - - - ratraw = rate_eval.screened_rates(k_Ne20_to_He4_O16); - rate_eval.screened_rates(k_Ne20_to_He4_O16) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16); - rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_He4_O16_to_Ne20); - rate_eval.screened_rates(k_He4_O16_to_Ne20) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20); - rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20) = ratraw * dscor_dt + dratraw_dT * scor; - } - - - { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 8.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_Ne21_to_He4_O17); - rate_eval.screened_rates(k_Ne21_to_He4_O17) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ne21_to_He4_O17); - rate_eval.dscreened_rates_dT(k_Ne21_to_He4_O17) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_He4_O17_to_Ne21); - rate_eval.screened_rates(k_He4_O17_to_Ne21) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O17_to_Ne21); - rate_eval.dscreened_rates_dT(k_He4_O17_to_Ne21) = ratraw * dscor_dt + dratraw_dT * scor; - } - - - { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 10.0_rt, 21.0_rt); - - - static_assert(scn_fac.z1 == 1.0_rt); - - - actual_screen(pstate, scn_fac, scor, dscor_dt); - } - - - ratraw = rate_eval.screened_rates(k_Na22_to_p_Ne21); - rate_eval.screened_rates(k_Na22_to_p_Ne21) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Na22_to_p_Ne21); - rate_eval.dscreened_rates_dT(k_Na22_to_p_Ne21) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_p_Ne21_to_Na22); - rate_eval.screened_rates(k_p_Ne21_to_Na22) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Ne21_to_Na22); - rate_eval.dscreened_rates_dT(k_p_Ne21_to_Na22) = 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); - - - actual_screen(pstate, scn_fac, scor, dscor_dt); - } - - - ratraw = rate_eval.screened_rates(k_Na22_to_He4_F18); - rate_eval.screened_rates(k_Na22_to_He4_F18) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Na22_to_He4_F18); - rate_eval.dscreened_rates_dT(k_Na22_to_He4_F18) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_He4_F18_to_Na22); - rate_eval.screened_rates(k_He4_F18_to_Na22) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_F18_to_Na22); - rate_eval.dscreened_rates_dT(k_He4_F18_to_Na22) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_He4_F18_to_p_Ne21); - rate_eval.screened_rates(k_He4_F18_to_p_Ne21) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_F18_to_p_Ne21); - rate_eval.dscreened_rates_dT(k_He4_F18_to_p_Ne21) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_p_Ne21_to_He4_F18); - rate_eval.screened_rates(k_p_Ne21_to_He4_F18) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Ne21_to_He4_F18); - rate_eval.dscreened_rates_dT(k_p_Ne21_to_He4_F18) = ratraw * dscor_dt + dratraw_dT * scor; - } - - { constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 9.0_rt, 19.0_rt); @@ -731,13 +550,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_Na23_to_He4_F19); - rate_eval.screened_rates(k_Na23_to_He4_F19) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Na23_to_He4_F19); - rate_eval.dscreened_rates_dT(k_Na23_to_He4_F19) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_He4_F19_to_Na23); rate_eval.screened_rates(k_He4_F19_to_Na23) *= scor; if constexpr (std::is_same_v) { @@ -757,13 +569,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_Mg22_to_He4_Ne18); - rate_eval.screened_rates(k_Mg22_to_He4_Ne18) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Mg22_to_He4_Ne18); - rate_eval.dscreened_rates_dT(k_Mg22_to_He4_Ne18) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_He4_Ne18_to_Mg22); rate_eval.screened_rates(k_He4_Ne18_to_Mg22) *= scor; if constexpr (std::is_same_v) { @@ -773,28 +578,21 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 11.0_rt, 23.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 10.0_rt, 20.0_rt); - static_assert(scn_fac.z1 == 1.0_rt); + static_assert(scn_fac.z1 == 2.0_rt); actual_screen(pstate, scn_fac, scor, dscor_dt); } - ratraw = rate_eval.screened_rates(k_Mg24_to_p_Na23); - rate_eval.screened_rates(k_Mg24_to_p_Na23) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23); - rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_p_Na23_to_Mg24); - rate_eval.screened_rates(k_p_Na23_to_Mg24) *= scor; + ratraw = rate_eval.screened_rates(k_He4_Ne20_to_Mg24); + rate_eval.screened_rates(k_He4_Ne20_to_Mg24) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24); - rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24); + rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24) = ratraw * dscor_dt + dratraw_dT * scor; } ratraw = rate_eval.screened_rates(k_He4_Ne20_to_p_Na23); @@ -804,42 +602,35 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Ne20_to_p_Na23) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_Na23_to_He4_Ne20); - rate_eval.screened_rates(k_p_Na23_to_He4_Ne20) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20); - rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20) = ratraw * dscor_dt + dratraw_dT * scor; - } - { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 10.0_rt, 20.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 10.0_rt, 21.0_rt); - static_assert(scn_fac.z1 == 2.0_rt); + static_assert(scn_fac.z1 == 1.0_rt); actual_screen(pstate, scn_fac, scor, dscor_dt); } - ratraw = rate_eval.screened_rates(k_Mg24_to_He4_Ne20); - rate_eval.screened_rates(k_Mg24_to_He4_Ne20) *= scor; + ratraw = rate_eval.screened_rates(k_p_Ne21_to_Na22); + rate_eval.screened_rates(k_p_Ne21_to_Na22) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20); - rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Ne21_to_Na22); + rate_eval.dscreened_rates_dT(k_p_Ne21_to_Na22) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_Ne20_to_Mg24); - rate_eval.screened_rates(k_He4_Ne20_to_Mg24) *= scor; + ratraw = rate_eval.screened_rates(k_p_Ne21_to_He4_F18); + rate_eval.screened_rates(k_p_Ne21_to_He4_F18) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24); - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Ne21_to_He4_F18); + rate_eval.dscreened_rates_dT(k_p_Ne21_to_He4_F18) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 13.0_rt, 27.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 11.0_rt, 23.0_rt); static_assert(scn_fac.z1 == 1.0_rt); @@ -849,32 +640,18 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_Si28_to_p_Al27); - rate_eval.screened_rates(k_Si28_to_p_Al27) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27); - rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_p_Al27_to_Si28); - rate_eval.screened_rates(k_p_Al27_to_Si28) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28); - rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_He4_Mg24_to_p_Al27); - rate_eval.screened_rates(k_He4_Mg24_to_p_Al27) *= scor; + ratraw = rate_eval.screened_rates(k_p_Na23_to_Mg24); + rate_eval.screened_rates(k_p_Na23_to_Mg24) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27); - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24); + rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_Al27_to_He4_Mg24); - rate_eval.screened_rates(k_p_Al27_to_He4_Mg24) *= scor; + ratraw = rate_eval.screened_rates(k_p_Na23_to_He4_Ne20); + rate_eval.screened_rates(k_p_Na23_to_He4_Ne20) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24); - rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20); + rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -889,13 +666,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_Si28_to_He4_Mg24); - rate_eval.screened_rates(k_Si28_to_He4_Mg24) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24); - rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_He4_Mg24_to_Si28); rate_eval.screened_rates(k_He4_Mg24_to_Si28) *= scor; if constexpr (std::is_same_v) { @@ -903,9 +673,16 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Mg24_to_Si28) = ratraw * dscor_dt + dratraw_dT * scor; } + ratraw = rate_eval.screened_rates(k_He4_Mg24_to_p_Al27); + rate_eval.screened_rates(k_He4_Mg24_to_p_Al27) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27); + rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27) = ratraw * dscor_dt + dratraw_dT * scor; + } + { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 15.0_rt, 31.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 13.0_rt, 27.0_rt); static_assert(scn_fac.z1 == 1.0_rt); @@ -915,32 +692,18 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_S32_to_p_P31); - rate_eval.screened_rates(k_S32_to_p_P31) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_S32_to_p_P31); - rate_eval.dscreened_rates_dT(k_S32_to_p_P31) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_p_P31_to_S32); - rate_eval.screened_rates(k_p_P31_to_S32) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_P31_to_S32); - rate_eval.dscreened_rates_dT(k_p_P31_to_S32) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_He4_Si28_to_p_P31); - rate_eval.screened_rates(k_He4_Si28_to_p_P31) *= scor; + ratraw = rate_eval.screened_rates(k_p_Al27_to_Si28); + rate_eval.screened_rates(k_p_Al27_to_Si28) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31); - rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28); + rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_P31_to_He4_Si28); - rate_eval.screened_rates(k_p_P31_to_He4_Si28) *= scor; + ratraw = rate_eval.screened_rates(k_p_Al27_to_He4_Mg24); + rate_eval.screened_rates(k_p_Al27_to_He4_Mg24) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28); - rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24); + rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -955,13 +718,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_S32_to_He4_Si28); - rate_eval.screened_rates(k_S32_to_He4_Si28) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28); - rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_He4_Si28_to_S32); rate_eval.screened_rates(k_He4_Si28_to_S32) *= scor; if constexpr (std::is_same_v) { @@ -969,43 +725,37 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Si28_to_S32) = ratraw * dscor_dt + dratraw_dT * scor; } - - { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 2.0_rt, 4.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_Si28_to_p_P31); + rate_eval.screened_rates(k_He4_Si28_to_p_P31) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31); + rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31) = ratraw * dscor_dt + dratraw_dT * scor; } - { - constexpr auto scn_fac2 = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 4.0_rt, 8.0_rt); - + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 15.0_rt, 31.0_rt); - static_assert(scn_fac2.z1 == 2.0_rt); + static_assert(scn_fac.z1 == 1.0_rt); - actual_screen(pstate, scn_fac2, scor2, dscor2_dt); + actual_screen(pstate, scn_fac, scor, dscor_dt); } - ratraw = rate_eval.screened_rates(k_C12_to_He4_He4_He4); - rate_eval.screened_rates(k_C12_to_He4_He4_He4) *= scor * scor2; + ratraw = rate_eval.screened_rates(k_p_P31_to_S32); + rate_eval.screened_rates(k_p_P31_to_S32) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_C12_to_He4_He4_He4); - rate_eval.dscreened_rates_dT(k_C12_to_He4_He4_He4) = ratraw * (scor * dscor2_dt + dscor_dt * scor2) + dratraw_dT * scor * scor2; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_P31_to_S32); + rate_eval.dscreened_rates_dT(k_p_P31_to_S32) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_He4_He4_to_C12); - rate_eval.screened_rates(k_He4_He4_He4_to_C12) *= scor * scor2; + ratraw = rate_eval.screened_rates(k_p_P31_to_He4_Si28); + rate_eval.screened_rates(k_p_P31_to_He4_Si28) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12); - rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12) = ratraw * (scor * dscor2_dt + dscor_dt * scor2) + dratraw_dT * scor * scor2; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28); + rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -1060,13 +810,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_O16_to_He4_N13); - rate_eval.screened_rates(k_p_O16_to_He4_N13) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13); - rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13) = ratraw * dscor_dt + dratraw_dT * scor; - } - { constexpr auto scn_fac = scrn::calculate_screen_factor(6.0_rt, 12.0_rt, 8.0_rt, 16.0_rt); @@ -1152,13 +895,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_F17_to_p_Ne20) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_Ne20_to_He4_F17); - rate_eval.screened_rates(k_p_Ne20_to_He4_F17) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Ne20_to_He4_F17); - rate_eval.dscreened_rates_dT(k_p_Ne20_to_He4_F17) = ratraw * dscor_dt + dratraw_dT * scor; - } - { constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 10.0_rt, 19.0_rt); @@ -1178,6 +914,37 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Ne19_to_p_Na22) = ratraw * dscor_dt + dratraw_dT * scor; } + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 10.0_rt, 20.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_Ne20_to_He4_F17); + rate_eval.screened_rates(k_p_Ne20_to_He4_F17) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Ne20_to_He4_F17); + rate_eval.dscreened_rates_dT(k_p_Ne20_to_He4_F17) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 11.0_rt, 22.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_Na22_to_He4_Ne19); rate_eval.screened_rates(k_p_Na22_to_He4_Ne19) *= scor; if constexpr (std::is_same_v) { @@ -1186,6 +953,38 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } + { + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 2.0_rt, 4.0_rt); + + + static_assert(scn_fac.z1 == 2.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + + { + constexpr auto scn_fac2 = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 4.0_rt, 8.0_rt); + + + static_assert(scn_fac2.z1 == 2.0_rt); + + + actual_screen(pstate, scn_fac2, scor2, dscor2_dt); + + } + + + ratraw = rate_eval.screened_rates(k_He4_He4_He4_to_C12); + rate_eval.screened_rates(k_He4_He4_He4_to_C12) *= scor * scor2; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12); + rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12) = 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, 16.0_rt, 32.0_rt); @@ -1204,11 +1003,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Ar36_to_He4_S32_removed); - rate_eval.screened_rates(k_Ar36_to_He4_S32_removed) *= scor; + ratraw = rate_eval.screened_rates(k_He4_S32_to_p_Cl35_removed); + rate_eval.screened_rates(k_He4_S32_to_p_Cl35_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_removed); - rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_removed); + rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_removed) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -1223,13 +1022,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_He4_S32_to_p_Cl35_removed); - rate_eval.screened_rates(k_He4_S32_to_p_Cl35_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_removed); - rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_removed) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_p_Cl35_to_Ar36_removed); rate_eval.screened_rates(k_p_Cl35_to_Ar36_removed) *= scor; if constexpr (std::is_same_v) { @@ -1237,13 +1029,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Ar36_to_p_Cl35_removed); - rate_eval.screened_rates(k_Ar36_to_p_Cl35_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_removed); - rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_removed) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_removed); rate_eval.screened_rates(k_p_Cl35_to_He4_S32_removed) *= scor; if constexpr (std::is_same_v) { @@ -1270,11 +1055,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Ca40_to_He4_Ar36_removed); - rate_eval.screened_rates(k_Ca40_to_He4_Ar36_removed) *= scor; + ratraw = rate_eval.screened_rates(k_He4_Ar36_to_p_K39_removed); + rate_eval.screened_rates(k_He4_Ar36_to_p_K39_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_removed); - rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_removed); + rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_removed) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -1289,13 +1074,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_He4_Ar36_to_p_K39_removed); - rate_eval.screened_rates(k_He4_Ar36_to_p_K39_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_removed); - rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_removed) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_p_K39_to_Ca40_removed); rate_eval.screened_rates(k_p_K39_to_Ca40_removed) *= scor; if constexpr (std::is_same_v) { @@ -1303,13 +1081,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Ca40_to_p_K39_removed); - rate_eval.screened_rates(k_Ca40_to_p_K39_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_removed); - rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_removed) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_removed); rate_eval.screened_rates(k_p_K39_to_He4_Ar36_removed) *= scor; if constexpr (std::is_same_v) { @@ -1336,11 +1107,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Ti44_to_He4_Ca40_removed); - rate_eval.screened_rates(k_Ti44_to_He4_Ca40_removed) *= scor; + ratraw = rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_removed); + rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_removed); - rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_removed); + rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_removed) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -1355,13 +1126,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_removed); - rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_removed); - rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_removed) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_p_Sc43_to_Ti44_removed); rate_eval.screened_rates(k_p_Sc43_to_Ti44_removed) *= scor; if constexpr (std::is_same_v) { @@ -1369,13 +1133,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Ti44_to_p_Sc43_removed); - rate_eval.screened_rates(k_Ti44_to_p_Sc43_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_removed); - rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_removed) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_removed); rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_removed) *= scor; if constexpr (std::is_same_v) { @@ -1402,11 +1159,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Cr48_to_He4_Ti44_removed); - rate_eval.screened_rates(k_Cr48_to_He4_Ti44_removed) *= scor; + ratraw = rate_eval.screened_rates(k_He4_Ti44_to_p_V47_removed); + rate_eval.screened_rates(k_He4_Ti44_to_p_V47_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_removed); - rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_removed); + rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_removed) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -1421,13 +1178,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_He4_Ti44_to_p_V47_removed); - rate_eval.screened_rates(k_He4_Ti44_to_p_V47_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_removed); - rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_removed) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_p_V47_to_Cr48_removed); rate_eval.screened_rates(k_p_V47_to_Cr48_removed) *= scor; if constexpr (std::is_same_v) { @@ -1435,13 +1185,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Cr48_to_p_V47_removed); - rate_eval.screened_rates(k_Cr48_to_p_V47_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_removed); - rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_removed) = ratraw * dscor_dt + dratraw_dT * scor; - } - ratraw = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_removed); rate_eval.screened_rates(k_p_V47_to_He4_Ti44_removed) *= scor; if constexpr (std::is_same_v) { @@ -1475,20 +1218,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Cr48_to_p_Mn51_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Fe52_to_He4_Cr48_removed); - rate_eval.screened_rates(k_Fe52_to_He4_Cr48_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_removed); - rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_removed) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_removed); - rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_removed); - rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_removed) = ratraw * dscor_dt + dratraw_dT * scor; - } - { constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 25.0_rt, 51.0_rt); @@ -1508,11 +1237,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Fe52_to_p_Mn51_removed); - rate_eval.screened_rates(k_Fe52_to_p_Mn51_removed) *= scor; + ratraw = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_removed); + rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_removed); - rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_removed); + rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_removed) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -1541,20 +1270,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_Co55_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Ni56_to_He4_Fe52_removed); - rate_eval.screened_rates(k_Ni56_to_He4_Fe52_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_removed); - rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_removed) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_removed); - rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_removed); - rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_removed) = ratraw * dscor_dt + dratraw_dT * scor; - } - { constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 27.0_rt, 55.0_rt); @@ -1574,17 +1289,17 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_Ni56_to_p_Co55_removed); - rate_eval.screened_rates(k_Ni56_to_p_Co55_removed) *= scor; + ratraw = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_removed); + rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_removed); - rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_removed); + rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_removed) = ratraw * dscor_dt + dratraw_dT * scor; } // Fill approximate rates - fill_approx_rates(tfactors, rate_eval); + fill_approx_rates(tfactors, state.rho, Y, rate_eval); // Calculate tabular rates diff --git a/networks/he-burn/cno-he-burn-33a/cno_he_burn_33a.py b/networks/he-burn/cno-he-burn-33a/cno_he_burn_33a.py new file mode 100644 index 0000000000..34f4282ab4 --- /dev/null +++ b/networks/he-burn/cno-he-burn-33a/cno_he_burn_33a.py @@ -0,0 +1,52 @@ +# a blend of CNO_extras and subch_simple + +import pynucastro as pyna +from pynucastro.networks import AmrexAstroCxxNetwork + +import he_burn_core + + +DO_DERIVED_RATES = False + + +def doit(): + + extra_reactants = ["c13", "n15", + "o14", "o15", "o17", "o18", + "f17", "f19", + "ne18", "ne19", + "na22", "na23", + "mg22"] + + subch = he_burn_core.get_core_library(include_n14_sequence=True, + include_zn=False, + extra_nuclei=extra_reactants, + do_detailed_balance=DO_DERIVED_RATES) + + net = AmrexAstroCxxNetwork(libraries=[subch], symmetric_screening=False) + + net.make_ap_pg_approx(intermediate_nuclei=["cl35", "k39", "sc43", "v47", "mn51", "co55"]) + net.remove_nuclei(["cl35", "k39", "sc43", "v47", "mn51", "co55"]) + + print(f"number of nuclei: {len(net.unique_nuclei)}") + print(f"number of rates: {len(net.rates)}") + + comp = pyna.Composition(net.get_nuclei()) + comp.set_all(0.1) + comp.set_nuc("he4", 0.95) + comp.normalize() + + rho = 1.e6 + T = 1.e9 + + net.plot(rho, T, comp, outfile="cno-he-burn-33a.png", + rotated=True, hide_xalpha=True, curved_edges=True, + size=(1500, 450), + node_size=500, node_font_size=11, node_color="#337dff", node_shape="s", + Z_range=(1, 29)) + + net.write_network() + + +if __name__ == "__main__": + doit() diff --git a/networks/he-burn/cno-he-burn-33a/he_burn_core.py b/networks/he-burn/cno-he-burn-33a/he_burn_core.py new file mode 120000 index 0000000000..bc9cd39283 --- /dev/null +++ b/networks/he-burn/cno-he-burn-33a/he_burn_core.py @@ -0,0 +1 @@ +../he_burn_core.py \ No newline at end of file diff --git a/networks/CNO_He_burn/inputs.burn_cell.VODE b/networks/he-burn/cno-he-burn-33a/inputs.burn_cell.VODE similarity index 100% rename from networks/CNO_He_burn/inputs.burn_cell.VODE rename to networks/he-burn/cno-he-burn-33a/inputs.burn_cell.VODE diff --git a/networks/CNO_He_burn/partition_functions.H b/networks/he-burn/cno-he-burn-33a/partition_functions.H similarity index 100% rename from networks/CNO_He_burn/partition_functions.H rename to networks/he-burn/cno-he-burn-33a/partition_functions.H diff --git a/networks/CNO_He_burn/partition_functions_data.cpp b/networks/he-burn/cno-he-burn-33a/partition_functions_data.cpp similarity index 100% rename from networks/CNO_He_burn/partition_functions_data.cpp rename to networks/he-burn/cno-he-burn-33a/partition_functions_data.cpp diff --git a/networks/CNO_He_burn/pynucastro.net b/networks/he-burn/cno-he-burn-33a/pynucastro.net similarity index 100% rename from networks/CNO_He_burn/pynucastro.net rename to networks/he-burn/cno-he-burn-33a/pynucastro.net diff --git a/networks/CNO_He_burn/reaclib_rates.H b/networks/he-burn/cno-he-burn-33a/reaclib_rates.H similarity index 99% rename from networks/CNO_He_burn/reaclib_rates.H rename to networks/he-burn/cno-he-burn-33a/reaclib_rates.H index f4078948a9..4008b0df88 100644 --- a/networks/CNO_He_burn/reaclib_rates.H +++ b/networks/he-burn/cno-he-burn-33a/reaclib_rates.H @@ -8342,7 +8342,10 @@ fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) template AMREX_GPU_HOST_DEVICE AMREX_INLINE void -fill_approx_rates([[maybe_unused]] const tf_t& tfactors, [[maybe_unused]] T& rate_eval) +fill_approx_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] const amrex::Real rho, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) { [[maybe_unused]] amrex::Real rate{}; diff --git a/networks/CNO_He_burn/table_rates.H b/networks/he-burn/cno-he-burn-33a/table_rates.H similarity index 100% rename from networks/CNO_He_burn/table_rates.H rename to networks/he-burn/cno-he-burn-33a/table_rates.H diff --git a/networks/CNO_He_burn/table_rates_data.cpp b/networks/he-burn/cno-he-burn-33a/table_rates_data.cpp similarity index 100% rename from networks/CNO_He_burn/table_rates_data.cpp rename to networks/he-burn/cno-he-burn-33a/table_rates_data.cpp diff --git a/networks/CNO_He_burn/tfactors.H b/networks/he-burn/cno-he-burn-33a/tfactors.H similarity index 100% rename from networks/CNO_He_burn/tfactors.H rename to networks/he-burn/cno-he-burn-33a/tfactors.H diff --git a/networks/he-burn/he_burn_core.py b/networks/he-burn/he_burn_core.py index 722d631bf3..0f11872bca 100644 --- a/networks/he-burn/he_burn_core.py +++ b/networks/he-burn/he_burn_core.py @@ -9,10 +9,14 @@ def get_core_library(*, include_zn=False, include_iron_peak=False, include_low_ye=False, - do_detailed_balance=False): + do_detailed_balance=False, + extra_nuclei=None): reaclib_lib = pyna.ReacLibLibrary() + if extra_nuclei is None: + extra_nuclei = [] + nuclei = ["p", "he4", "c12", "n13", "o16", "ne20", "na23", "mg24", "si28", "s32", @@ -21,6 +25,8 @@ def get_core_library(*, "al27", "p31", "cl35", "k39", "sc43", "v47", "mn51", "co55"] + nuclei += extra_nuclei + if include_n14_sequence: nuclei += ["n14", "f18", "ne21", "na22"] From 9774471decbb63d7540967ddca9ba2acdfc58f27 Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Sat, 11 Jan 2025 16:25:57 -0500 Subject: [PATCH 2/2] revert --- networks/he-burn/cno-he-burn-33a/actual_rhs.H | 843 ++++++++++++------ .../cno-he-burn-33a/cno_he_burn_33a.py | 2 +- 2 files changed, 554 insertions(+), 291 deletions(-) diff --git a/networks/he-burn/cno-he-burn-33a/actual_rhs.H b/networks/he-burn/cno-he-burn-33a/actual_rhs.H index b35dec71a3..7403615268 100644 --- a/networks/he-burn/cno-he-burn-33a/actual_rhs.H +++ b/networks/he-burn/cno-he-burn-33a/actual_rhs.H @@ -91,6 +91,13 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } + ratraw = rate_eval.screened_rates(k_N13_to_p_C12); + rate_eval.screened_rates(k_N13_to_p_C12) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_N13_to_p_C12); + rate_eval.dscreened_rates_dT(k_N13_to_p_C12) = ratraw * dscor_dt + dratraw_dT * scor; + } + ratraw = rate_eval.screened_rates(k_p_C12_to_N13); rate_eval.screened_rates(k_p_C12_to_N13) *= scor; if constexpr (std::is_same_v) { @@ -100,42 +107,23 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 6.0_rt, 12.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 6.0_rt, 13.0_rt); - static_assert(scn_fac.z1 == 2.0_rt); + static_assert(scn_fac.z1 == 1.0_rt); actual_screen(pstate, scn_fac, scor, dscor_dt); } - ratraw = rate_eval.screened_rates(k_He4_C12_to_O16); - rate_eval.screened_rates(k_He4_C12_to_O16) *= scor; + ratraw = rate_eval.screened_rates(k_N14_to_p_C13); + rate_eval.screened_rates(k_N14_to_p_C13) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_C12_to_O16); - rate_eval.dscreened_rates_dT(k_He4_C12_to_O16) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_N14_to_p_C13); + rate_eval.dscreened_rates_dT(k_N14_to_p_C13) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_C12_to_p_N15); - rate_eval.screened_rates(k_He4_C12_to_p_N15) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_C12_to_p_N15); - rate_eval.dscreened_rates_dT(k_He4_C12_to_p_N15) = 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); - - - static_assert(scn_fac.z1 == 1.0_rt); - - - actual_screen(pstate, scn_fac, scor, dscor_dt); - } - - ratraw = rate_eval.screened_rates(k_p_C13_to_N14); rate_eval.screened_rates(k_p_C13_to_N14) *= scor; if constexpr (std::is_same_v) { @@ -155,6 +143,13 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } + ratraw = rate_eval.screened_rates(k_O14_to_p_N13); + rate_eval.screened_rates(k_O14_to_p_N13) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_O14_to_p_N13); + rate_eval.dscreened_rates_dT(k_O14_to_p_N13) = ratraw * dscor_dt + dratraw_dT * scor; + } + ratraw = rate_eval.screened_rates(k_p_N13_to_O14); rate_eval.screened_rates(k_p_N13_to_O14) *= scor; if constexpr (std::is_same_v) { @@ -174,6 +169,13 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } + ratraw = rate_eval.screened_rates(k_O15_to_p_N14); + rate_eval.screened_rates(k_O15_to_p_N14) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_O15_to_p_N14); + rate_eval.dscreened_rates_dT(k_O15_to_p_N14) = ratraw * dscor_dt + dratraw_dT * scor; + } + ratraw = rate_eval.screened_rates(k_p_N14_to_O15); rate_eval.screened_rates(k_p_N14_to_O15) *= scor; if constexpr (std::is_same_v) { @@ -183,42 +185,23 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 7.0_rt, 14.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 7.0_rt, 15.0_rt); - static_assert(scn_fac.z1 == 2.0_rt); + static_assert(scn_fac.z1 == 1.0_rt); actual_screen(pstate, scn_fac, scor, dscor_dt); } - ratraw = rate_eval.screened_rates(k_He4_N14_to_F18); - rate_eval.screened_rates(k_He4_N14_to_F18) *= scor; + ratraw = rate_eval.screened_rates(k_O16_to_p_N15); + rate_eval.screened_rates(k_O16_to_p_N15) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_N14_to_F18); - rate_eval.dscreened_rates_dT(k_He4_N14_to_F18) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_He4_N14_to_p_O17); - rate_eval.screened_rates(k_He4_N14_to_p_O17) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_N14_to_p_O17); - rate_eval.dscreened_rates_dT(k_He4_N14_to_p_O17) = 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); - - - static_assert(scn_fac.z1 == 1.0_rt); - - - actual_screen(pstate, scn_fac, scor, dscor_dt); + dratraw_dT = rate_eval.dscreened_rates_dT(k_O16_to_p_N15); + rate_eval.dscreened_rates_dT(k_O16_to_p_N15) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_N15_to_O16); rate_eval.screened_rates(k_p_N15_to_O16) *= scor; if constexpr (std::is_same_v) { @@ -226,6 +209,13 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_N15_to_O16) = ratraw * dscor_dt + dratraw_dT * scor; } + ratraw = rate_eval.screened_rates(k_He4_C12_to_p_N15); + rate_eval.screened_rates(k_He4_C12_to_p_N15) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_C12_to_p_N15); + rate_eval.dscreened_rates_dT(k_He4_C12_to_p_N15) = ratraw * dscor_dt + dratraw_dT * scor; + } + ratraw = rate_eval.screened_rates(k_p_N15_to_He4_C12); rate_eval.screened_rates(k_p_N15_to_He4_C12) *= scor; if constexpr (std::is_same_v) { @@ -235,7 +225,7 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 7.0_rt, 15.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 6.0_rt, 12.0_rt); static_assert(scn_fac.z1 == 2.0_rt); @@ -245,101 +235,89 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_He4_N15_to_F19); - rate_eval.screened_rates(k_He4_N15_to_F19) *= scor; + ratraw = rate_eval.screened_rates(k_O16_to_He4_C12); + rate_eval.screened_rates(k_O16_to_He4_C12) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_N15_to_F19); - rate_eval.dscreened_rates_dT(k_He4_N15_to_F19) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_O16_to_He4_C12); + rate_eval.dscreened_rates_dT(k_O16_to_He4_C12) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_N15_to_p_O18); - rate_eval.screened_rates(k_He4_N15_to_p_O18) *= scor; + ratraw = rate_eval.screened_rates(k_He4_C12_to_O16); + rate_eval.screened_rates(k_He4_C12_to_O16) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_N15_to_p_O18); - rate_eval.dscreened_rates_dT(k_He4_N15_to_p_O18) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_C12_to_O16); + rate_eval.dscreened_rates_dT(k_He4_C12_to_O16) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 8.0_rt, 14.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 8.0_rt, 16.0_rt); - static_assert(scn_fac.z1 == 2.0_rt); + static_assert(scn_fac.z1 == 1.0_rt); actual_screen(pstate, scn_fac, scor, dscor_dt); } - ratraw = rate_eval.screened_rates(k_He4_O14_to_Ne18); - rate_eval.screened_rates(k_He4_O14_to_Ne18) *= scor; + ratraw = rate_eval.screened_rates(k_F17_to_p_O16); + rate_eval.screened_rates(k_F17_to_p_O16) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O14_to_Ne18); - rate_eval.dscreened_rates_dT(k_He4_O14_to_Ne18) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_F17_to_p_O16); + rate_eval.dscreened_rates_dT(k_F17_to_p_O16) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_O14_to_p_F17); - rate_eval.screened_rates(k_He4_O14_to_p_F17) *= scor; + ratraw = rate_eval.screened_rates(k_p_O16_to_F17); + rate_eval.screened_rates(k_p_O16_to_F17) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O14_to_p_F17); - rate_eval.dscreened_rates_dT(k_He4_O14_to_p_F17) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O16_to_F17); + rate_eval.dscreened_rates_dT(k_p_O16_to_F17) = 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); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 8.0_rt, 17.0_rt); - static_assert(scn_fac.z1 == 2.0_rt); + static_assert(scn_fac.z1 == 1.0_rt); actual_screen(pstate, scn_fac, scor, dscor_dt); } - ratraw = rate_eval.screened_rates(k_He4_O15_to_Ne19); - rate_eval.screened_rates(k_He4_O15_to_Ne19) *= scor; + ratraw = rate_eval.screened_rates(k_F18_to_p_O17); + rate_eval.screened_rates(k_F18_to_p_O17) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O15_to_Ne19); - rate_eval.dscreened_rates_dT(k_He4_O15_to_Ne19) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_F18_to_p_O17); + rate_eval.dscreened_rates_dT(k_F18_to_p_O17) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_O15_to_p_F18); - rate_eval.screened_rates(k_He4_O15_to_p_F18) *= scor; + ratraw = rate_eval.screened_rates(k_p_O17_to_F18); + rate_eval.screened_rates(k_p_O17_to_F18) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O15_to_p_F18); - rate_eval.dscreened_rates_dT(k_He4_O15_to_p_F18) = ratraw * dscor_dt + dratraw_dT * scor; - } - - - { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 8.0_rt, 16.0_rt); - - - static_assert(scn_fac.z1 == 1.0_rt); - - - actual_screen(pstate, scn_fac, scor, dscor_dt); + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O17_to_F18); + rate_eval.dscreened_rates_dT(k_p_O17_to_F18) = ratraw * dscor_dt + dratraw_dT * scor; } - - ratraw = rate_eval.screened_rates(k_p_O16_to_F17); - rate_eval.screened_rates(k_p_O16_to_F17) *= scor; + ratraw = rate_eval.screened_rates(k_He4_N14_to_p_O17); + rate_eval.screened_rates(k_He4_N14_to_p_O17) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O16_to_F17); - rate_eval.dscreened_rates_dT(k_p_O16_to_F17) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_N14_to_p_O17); + rate_eval.dscreened_rates_dT(k_He4_N14_to_p_O17) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_O16_to_He4_N13); - rate_eval.screened_rates(k_p_O16_to_He4_N13) *= scor; + ratraw = rate_eval.screened_rates(k_p_O17_to_He4_N14); + rate_eval.screened_rates(k_p_O17_to_He4_N14) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13); - rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O17_to_He4_N14); + rate_eval.dscreened_rates_dT(k_p_O17_to_He4_N14) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 8.0_rt, 16.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 7.0_rt, 14.0_rt); static_assert(scn_fac.z1 == 2.0_rt); @@ -349,23 +327,23 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_He4_O16_to_Ne20); - rate_eval.screened_rates(k_He4_O16_to_Ne20) *= scor; + ratraw = rate_eval.screened_rates(k_F18_to_He4_N14); + rate_eval.screened_rates(k_F18_to_He4_N14) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20); - rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_F18_to_He4_N14); + rate_eval.dscreened_rates_dT(k_F18_to_He4_N14) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_O16_to_p_F19); - rate_eval.screened_rates(k_He4_O16_to_p_F19) *= scor; + ratraw = rate_eval.screened_rates(k_He4_N14_to_F18); + rate_eval.screened_rates(k_He4_N14_to_F18) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O16_to_p_F19); - rate_eval.dscreened_rates_dT(k_He4_O16_to_p_F19) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_N14_to_F18); + rate_eval.dscreened_rates_dT(k_He4_N14_to_F18) = 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); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 8.0_rt, 18.0_rt); static_assert(scn_fac.z1 == 1.0_rt); @@ -375,23 +353,37 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_p_O17_to_F18); - rate_eval.screened_rates(k_p_O17_to_F18) *= scor; + ratraw = rate_eval.screened_rates(k_F19_to_p_O18); + rate_eval.screened_rates(k_F19_to_p_O18) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O17_to_F18); - rate_eval.dscreened_rates_dT(k_p_O17_to_F18) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_F19_to_p_O18); + rate_eval.dscreened_rates_dT(k_F19_to_p_O18) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_O17_to_He4_N14); - rate_eval.screened_rates(k_p_O17_to_He4_N14) *= scor; + ratraw = rate_eval.screened_rates(k_p_O18_to_F19); + rate_eval.screened_rates(k_p_O18_to_F19) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O17_to_He4_N14); - rate_eval.dscreened_rates_dT(k_p_O17_to_He4_N14) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O18_to_F19); + rate_eval.dscreened_rates_dT(k_p_O18_to_F19) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_He4_N15_to_p_O18); + rate_eval.screened_rates(k_He4_N15_to_p_O18) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_N15_to_p_O18); + rate_eval.dscreened_rates_dT(k_He4_N15_to_p_O18) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_p_O18_to_He4_N15); + rate_eval.screened_rates(k_p_O18_to_He4_N15) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O18_to_He4_N15); + rate_eval.dscreened_rates_dT(k_p_O18_to_He4_N15) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 8.0_rt, 17.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 7.0_rt, 15.0_rt); static_assert(scn_fac.z1 == 2.0_rt); @@ -401,16 +393,23 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_He4_O17_to_Ne21); - rate_eval.screened_rates(k_He4_O17_to_Ne21) *= scor; + ratraw = rate_eval.screened_rates(k_F19_to_He4_N15); + rate_eval.screened_rates(k_F19_to_He4_N15) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O17_to_Ne21); - rate_eval.dscreened_rates_dT(k_He4_O17_to_Ne21) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_F19_to_He4_N15); + rate_eval.dscreened_rates_dT(k_F19_to_He4_N15) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_He4_N15_to_F19); + rate_eval.screened_rates(k_He4_N15_to_F19) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_N15_to_F19); + rate_eval.dscreened_rates_dT(k_He4_N15_to_F19) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 8.0_rt, 18.0_rt); + 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); @@ -420,37 +419,51 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_p_O18_to_F19); - rate_eval.screened_rates(k_p_O18_to_F19) *= scor; + ratraw = rate_eval.screened_rates(k_Ne18_to_p_F17); + rate_eval.screened_rates(k_Ne18_to_p_F17) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O18_to_F19); - rate_eval.dscreened_rates_dT(k_p_O18_to_F19) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ne18_to_p_F17); + rate_eval.dscreened_rates_dT(k_Ne18_to_p_F17) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_O18_to_He4_N15); - rate_eval.screened_rates(k_p_O18_to_He4_N15) *= scor; + ratraw = rate_eval.screened_rates(k_p_F17_to_Ne18); + rate_eval.screened_rates(k_p_F17_to_Ne18) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O18_to_He4_N15); - rate_eval.dscreened_rates_dT(k_p_O18_to_He4_N15) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_F17_to_Ne18); + rate_eval.dscreened_rates_dT(k_p_F17_to_Ne18) = 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); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 8.0_rt, 14.0_rt); - static_assert(scn_fac.z1 == 1.0_rt); + static_assert(scn_fac.z1 == 2.0_rt); actual_screen(pstate, scn_fac, scor, dscor_dt); } - ratraw = rate_eval.screened_rates(k_p_F17_to_Ne18); - rate_eval.screened_rates(k_p_F17_to_Ne18) *= scor; + ratraw = rate_eval.screened_rates(k_Ne18_to_He4_O14); + rate_eval.screened_rates(k_Ne18_to_He4_O14) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_F17_to_Ne18); - rate_eval.dscreened_rates_dT(k_p_F17_to_Ne18) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ne18_to_He4_O14); + rate_eval.dscreened_rates_dT(k_Ne18_to_He4_O14) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_He4_O14_to_Ne18); + rate_eval.screened_rates(k_He4_O14_to_Ne18) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O14_to_Ne18); + rate_eval.dscreened_rates_dT(k_He4_O14_to_Ne18) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_He4_O14_to_p_F17); + rate_eval.screened_rates(k_He4_O14_to_p_F17) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O14_to_p_F17); + rate_eval.dscreened_rates_dT(k_He4_O14_to_p_F17) = ratraw * dscor_dt + dratraw_dT * scor; } ratraw = rate_eval.screened_rates(k_p_F17_to_He4_O14); @@ -472,6 +485,13 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } + ratraw = rate_eval.screened_rates(k_Ne19_to_p_F18); + rate_eval.screened_rates(k_Ne19_to_p_F18) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ne19_to_p_F18); + rate_eval.dscreened_rates_dT(k_Ne19_to_p_F18) = ratraw * dscor_dt + dratraw_dT * scor; + } + ratraw = rate_eval.screened_rates(k_p_F18_to_Ne19); rate_eval.screened_rates(k_p_F18_to_Ne19) *= scor; if constexpr (std::is_same_v) { @@ -479,6 +499,13 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_F18_to_Ne19) = ratraw * dscor_dt + dratraw_dT * scor; } + ratraw = rate_eval.screened_rates(k_He4_O15_to_p_F18); + rate_eval.screened_rates(k_He4_O15_to_p_F18) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O15_to_p_F18); + rate_eval.dscreened_rates_dT(k_He4_O15_to_p_F18) = ratraw * dscor_dt + dratraw_dT * scor; + } + ratraw = rate_eval.screened_rates(k_p_F18_to_He4_O15); rate_eval.screened_rates(k_p_F18_to_He4_O15) *= scor; if constexpr (std::is_same_v) { @@ -488,7 +515,7 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 9.0_rt, 18.0_rt); + 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); @@ -498,18 +525,18 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_He4_F18_to_Na22); - rate_eval.screened_rates(k_He4_F18_to_Na22) *= scor; + ratraw = rate_eval.screened_rates(k_Ne19_to_He4_O15); + rate_eval.screened_rates(k_Ne19_to_He4_O15) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_F18_to_Na22); - rate_eval.dscreened_rates_dT(k_He4_F18_to_Na22) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ne19_to_He4_O15); + rate_eval.dscreened_rates_dT(k_Ne19_to_He4_O15) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_F18_to_p_Ne21); - rate_eval.screened_rates(k_He4_F18_to_p_Ne21) *= scor; + ratraw = rate_eval.screened_rates(k_He4_O15_to_Ne19); + rate_eval.screened_rates(k_He4_O15_to_Ne19) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_F18_to_p_Ne21); - rate_eval.dscreened_rates_dT(k_He4_F18_to_p_Ne21) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O15_to_Ne19); + rate_eval.dscreened_rates_dT(k_He4_O15_to_Ne19) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -524,6 +551,13 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } + ratraw = rate_eval.screened_rates(k_Ne20_to_p_F19); + rate_eval.screened_rates(k_Ne20_to_p_F19) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ne20_to_p_F19); + rate_eval.dscreened_rates_dT(k_Ne20_to_p_F19) = ratraw * dscor_dt + dratraw_dT * scor; + } + ratraw = rate_eval.screened_rates(k_p_F19_to_Ne20); rate_eval.screened_rates(k_p_F19_to_Ne20) *= scor; if constexpr (std::is_same_v) { @@ -531,6 +565,13 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_F19_to_Ne20) = ratraw * dscor_dt + dratraw_dT * scor; } + ratraw = rate_eval.screened_rates(k_He4_O16_to_p_F19); + rate_eval.screened_rates(k_He4_O16_to_p_F19) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O16_to_p_F19); + rate_eval.dscreened_rates_dT(k_He4_O16_to_p_F19) = ratraw * dscor_dt + dratraw_dT * scor; + } + ratraw = rate_eval.screened_rates(k_p_F19_to_He4_O16); rate_eval.screened_rates(k_p_F19_to_He4_O16) *= scor; if constexpr (std::is_same_v) { @@ -539,6 +580,124 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } + { + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 8.0_rt, 16.0_rt); + + + static_assert(scn_fac.z1 == 2.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_Ne20_to_He4_O16); + rate_eval.screened_rates(k_Ne20_to_He4_O16) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16); + rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_He4_O16_to_Ne20); + rate_eval.screened_rates(k_He4_O16_to_Ne20) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20); + rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 8.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_Ne21_to_He4_O17); + rate_eval.screened_rates(k_Ne21_to_He4_O17) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ne21_to_He4_O17); + rate_eval.dscreened_rates_dT(k_Ne21_to_He4_O17) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_He4_O17_to_Ne21); + rate_eval.screened_rates(k_He4_O17_to_Ne21) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O17_to_Ne21); + rate_eval.dscreened_rates_dT(k_He4_O17_to_Ne21) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 10.0_rt, 21.0_rt); + + + static_assert(scn_fac.z1 == 1.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_Na22_to_p_Ne21); + rate_eval.screened_rates(k_Na22_to_p_Ne21) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_Na22_to_p_Ne21); + rate_eval.dscreened_rates_dT(k_Na22_to_p_Ne21) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_p_Ne21_to_Na22); + rate_eval.screened_rates(k_p_Ne21_to_Na22) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Ne21_to_Na22); + rate_eval.dscreened_rates_dT(k_p_Ne21_to_Na22) = 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); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_Na22_to_He4_F18); + rate_eval.screened_rates(k_Na22_to_He4_F18) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_Na22_to_He4_F18); + rate_eval.dscreened_rates_dT(k_Na22_to_He4_F18) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_He4_F18_to_Na22); + rate_eval.screened_rates(k_He4_F18_to_Na22) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_F18_to_Na22); + rate_eval.dscreened_rates_dT(k_He4_F18_to_Na22) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_He4_F18_to_p_Ne21); + rate_eval.screened_rates(k_He4_F18_to_p_Ne21) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_F18_to_p_Ne21); + rate_eval.dscreened_rates_dT(k_He4_F18_to_p_Ne21) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_p_Ne21_to_He4_F18); + rate_eval.screened_rates(k_p_Ne21_to_He4_F18) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Ne21_to_He4_F18); + rate_eval.dscreened_rates_dT(k_p_Ne21_to_He4_F18) = ratraw * dscor_dt + dratraw_dT * scor; + } + + { constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 9.0_rt, 19.0_rt); @@ -550,6 +709,13 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } + ratraw = rate_eval.screened_rates(k_Na23_to_He4_F19); + rate_eval.screened_rates(k_Na23_to_He4_F19) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_Na23_to_He4_F19); + rate_eval.dscreened_rates_dT(k_Na23_to_He4_F19) = ratraw * dscor_dt + dratraw_dT * scor; + } + ratraw = rate_eval.screened_rates(k_He4_F19_to_Na23); rate_eval.screened_rates(k_He4_F19_to_Na23) *= scor; if constexpr (std::is_same_v) { @@ -569,6 +735,13 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } + ratraw = rate_eval.screened_rates(k_Mg22_to_He4_Ne18); + rate_eval.screened_rates(k_Mg22_to_He4_Ne18) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_Mg22_to_He4_Ne18); + rate_eval.dscreened_rates_dT(k_Mg22_to_He4_Ne18) = ratraw * dscor_dt + dratraw_dT * scor; + } + ratraw = rate_eval.screened_rates(k_He4_Ne18_to_Mg22); rate_eval.screened_rates(k_He4_Ne18_to_Mg22) *= scor; if constexpr (std::is_same_v) { @@ -578,21 +751,28 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 10.0_rt, 20.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 11.0_rt, 23.0_rt); - static_assert(scn_fac.z1 == 2.0_rt); + static_assert(scn_fac.z1 == 1.0_rt); actual_screen(pstate, scn_fac, scor, dscor_dt); } - ratraw = rate_eval.screened_rates(k_He4_Ne20_to_Mg24); - rate_eval.screened_rates(k_He4_Ne20_to_Mg24) *= scor; + ratraw = rate_eval.screened_rates(k_Mg24_to_p_Na23); + rate_eval.screened_rates(k_Mg24_to_p_Na23) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24); - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23); + rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_p_Na23_to_Mg24); + rate_eval.screened_rates(k_p_Na23_to_Mg24) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24); + rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24) = ratraw * dscor_dt + dratraw_dT * scor; } ratraw = rate_eval.screened_rates(k_He4_Ne20_to_p_Na23); @@ -602,35 +782,42 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Ne20_to_p_Na23) = ratraw * dscor_dt + dratraw_dT * scor; } + ratraw = rate_eval.screened_rates(k_p_Na23_to_He4_Ne20); + rate_eval.screened_rates(k_p_Na23_to_He4_Ne20) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20); + rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20) = ratraw * dscor_dt + dratraw_dT * scor; + } + { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 10.0_rt, 21.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 10.0_rt, 20.0_rt); - static_assert(scn_fac.z1 == 1.0_rt); + static_assert(scn_fac.z1 == 2.0_rt); actual_screen(pstate, scn_fac, scor, dscor_dt); } - ratraw = rate_eval.screened_rates(k_p_Ne21_to_Na22); - rate_eval.screened_rates(k_p_Ne21_to_Na22) *= scor; + ratraw = rate_eval.screened_rates(k_Mg24_to_He4_Ne20); + rate_eval.screened_rates(k_Mg24_to_He4_Ne20) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Ne21_to_Na22); - rate_eval.dscreened_rates_dT(k_p_Ne21_to_Na22) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20); + rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_Ne21_to_He4_F18); - rate_eval.screened_rates(k_p_Ne21_to_He4_F18) *= scor; + ratraw = rate_eval.screened_rates(k_He4_Ne20_to_Mg24); + rate_eval.screened_rates(k_He4_Ne20_to_Mg24) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Ne21_to_He4_F18); - rate_eval.dscreened_rates_dT(k_p_Ne21_to_He4_F18) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24); + rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24) = ratraw * dscor_dt + dratraw_dT * scor; } { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 11.0_rt, 23.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 13.0_rt, 27.0_rt); static_assert(scn_fac.z1 == 1.0_rt); @@ -640,18 +827,32 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_p_Na23_to_Mg24); - rate_eval.screened_rates(k_p_Na23_to_Mg24) *= scor; + ratraw = rate_eval.screened_rates(k_Si28_to_p_Al27); + rate_eval.screened_rates(k_Si28_to_p_Al27) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27); + rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_p_Al27_to_Si28); + rate_eval.screened_rates(k_p_Al27_to_Si28) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28); + rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_He4_Mg24_to_p_Al27); + rate_eval.screened_rates(k_He4_Mg24_to_p_Al27) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24); - rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27); + rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_Na23_to_He4_Ne20); - rate_eval.screened_rates(k_p_Na23_to_He4_Ne20) *= scor; + ratraw = rate_eval.screened_rates(k_p_Al27_to_He4_Mg24); + rate_eval.screened_rates(k_p_Al27_to_He4_Mg24) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20); - rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24); + rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -666,6 +867,13 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } + ratraw = rate_eval.screened_rates(k_Si28_to_He4_Mg24); + rate_eval.screened_rates(k_Si28_to_He4_Mg24) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24); + rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24) = ratraw * dscor_dt + dratraw_dT * scor; + } + ratraw = rate_eval.screened_rates(k_He4_Mg24_to_Si28); rate_eval.screened_rates(k_He4_Mg24_to_Si28) *= scor; if constexpr (std::is_same_v) { @@ -673,16 +881,9 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Mg24_to_Si28) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_Mg24_to_p_Al27); - rate_eval.screened_rates(k_He4_Mg24_to_p_Al27) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27); - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27) = ratraw * dscor_dt + dratraw_dT * scor; - } - { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 13.0_rt, 27.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 15.0_rt, 31.0_rt); static_assert(scn_fac.z1 == 1.0_rt); @@ -692,18 +893,32 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - ratraw = rate_eval.screened_rates(k_p_Al27_to_Si28); - rate_eval.screened_rates(k_p_Al27_to_Si28) *= scor; + ratraw = rate_eval.screened_rates(k_S32_to_p_P31); + rate_eval.screened_rates(k_S32_to_p_P31) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28); - rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_S32_to_p_P31); + rate_eval.dscreened_rates_dT(k_S32_to_p_P31) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_Al27_to_He4_Mg24); - rate_eval.screened_rates(k_p_Al27_to_He4_Mg24) *= scor; + ratraw = rate_eval.screened_rates(k_p_P31_to_S32); + rate_eval.screened_rates(k_p_P31_to_S32) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24); - rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_P31_to_S32); + rate_eval.dscreened_rates_dT(k_p_P31_to_S32) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_He4_Si28_to_p_P31); + rate_eval.screened_rates(k_He4_Si28_to_p_P31) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31); + rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_p_P31_to_He4_Si28); + rate_eval.screened_rates(k_p_P31_to_He4_Si28) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28); + rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -718,6 +933,13 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } + ratraw = rate_eval.screened_rates(k_S32_to_He4_Si28); + rate_eval.screened_rates(k_S32_to_He4_Si28) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28); + rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28) = ratraw * dscor_dt + dratraw_dT * scor; + } + ratraw = rate_eval.screened_rates(k_He4_Si28_to_S32); rate_eval.screened_rates(k_He4_Si28_to_S32) *= scor; if constexpr (std::is_same_v) { @@ -725,37 +947,43 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Si28_to_S32) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_Si28_to_p_P31); - rate_eval.screened_rates(k_He4_Si28_to_p_P31) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31); - rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31) = ratraw * dscor_dt + dratraw_dT * scor; + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 2.0_rt, 4.0_rt); + + + static_assert(scn_fac.z1 == 2.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); } + { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 15.0_rt, 31.0_rt); + constexpr auto scn_fac2 = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 4.0_rt, 8.0_rt); - static_assert(scn_fac.z1 == 1.0_rt); + static_assert(scn_fac2.z1 == 2.0_rt); - actual_screen(pstate, scn_fac, scor, dscor_dt); + actual_screen(pstate, scn_fac2, scor2, dscor2_dt); + } - ratraw = rate_eval.screened_rates(k_p_P31_to_S32); - rate_eval.screened_rates(k_p_P31_to_S32) *= scor; + ratraw = rate_eval.screened_rates(k_C12_to_He4_He4_He4); + rate_eval.screened_rates(k_C12_to_He4_He4_He4) *= scor * scor2; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_P31_to_S32); - rate_eval.dscreened_rates_dT(k_p_P31_to_S32) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_C12_to_He4_He4_He4); + rate_eval.dscreened_rates_dT(k_C12_to_He4_He4_He4) = ratraw * (scor * dscor2_dt + dscor_dt * scor2) + dratraw_dT * scor * scor2; } - ratraw = rate_eval.screened_rates(k_p_P31_to_He4_Si28); - rate_eval.screened_rates(k_p_P31_to_He4_Si28) *= scor; + ratraw = rate_eval.screened_rates(k_He4_He4_He4_to_C12); + rate_eval.screened_rates(k_He4_He4_He4_to_C12) *= scor * scor2; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28); - rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12); + rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12) = ratraw * (scor * dscor2_dt + dscor_dt * scor2) + dratraw_dT * scor * scor2; } @@ -810,6 +1038,13 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16) = ratraw * dscor_dt + dratraw_dT * scor; } + ratraw = rate_eval.screened_rates(k_p_O16_to_He4_N13); + rate_eval.screened_rates(k_p_O16_to_He4_N13) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13); + rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13) = ratraw * dscor_dt + dratraw_dT * scor; + } + { constexpr auto scn_fac = scrn::calculate_screen_factor(6.0_rt, 12.0_rt, 8.0_rt, 16.0_rt); @@ -895,6 +1130,13 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_F17_to_p_Ne20) = ratraw * dscor_dt + dratraw_dT * scor; } + ratraw = rate_eval.screened_rates(k_p_Ne20_to_He4_F17); + rate_eval.screened_rates(k_p_Ne20_to_He4_F17) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Ne20_to_He4_F17); + rate_eval.dscreened_rates_dT(k_p_Ne20_to_He4_F17) = ratraw * dscor_dt + dratraw_dT * scor; + } + { constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 10.0_rt, 19.0_rt); @@ -914,37 +1156,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Ne19_to_p_Na22) = ratraw * dscor_dt + dratraw_dT * scor; } - - { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 10.0_rt, 20.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_Ne20_to_He4_F17); - rate_eval.screened_rates(k_p_Ne20_to_He4_F17) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Ne20_to_He4_F17); - rate_eval.dscreened_rates_dT(k_p_Ne20_to_He4_F17) = ratraw * dscor_dt + dratraw_dT * scor; - } - - - { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 11.0_rt, 22.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_Na22_to_He4_Ne19); rate_eval.screened_rates(k_p_Na22_to_He4_Ne19) *= scor; if constexpr (std::is_same_v) { @@ -953,38 +1164,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } - { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 2.0_rt, 4.0_rt); - - - static_assert(scn_fac.z1 == 2.0_rt); - - - actual_screen(pstate, scn_fac, scor, dscor_dt); - } - - - - { - constexpr auto scn_fac2 = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 4.0_rt, 8.0_rt); - - - static_assert(scn_fac2.z1 == 2.0_rt); - - - actual_screen(pstate, scn_fac2, scor2, dscor2_dt); - - } - - - ratraw = rate_eval.screened_rates(k_He4_He4_He4_to_C12); - rate_eval.screened_rates(k_He4_He4_He4_to_C12) *= scor * scor2; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12); - rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12) = 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, 16.0_rt, 32.0_rt); @@ -1003,11 +1182,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_S32_to_p_Cl35_removed); - rate_eval.screened_rates(k_He4_S32_to_p_Cl35_removed) *= scor; + ratraw = rate_eval.screened_rates(k_Ar36_to_He4_S32_removed); + rate_eval.screened_rates(k_Ar36_to_He4_S32_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_removed); - rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_removed); + rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_removed) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -1022,6 +1201,13 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } + ratraw = rate_eval.screened_rates(k_He4_S32_to_p_Cl35_removed); + rate_eval.screened_rates(k_He4_S32_to_p_Cl35_removed) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_removed); + rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_removed) = ratraw * dscor_dt + dratraw_dT * scor; + } + ratraw = rate_eval.screened_rates(k_p_Cl35_to_Ar36_removed); rate_eval.screened_rates(k_p_Cl35_to_Ar36_removed) *= scor; if constexpr (std::is_same_v) { @@ -1029,6 +1215,13 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_removed) = ratraw * dscor_dt + dratraw_dT * scor; } + ratraw = rate_eval.screened_rates(k_Ar36_to_p_Cl35_removed); + rate_eval.screened_rates(k_Ar36_to_p_Cl35_removed) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_removed); + rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_removed) = ratraw * dscor_dt + dratraw_dT * scor; + } + ratraw = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_removed); rate_eval.screened_rates(k_p_Cl35_to_He4_S32_removed) *= scor; if constexpr (std::is_same_v) { @@ -1055,11 +1248,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_Ar36_to_p_K39_removed); - rate_eval.screened_rates(k_He4_Ar36_to_p_K39_removed) *= scor; + ratraw = rate_eval.screened_rates(k_Ca40_to_He4_Ar36_removed); + rate_eval.screened_rates(k_Ca40_to_He4_Ar36_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_removed); - rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_removed); + rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_removed) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -1074,6 +1267,13 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } + ratraw = rate_eval.screened_rates(k_He4_Ar36_to_p_K39_removed); + rate_eval.screened_rates(k_He4_Ar36_to_p_K39_removed) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_removed); + rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_removed) = ratraw * dscor_dt + dratraw_dT * scor; + } + ratraw = rate_eval.screened_rates(k_p_K39_to_Ca40_removed); rate_eval.screened_rates(k_p_K39_to_Ca40_removed) *= scor; if constexpr (std::is_same_v) { @@ -1081,6 +1281,13 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_removed) = ratraw * dscor_dt + dratraw_dT * scor; } + ratraw = rate_eval.screened_rates(k_Ca40_to_p_K39_removed); + rate_eval.screened_rates(k_Ca40_to_p_K39_removed) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_removed); + rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_removed) = ratraw * dscor_dt + dratraw_dT * scor; + } + ratraw = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_removed); rate_eval.screened_rates(k_p_K39_to_He4_Ar36_removed) *= scor; if constexpr (std::is_same_v) { @@ -1107,11 +1314,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_removed); - rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_removed) *= scor; + ratraw = rate_eval.screened_rates(k_Ti44_to_He4_Ca40_removed); + rate_eval.screened_rates(k_Ti44_to_He4_Ca40_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_removed); - rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_removed); + rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_removed) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -1126,6 +1333,13 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } + ratraw = rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_removed); + rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_removed) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_removed); + rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_removed) = ratraw * dscor_dt + dratraw_dT * scor; + } + ratraw = rate_eval.screened_rates(k_p_Sc43_to_Ti44_removed); rate_eval.screened_rates(k_p_Sc43_to_Ti44_removed) *= scor; if constexpr (std::is_same_v) { @@ -1133,6 +1347,13 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_removed) = ratraw * dscor_dt + dratraw_dT * scor; } + ratraw = rate_eval.screened_rates(k_Ti44_to_p_Sc43_removed); + rate_eval.screened_rates(k_Ti44_to_p_Sc43_removed) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_removed); + rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_removed) = ratraw * dscor_dt + dratraw_dT * scor; + } + ratraw = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_removed); rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_removed) *= scor; if constexpr (std::is_same_v) { @@ -1159,11 +1380,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_He4_Ti44_to_p_V47_removed); - rate_eval.screened_rates(k_He4_Ti44_to_p_V47_removed) *= scor; + ratraw = rate_eval.screened_rates(k_Cr48_to_He4_Ti44_removed); + rate_eval.screened_rates(k_Cr48_to_He4_Ti44_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_removed); - rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_removed); + rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_removed) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -1178,6 +1399,13 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } + ratraw = rate_eval.screened_rates(k_He4_Ti44_to_p_V47_removed); + rate_eval.screened_rates(k_He4_Ti44_to_p_V47_removed) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_removed); + rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_removed) = ratraw * dscor_dt + dratraw_dT * scor; + } + ratraw = rate_eval.screened_rates(k_p_V47_to_Cr48_removed); rate_eval.screened_rates(k_p_V47_to_Cr48_removed) *= scor; if constexpr (std::is_same_v) { @@ -1185,6 +1413,13 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_removed) = ratraw * dscor_dt + dratraw_dT * scor; } + ratraw = rate_eval.screened_rates(k_Cr48_to_p_V47_removed); + rate_eval.screened_rates(k_Cr48_to_p_V47_removed) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_removed); + rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_removed) = ratraw * dscor_dt + dratraw_dT * scor; + } + ratraw = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_removed); rate_eval.screened_rates(k_p_V47_to_He4_Ti44_removed) *= scor; if constexpr (std::is_same_v) { @@ -1218,6 +1453,20 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Cr48_to_p_Mn51_removed) = ratraw * dscor_dt + dratraw_dT * scor; } + ratraw = rate_eval.screened_rates(k_Fe52_to_He4_Cr48_removed); + rate_eval.screened_rates(k_Fe52_to_He4_Cr48_removed) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_removed); + rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_removed) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_removed); + rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_removed) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_removed); + rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_removed) = ratraw * dscor_dt + dratraw_dT * scor; + } + { constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 25.0_rt, 51.0_rt); @@ -1237,11 +1486,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_removed); - rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_removed) *= scor; + ratraw = rate_eval.screened_rates(k_Fe52_to_p_Mn51_removed); + rate_eval.screened_rates(k_Fe52_to_p_Mn51_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_removed); - rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_removed); + rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_removed) = ratraw * dscor_dt + dratraw_dT * scor; } @@ -1270,6 +1519,20 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_Co55_removed) = ratraw * dscor_dt + dratraw_dT * scor; } + ratraw = rate_eval.screened_rates(k_Ni56_to_He4_Fe52_removed); + rate_eval.screened_rates(k_Ni56_to_He4_Fe52_removed) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_removed); + rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_removed) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_removed); + rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_removed) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_removed); + rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_removed) = ratraw * dscor_dt + dratraw_dT * scor; + } + { constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 27.0_rt, 55.0_rt); @@ -1289,11 +1552,11 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_removed) = ratraw * dscor_dt + dratraw_dT * scor; } - ratraw = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_removed); - rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_removed) *= scor; + ratraw = rate_eval.screened_rates(k_Ni56_to_p_Co55_removed); + rate_eval.screened_rates(k_Ni56_to_p_Co55_removed) *= scor; if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_removed); - rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_removed) = ratraw * dscor_dt + dratraw_dT * scor; + dratraw_dT = rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_removed); + rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_removed) = ratraw * dscor_dt + dratraw_dT * scor; } diff --git a/networks/he-burn/cno-he-burn-33a/cno_he_burn_33a.py b/networks/he-burn/cno-he-burn-33a/cno_he_burn_33a.py index 34f4282ab4..3e09f97928 100644 --- a/networks/he-burn/cno-he-burn-33a/cno_he_burn_33a.py +++ b/networks/he-burn/cno-he-burn-33a/cno_he_burn_33a.py @@ -23,7 +23,7 @@ def doit(): extra_nuclei=extra_reactants, do_detailed_balance=DO_DERIVED_RATES) - net = AmrexAstroCxxNetwork(libraries=[subch], symmetric_screening=False) + net = AmrexAstroCxxNetwork(libraries=[subch], symmetric_screening=True) net.make_ap_pg_approx(intermediate_nuclei=["cl35", "k39", "sc43", "v47", "mn51", "co55"]) net.remove_nuclei(["cl35", "k39", "sc43", "v47", "mn51", "co55"])