From 81a738c8866a55cac7872407f6ef7fdfb5c8f7d4 Mon Sep 17 00:00:00 2001 From: Alexander Smith Date: Sat, 8 Feb 2025 15:20:43 -0500 Subject: [PATCH 01/10] Delete duplicated network --- networks/nova/Make.package | 1 + networks/nova/actual_network.H | 124 +- networks/nova/actual_network_data.cpp | 50 +- networks/nova/actual_rhs.H | 330 +++- networks/nova/inputs.burn_cell.VODE | 4 + networks/nova/network_plot.py | 21 - networks/nova/nova.png | Bin 47467 -> 56059 bytes networks/nova/nova.py | 26 +- networks/nova/partition_functions.H | 27 +- networks/nova/partition_functions_data.cpp | 14 + networks/nova/pynucastro.net | 4 + networks/nova/reaclib_rates.H | 528 +++++- networks/nova2/Make.package | 14 - networks/nova2/_parameters | 2 - networks/nova2/actual_network.H | 234 --- networks/nova2/actual_network_data.cpp | 46 - networks/nova2/actual_rhs.H | 1179 ------------- networks/nova2/inputs.burn_cell.VODE | 43 - networks/nova2/nova.png | Bin 63679 -> 0 bytes networks/nova2/nova2.py | 25 - networks/nova2/partition_functions.H | 167 -- networks/nova2/pynucastro.net | 17 - networks/nova2/reaclib_rates.H | 1786 -------------------- networks/nova2/table_rates.H | 399 ----- networks/nova2/table_rates_data.cpp | 23 - networks/nova2/tfactors.H | 34 - 26 files changed, 1021 insertions(+), 4077 deletions(-) delete mode 100644 networks/nova/network_plot.py create mode 100644 networks/nova/partition_functions_data.cpp delete mode 100644 networks/nova2/Make.package delete mode 100644 networks/nova2/_parameters delete mode 100644 networks/nova2/actual_network.H delete mode 100644 networks/nova2/actual_network_data.cpp delete mode 100644 networks/nova2/actual_rhs.H delete mode 100644 networks/nova2/inputs.burn_cell.VODE delete mode 100644 networks/nova2/nova.png delete mode 100644 networks/nova2/nova2.py delete mode 100644 networks/nova2/partition_functions.H delete mode 100644 networks/nova2/pynucastro.net delete mode 100644 networks/nova2/reaclib_rates.H delete mode 100644 networks/nova2/table_rates.H delete mode 100644 networks/nova2/table_rates_data.cpp delete mode 100644 networks/nova2/tfactors.H diff --git a/networks/nova/Make.package b/networks/nova/Make.package index 39c65eca7b..3c406e47f1 100644 --- a/networks/nova/Make.package +++ b/networks/nova/Make.package @@ -5,6 +5,7 @@ ifeq ($(USE_REACT),TRUE) CEXE_headers += actual_network.H CEXE_headers += tfactors.H CEXE_headers += partition_functions.H + CEXE_sources += partition_functions_data.cpp CEXE_headers += actual_rhs.H CEXE_headers += reaclib_rates.H CEXE_headers += table_rates.H diff --git a/networks/nova/actual_network.H b/networks/nova/actual_network.H index 49024f72e2..3c7c18409b 100644 --- a/networks/nova/actual_network.H +++ b/networks/nova/actual_network.H @@ -29,41 +29,53 @@ namespace network if constexpr (spec == H1) { return 0.0_rt; } + else if constexpr (spec == H2) { + return 2.2245662689997516_rt; + } + else if constexpr (spec == He3) { + return 7.718041347999588_rt; + } else if constexpr (spec == He4) { - return 28.29566_rt; + return 28.295662457999697_rt; + } + else if constexpr (spec == Be7) { + return 37.60083855599987_rt; + } + else if constexpr (spec == B8) { + return 37.7372096199997_rt; } else if constexpr (spec == C12) { - return 92.16172800000001_rt; + return 92.16173498399803_rt; } else if constexpr (spec == C13) { - return 97.108037_rt; + return 97.10804378399916_rt; } else if constexpr (spec == N13) { - return 94.105219_rt; + return 94.10522604799917_rt; } else if constexpr (spec == N14) { - return 104.65859599999999_rt; + return 104.65860734799753_rt; } else if constexpr (spec == N15) { - return 115.4919_rt; + return 115.49190414799887_rt; } else if constexpr (spec == O14) { - return 98.731892_rt; + return 98.73189611199996_rt; } else if constexpr (spec == O15) { - return 111.95538_rt; + return 111.95539521199862_rt; } else if constexpr (spec == O16) { - return 127.619296_rt; + return 127.6193154119992_rt; } else if constexpr (spec == O17) { - return 131.76237600000002_rt; + return 131.76239561199873_rt; } else if constexpr (spec == F17) { - return 128.21957600000002_rt; + return 128.21958437599824_rt; } else if constexpr (spec == F18) { - return 137.369484_rt; + return 137.36950247599816_rt; } @@ -125,27 +137,39 @@ namespace Rates k_O14_to_N14_weak_wc12 = 2, k_O15_to_N15_weak_wc12 = 3, k_F17_to_O17_weak_wc12 = 4, - k_p_C12_to_N13 = 5, - k_He4_C12_to_O16 = 6, - k_p_C13_to_N14 = 7, - k_p_N13_to_O14 = 8, - k_p_N14_to_O15 = 9, - k_He4_N14_to_F18 = 10, - k_p_N15_to_O16 = 11, - k_p_O16_to_F17 = 12, - k_p_O17_to_F18 = 13, - k_He4_N13_to_p_O16 = 14, - k_p_N15_to_He4_C12 = 15, - k_He4_O14_to_p_F17 = 16, - k_p_O17_to_He4_N14 = 17, - k_p_F18_to_He4_O15 = 18, - k_He4_He4_He4_to_C12 = 19, + k_B8_to_He4_He4_weak_wc12 = 5, + k_p_p_to_d_weak_bet_pos_ = 6, + k_p_p_to_d_weak_electron_capture = 7, + k_p_d_to_He3 = 8, + k_d_d_to_He4 = 9, + k_p_He3_to_He4_weak_bet_pos_ = 10, + k_He4_He3_to_Be7 = 11, + k_p_Be7_to_B8 = 12, + k_p_C12_to_N13 = 13, + k_He4_C12_to_O16 = 14, + k_p_C13_to_N14 = 15, + k_p_N13_to_O14 = 16, + k_p_N14_to_O15 = 17, + k_He4_N14_to_F18 = 18, + k_p_N15_to_O16 = 19, + k_p_O16_to_F17 = 20, + k_p_O17_to_F18 = 21, + k_d_He3_to_p_He4 = 22, + k_He4_N13_to_p_O16 = 23, + k_p_N15_to_He4_C12 = 24, + k_He4_O14_to_p_F17 = 25, + k_p_O17_to_He4_N14 = 26, + k_p_F18_to_He4_O15 = 27, + k_He3_He3_to_p_p_He4 = 28, + k_d_Be7_to_p_He4_He4 = 29, + k_He3_Be7_to_p_p_He4_He4 = 30, + k_He4_He4_He4_to_C12 = 31, NumRates = k_He4_He4_He4_to_C12 }; // number of reaclib rates - const int NrateReaclib = 19; + const int NrateReaclib = 31; // number of tabular rates @@ -161,21 +185,33 @@ namespace Rates "O14_to_N14_weak_wc12", // 2, "O15_to_N15_weak_wc12", // 3, "F17_to_O17_weak_wc12", // 4, - "p_C12_to_N13", // 5, - "He4_C12_to_O16", // 6, - "p_C13_to_N14", // 7, - "p_N13_to_O14", // 8, - "p_N14_to_O15", // 9, - "He4_N14_to_F18", // 10, - "p_N15_to_O16", // 11, - "p_O16_to_F17", // 12, - "p_O17_to_F18", // 13, - "He4_N13_to_p_O16", // 14, - "p_N15_to_He4_C12", // 15, - "He4_O14_to_p_F17", // 16, - "p_O17_to_He4_N14", // 17, - "p_F18_to_He4_O15", // 18, - "He4_He4_He4_to_C12" // 19, + "B8_to_He4_He4_weak_wc12", // 5, + "p_p_to_d_weak_bet_pos_", // 6, + "p_p_to_d_weak_electron_capture", // 7, + "p_d_to_He3", // 8, + "d_d_to_He4", // 9, + "p_He3_to_He4_weak_bet_pos_", // 10, + "He4_He3_to_Be7", // 11, + "p_Be7_to_B8", // 12, + "p_C12_to_N13", // 13, + "He4_C12_to_O16", // 14, + "p_C13_to_N14", // 15, + "p_N13_to_O14", // 16, + "p_N14_to_O15", // 17, + "He4_N14_to_F18", // 18, + "p_N15_to_O16", // 19, + "p_O16_to_F17", // 20, + "p_O17_to_F18", // 21, + "d_He3_to_p_He4", // 22, + "He4_N13_to_p_O16", // 23, + "p_N15_to_He4_C12", // 24, + "He4_O14_to_p_F17", // 25, + "p_O17_to_He4_N14", // 26, + "p_F18_to_He4_O15", // 27, + "He3_He3_to_p_p_He4", // 28, + "d_Be7_to_p_He4_He4", // 29, + "He3_Be7_to_p_p_He4_He4", // 30, + "He4_He4_He4_to_C12" // 31, }; } @@ -185,7 +221,7 @@ namespace NSE_INDEX { constexpr int H1_index = 0; constexpr int N_index = -1; - constexpr int He4_index = 1; + constexpr int He4_index = 3; // Each row corresponds to the rate in NetworkRates enum // First 3 row indices for reactants, followed by 3 product indices diff --git a/networks/nova/actual_network_data.cpp b/networks/nova/actual_network_data.cpp index 20945fbd20..467e797eec 100644 --- a/networks/nova/actual_network_data.cpp +++ b/networks/nova/actual_network_data.cpp @@ -5,25 +5,37 @@ namespace NSE_INDEX { AMREX_GPU_MANAGED amrex::Array2D rate_indices { - -1, -1, 4, -1, -1, 3, -1, - -1, -1, 7, -1, -1, 5, -1, - -1, -1, 8, -1, -1, 6, -1, - -1, -1, 11, -1, -1, 10, -1, - -1, 0, 2, -1, -1, 4, -1, - -1, 1, 2, -1, -1, 9, -1, - -1, 0, 3, -1, -1, 5, -1, - -1, 0, 4, -1, -1, 7, -1, - -1, 0, 5, -1, -1, 8, -1, - -1, 1, 5, -1, -1, 12, -1, - -1, 0, 6, -1, -1, 9, -1, - -1, 0, 9, -1, -1, 11, -1, - -1, 0, 10, -1, -1, 12, -1, - -1, 1, 4, -1, 0, 9, -1, - -1, 0, 6, -1, 1, 2, -1, - -1, 1, 7, -1, 0, 11, -1, - -1, 0, 10, -1, 1, 5, -1, - -1, 0, 12, -1, 1, 8, -1, - 1, 1, 1, -1, -1, 2, -1 + -1, -1, 8, -1, -1, 7, -1, + -1, -1, 11, -1, -1, 9, -1, + -1, -1, 12, -1, -1, 10, -1, + -1, -1, 15, -1, -1, 14, -1, + -1, -1, 5, -1, 3, 3, -1, + -1, 0, 0, -1, -1, 1, -1, + -1, 0, 0, -1, -1, 1, -1, + -1, 0, 1, -1, -1, 2, -1, + -1, 1, 1, -1, -1, 3, -1, + -1, 0, 2, -1, -1, 3, -1, + -1, 2, 3, -1, -1, 4, -1, + -1, 0, 4, -1, -1, 5, -1, + -1, 0, 6, -1, -1, 8, -1, + -1, 3, 6, -1, -1, 13, -1, + -1, 0, 7, -1, -1, 9, -1, + -1, 0, 8, -1, -1, 11, -1, + -1, 0, 9, -1, -1, 12, -1, + -1, 3, 9, -1, -1, 16, -1, + -1, 0, 10, -1, -1, 13, -1, + -1, 0, 13, -1, -1, 15, -1, + -1, 0, 14, -1, -1, 16, -1, + -1, 1, 2, -1, 0, 3, -1, + -1, 3, 8, -1, 0, 13, -1, + -1, 0, 10, -1, 3, 6, -1, + -1, 3, 11, -1, 0, 15, -1, + -1, 0, 14, -1, 3, 9, -1, + -1, 0, 16, -1, 3, 12, -1, + -1, 2, 2, 0, 0, 3, -1, + -1, 1, 4, 0, 3, 3, -1, + -1, 2, 4, 0, 0, 3, -1, + 3, 3, 3, -1, -1, 6, -1 }; } #endif diff --git a/networks/nova/actual_rhs.H b/networks/nova/actual_rhs.H index 77d0021022..9763566e31 100644 --- a/networks/nova/actual_rhs.H +++ b/networks/nova/actual_rhs.H @@ -80,6 +80,127 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { [[maybe_unused]] amrex::Real scor2, dscor2_dt; + { + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 1.0_rt, 1.0_rt); + + + static_assert(scn_fac.z1 == 1.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_p_p_to_d_weak_bet_pos_); + rate_eval.screened_rates(k_p_p_to_d_weak_bet_pos_) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_p_to_d_weak_bet_pos_); + rate_eval.dscreened_rates_dT(k_p_p_to_d_weak_bet_pos_) = ratraw * dscor_dt + dratraw_dT * scor; + } + + ratraw = rate_eval.screened_rates(k_p_p_to_d_weak_electron_capture); + rate_eval.screened_rates(k_p_p_to_d_weak_electron_capture) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_p_to_d_weak_electron_capture); + rate_eval.dscreened_rates_dT(k_p_p_to_d_weak_electron_capture) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 1.0_rt, 2.0_rt); + + + static_assert(scn_fac.z1 == 1.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_p_d_to_He3); + rate_eval.screened_rates(k_p_d_to_He3) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_d_to_He3); + rate_eval.dscreened_rates_dT(k_p_d_to_He3) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 2.0_rt, 1.0_rt, 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_d_d_to_He4); + rate_eval.screened_rates(k_d_d_to_He4) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_d_d_to_He4); + rate_eval.dscreened_rates_dT(k_d_d_to_He4) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 2.0_rt, 3.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_He3_to_He4_weak_bet_pos_); + rate_eval.screened_rates(k_p_He3_to_He4_weak_bet_pos_) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_He3_to_He4_weak_bet_pos_); + rate_eval.dscreened_rates_dT(k_p_He3_to_He4_weak_bet_pos_) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 2.0_rt, 3.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_He3_to_Be7); + rate_eval.screened_rates(k_He4_He3_to_Be7) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_He3_to_Be7); + rate_eval.dscreened_rates_dT(k_He4_He3_to_Be7) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 4.0_rt, 7.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_Be7_to_B8); + rate_eval.screened_rates(k_p_Be7_to_B8) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Be7_to_B8); + rate_eval.dscreened_rates_dT(k_p_Be7_to_B8) = ratraw * dscor_dt + dratraw_dT * scor; + } + + { constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 6.0_rt, 12.0_rt); @@ -265,6 +386,25 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } + { + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 2.0_rt, 2.0_rt, 3.0_rt); + + + static_assert(scn_fac.z1 == 1.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_d_He3_to_p_He4); + rate_eval.screened_rates(k_d_He3_to_p_He4) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_d_He3_to_p_He4); + rate_eval.dscreened_rates_dT(k_d_He3_to_p_He4) = ratraw * dscor_dt + dratraw_dT * scor; + } + + { constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 7.0_rt, 13.0_rt); @@ -322,6 +462,63 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { } + { + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 3.0_rt, 2.0_rt, 3.0_rt); + + + static_assert(scn_fac.z1 == 2.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_He3_He3_to_p_p_He4); + rate_eval.screened_rates(k_He3_He3_to_p_p_He4) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He3_He3_to_p_p_He4); + rate_eval.dscreened_rates_dT(k_He3_He3_to_p_p_He4) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 2.0_rt, 4.0_rt, 7.0_rt); + + + static_assert(scn_fac.z1 == 1.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_d_Be7_to_p_He4_He4); + rate_eval.screened_rates(k_d_Be7_to_p_He4_He4) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_d_Be7_to_p_He4_He4); + rate_eval.dscreened_rates_dT(k_d_Be7_to_p_He4_He4) = ratraw * dscor_dt + dratraw_dT * scor; + } + + + { + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 3.0_rt, 4.0_rt, 7.0_rt); + + + static_assert(scn_fac.z1 == 2.0_rt); + + + actual_screen(pstate, scn_fac, scor, dscor_dt); + } + + + ratraw = rate_eval.screened_rates(k_He3_Be7_to_p_p_He4_He4); + rate_eval.screened_rates(k_He3_Be7_to_p_p_He4_He4) *= scor; + if constexpr (std::is_same_v) { + dratraw_dT = rate_eval.dscreened_rates_dT(k_He3_Be7_to_p_p_He4_He4); + rate_eval.dscreened_rates_dT(k_He3_Be7_to_p_p_He4_He4) = 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); @@ -356,7 +553,7 @@ void evaluate_rates(const burn_t& state, T& rate_eval) { // Fill approximate rates - fill_approx_rates(tfactors, rate_eval); + fill_approx_rates(tfactors, state.rho, Y, rate_eval); // Calculate tabular rates @@ -398,8 +595,16 @@ void get_ydot_weak(const burn_t& state, ydot_nuc(H1) = 0.0_rt; + ydot_nuc(H2) = 0.0_rt; + + ydot_nuc(He3) = 0.0_rt; + ydot_nuc(He4) = 0.0_rt; + ydot_nuc(Be7) = 0.0_rt; + + ydot_nuc(B8) = 0.0_rt; + ydot_nuc(C12) = 0.0_rt; ydot_nuc(C13) = 0.0_rt; @@ -436,6 +641,11 @@ void rhs_nuc(const burn_t& state, using namespace Rates; ydot_nuc(H1) = + -screened_rates(k_p_p_to_d_weak_bet_pos_)*amrex::Math::powi<2>(Y(H1))*state.rho + + -screened_rates(k_p_p_to_d_weak_electron_capture)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)*state.y_e + + -screened_rates(k_p_d_to_He3)*Y(H2)*Y(H1)*state.rho + + -screened_rates(k_p_He3_to_He4_weak_bet_pos_)*Y(He3)*Y(H1)*state.rho + + -screened_rates(k_p_Be7_to_B8)*Y(Be7)*Y(H1)*state.rho + -screened_rates(k_p_C12_to_N13)*Y(C12)*Y(H1)*state.rho + -screened_rates(k_p_C13_to_N14)*Y(C13)*Y(H1)*state.rho + -screened_rates(k_p_N13_to_O14)*Y(N13)*Y(H1)*state.rho + @@ -443,22 +653,60 @@ void rhs_nuc(const burn_t& state, -screened_rates(k_p_N15_to_O16)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_p_O16_to_F17)*Y(O16)*Y(H1)*state.rho + -screened_rates(k_p_O17_to_F18)*Y(O17)*Y(H1)*state.rho + + screened_rates(k_d_He3_to_p_He4)*Y(He3)*Y(H2)*state.rho + screened_rates(k_He4_N13_to_p_O16)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_N15_to_He4_C12)*Y(N15)*Y(H1)*state.rho + screened_rates(k_He4_O14_to_p_F17)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_p_O17_to_He4_N14)*Y(O17)*Y(H1)*state.rho + - -screened_rates(k_p_F18_to_He4_O15)*Y(F18)*Y(H1)*state.rho; + -screened_rates(k_p_F18_to_He4_O15)*Y(F18)*Y(H1)*state.rho + + screened_rates(k_He3_He3_to_p_p_He4)*amrex::Math::powi<2>(Y(He3))*state.rho + + screened_rates(k_d_Be7_to_p_He4_He4)*Y(Be7)*Y(H2)*state.rho + + 2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4)*Y(Be7)*Y(He3)*state.rho; + + ydot_nuc(H2) = + 0.5*screened_rates(k_p_p_to_d_weak_bet_pos_)*amrex::Math::powi<2>(Y(H1))*state.rho + + 0.5*screened_rates(k_p_p_to_d_weak_electron_capture)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)*state.y_e + + -screened_rates(k_p_d_to_He3)*Y(H2)*Y(H1)*state.rho + + -screened_rates(k_d_d_to_He4)*amrex::Math::powi<2>(Y(H2))*state.rho + + -screened_rates(k_d_He3_to_p_He4)*Y(He3)*Y(H2)*state.rho + + -screened_rates(k_d_Be7_to_p_He4_He4)*Y(Be7)*Y(H2)*state.rho; + + ydot_nuc(He3) = + screened_rates(k_p_d_to_He3)*Y(H2)*Y(H1)*state.rho + + -screened_rates(k_p_He3_to_He4_weak_bet_pos_)*Y(He3)*Y(H1)*state.rho + + -screened_rates(k_He4_He3_to_Be7)*Y(He3)*Y(He4)*state.rho + + -screened_rates(k_d_He3_to_p_He4)*Y(He3)*Y(H2)*state.rho + + -screened_rates(k_He3_He3_to_p_p_He4)*amrex::Math::powi<2>(Y(He3))*state.rho + + -screened_rates(k_He3_Be7_to_p_p_He4_He4)*Y(Be7)*Y(He3)*state.rho; ydot_nuc(He4) = + 2.0*screened_rates(k_B8_to_He4_He4_weak_wc12)*Y(B8) + + 0.5*screened_rates(k_d_d_to_He4)*amrex::Math::powi<2>(Y(H2))*state.rho + + screened_rates(k_p_He3_to_He4_weak_bet_pos_)*Y(He3)*Y(H1)*state.rho + + -screened_rates(k_He4_He3_to_Be7)*Y(He3)*Y(He4)*state.rho + -screened_rates(k_He4_C12_to_O16)*Y(C12)*Y(He4)*state.rho + -screened_rates(k_He4_N14_to_F18)*Y(He4)*Y(N14)*state.rho + + screened_rates(k_d_He3_to_p_He4)*Y(He3)*Y(H2)*state.rho + -screened_rates(k_He4_N13_to_p_O16)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_N15_to_He4_C12)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_He4_O14_to_p_F17)*Y(He4)*Y(O14)*state.rho + screened_rates(k_p_O17_to_He4_N14)*Y(O17)*Y(H1)*state.rho + screened_rates(k_p_F18_to_He4_O15)*Y(F18)*Y(H1)*state.rho + + 0.5*screened_rates(k_He3_He3_to_p_p_He4)*amrex::Math::powi<2>(Y(He3))*state.rho + + 2.0*screened_rates(k_d_Be7_to_p_He4_He4)*Y(Be7)*Y(H2)*state.rho + + 2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4)*Y(Be7)*Y(He3)*state.rho + -0.5*screened_rates(k_He4_He4_He4_to_C12)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho); + ydot_nuc(Be7) = + screened_rates(k_He4_He3_to_Be7)*Y(He3)*Y(He4)*state.rho + + -screened_rates(k_p_Be7_to_B8)*Y(Be7)*Y(H1)*state.rho + + -screened_rates(k_d_Be7_to_p_He4_He4)*Y(Be7)*Y(H2)*state.rho + + -screened_rates(k_He3_Be7_to_p_p_He4_He4)*Y(Be7)*Y(He3)*state.rho; + + ydot_nuc(B8) = + -screened_rates(k_B8_to_He4_He4_weak_wc12)*Y(B8) + + screened_rates(k_p_Be7_to_B8)*Y(Be7)*Y(H1)*state.rho; + ydot_nuc(C12) = -screened_rates(k_p_C12_to_N13)*Y(C12)*Y(H1)*state.rho + -screened_rates(k_He4_C12_to_O16)*Y(C12)*Y(He4)*state.rho + @@ -576,12 +824,21 @@ void jac_nuc(const burn_t& state, amrex::Real scratch; - scratch = -screened_rates(k_p_C12_to_N13)*Y(C12)*state.rho - screened_rates(k_p_C13_to_N14)*Y(C13)*state.rho - screened_rates(k_p_F18_to_He4_O15)*Y(F18)*state.rho - screened_rates(k_p_N13_to_O14)*Y(N13)*state.rho - screened_rates(k_p_N14_to_O15)*Y(N14)*state.rho - screened_rates(k_p_N15_to_He4_C12)*Y(N15)*state.rho - screened_rates(k_p_N15_to_O16)*Y(N15)*state.rho - screened_rates(k_p_O16_to_F17)*Y(O16)*state.rho - screened_rates(k_p_O17_to_F18)*Y(O17)*state.rho - screened_rates(k_p_O17_to_He4_N14)*Y(O17)*state.rho; + scratch = -screened_rates(k_p_Be7_to_B8)*Y(Be7)*state.rho - screened_rates(k_p_C12_to_N13)*Y(C12)*state.rho - screened_rates(k_p_C13_to_N14)*Y(C13)*state.rho - screened_rates(k_p_F18_to_He4_O15)*Y(F18)*state.rho - screened_rates(k_p_He3_to_He4_weak_bet_pos_)*Y(He3)*state.rho - screened_rates(k_p_N13_to_O14)*Y(N13)*state.rho - screened_rates(k_p_N14_to_O15)*Y(N14)*state.rho - screened_rates(k_p_N15_to_He4_C12)*Y(N15)*state.rho - screened_rates(k_p_N15_to_O16)*Y(N15)*state.rho - screened_rates(k_p_O16_to_F17)*Y(O16)*state.rho - screened_rates(k_p_O17_to_F18)*Y(O17)*state.rho - screened_rates(k_p_O17_to_He4_N14)*Y(O17)*state.rho - screened_rates(k_p_d_to_He3)*Y(H2)*state.rho - 2.0*screened_rates(k_p_p_to_d_weak_bet_pos_)*Y(H1)*state.rho - 2.0*screened_rates(k_p_p_to_d_weak_electron_capture)*Y(H1)*amrex::Math::powi<2>(state.rho)*state.y_e; jac.set(H1, H1, scratch); + scratch = screened_rates(k_d_Be7_to_p_He4_He4)*Y(Be7)*state.rho + screened_rates(k_d_He3_to_p_He4)*Y(He3)*state.rho - screened_rates(k_p_d_to_He3)*Y(H1)*state.rho; + jac.set(H1, H2, scratch); + + scratch = 2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4)*Y(Be7)*state.rho + 2.0*screened_rates(k_He3_He3_to_p_p_He4)*Y(He3)*state.rho + screened_rates(k_d_He3_to_p_He4)*Y(H2)*state.rho - screened_rates(k_p_He3_to_He4_weak_bet_pos_)*Y(H1)*state.rho; + jac.set(H1, He3, scratch); + scratch = screened_rates(k_He4_N13_to_p_O16)*Y(N13)*state.rho + screened_rates(k_He4_O14_to_p_F17)*Y(O14)*state.rho; jac.set(H1, He4, scratch); + scratch = 2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4)*Y(He3)*state.rho + screened_rates(k_d_Be7_to_p_He4_He4)*Y(H2)*state.rho - screened_rates(k_p_Be7_to_B8)*Y(H1)*state.rho; + jac.set(H1, Be7, scratch); + scratch = -screened_rates(k_p_C12_to_N13)*Y(H1)*state.rho; jac.set(H1, C12, scratch); @@ -609,12 +866,51 @@ void jac_nuc(const burn_t& state, scratch = -screened_rates(k_p_F18_to_He4_O15)*Y(H1)*state.rho; jac.set(H1, F18, scratch); - scratch = screened_rates(k_p_F18_to_He4_O15)*Y(F18)*state.rho + screened_rates(k_p_N15_to_He4_C12)*Y(N15)*state.rho + screened_rates(k_p_O17_to_He4_N14)*Y(O17)*state.rho; + scratch = -screened_rates(k_p_d_to_He3)*Y(H2)*state.rho + 1.0*screened_rates(k_p_p_to_d_weak_bet_pos_)*Y(H1)*state.rho + 1.0*screened_rates(k_p_p_to_d_weak_electron_capture)*Y(H1)*amrex::Math::powi<2>(state.rho)*state.y_e; + jac.set(H2, H1, scratch); + + scratch = -screened_rates(k_d_Be7_to_p_He4_He4)*Y(Be7)*state.rho - screened_rates(k_d_He3_to_p_He4)*Y(He3)*state.rho - 2.0*screened_rates(k_d_d_to_He4)*Y(H2)*state.rho - screened_rates(k_p_d_to_He3)*Y(H1)*state.rho; + jac.set(H2, H2, scratch); + + scratch = -screened_rates(k_d_He3_to_p_He4)*Y(H2)*state.rho; + jac.set(H2, He3, scratch); + + scratch = -screened_rates(k_d_Be7_to_p_He4_He4)*Y(H2)*state.rho; + jac.set(H2, Be7, scratch); + + scratch = -screened_rates(k_p_He3_to_He4_weak_bet_pos_)*Y(He3)*state.rho + screened_rates(k_p_d_to_He3)*Y(H2)*state.rho; + jac.set(He3, H1, scratch); + + scratch = -screened_rates(k_d_He3_to_p_He4)*Y(He3)*state.rho + screened_rates(k_p_d_to_He3)*Y(H1)*state.rho; + jac.set(He3, H2, scratch); + + scratch = -screened_rates(k_He3_Be7_to_p_p_He4_He4)*Y(Be7)*state.rho - 2.0*screened_rates(k_He3_He3_to_p_p_He4)*Y(He3)*state.rho - screened_rates(k_He4_He3_to_Be7)*Y(He4)*state.rho - screened_rates(k_d_He3_to_p_He4)*Y(H2)*state.rho - screened_rates(k_p_He3_to_He4_weak_bet_pos_)*Y(H1)*state.rho; + jac.set(He3, He3, scratch); + + scratch = -screened_rates(k_He4_He3_to_Be7)*Y(He3)*state.rho; + jac.set(He3, He4, scratch); + + scratch = -screened_rates(k_He3_Be7_to_p_p_He4_He4)*Y(He3)*state.rho; + jac.set(He3, Be7, scratch); + + scratch = screened_rates(k_p_F18_to_He4_O15)*Y(F18)*state.rho + screened_rates(k_p_He3_to_He4_weak_bet_pos_)*Y(He3)*state.rho + screened_rates(k_p_N15_to_He4_C12)*Y(N15)*state.rho + screened_rates(k_p_O17_to_He4_N14)*Y(O17)*state.rho; jac.set(He4, H1, scratch); - scratch = -screened_rates(k_He4_C12_to_O16)*Y(C12)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_N13_to_p_O16)*Y(N13)*state.rho - screened_rates(k_He4_N14_to_F18)*Y(N14)*state.rho - screened_rates(k_He4_O14_to_p_F17)*Y(O14)*state.rho; + scratch = 2.0*screened_rates(k_d_Be7_to_p_He4_He4)*Y(Be7)*state.rho + screened_rates(k_d_He3_to_p_He4)*Y(He3)*state.rho + 1.0*screened_rates(k_d_d_to_He4)*Y(H2)*state.rho; + jac.set(He4, H2, scratch); + + scratch = 2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4)*Y(Be7)*state.rho + 1.0*screened_rates(k_He3_He3_to_p_p_He4)*Y(He3)*state.rho - screened_rates(k_He4_He3_to_Be7)*Y(He4)*state.rho + screened_rates(k_d_He3_to_p_He4)*Y(H2)*state.rho + screened_rates(k_p_He3_to_He4_weak_bet_pos_)*Y(H1)*state.rho; + jac.set(He4, He3, scratch); + + scratch = -screened_rates(k_He4_C12_to_O16)*Y(C12)*state.rho - screened_rates(k_He4_He3_to_Be7)*Y(He3)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_N13_to_p_O16)*Y(N13)*state.rho - screened_rates(k_He4_N14_to_F18)*Y(N14)*state.rho - screened_rates(k_He4_O14_to_p_F17)*Y(O14)*state.rho; jac.set(He4, He4, scratch); + scratch = 2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4)*Y(He3)*state.rho + 2.0*screened_rates(k_d_Be7_to_p_He4_He4)*Y(H2)*state.rho; + jac.set(He4, Be7, scratch); + + scratch = 2.0*screened_rates(k_B8_to_He4_He4_weak_wc12); + jac.set(He4, B8, scratch); + scratch = -screened_rates(k_He4_C12_to_O16)*Y(He4)*state.rho; jac.set(He4, C12, scratch); @@ -636,6 +932,30 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_p_F18_to_He4_O15)*Y(H1)*state.rho; jac.set(He4, F18, scratch); + scratch = -screened_rates(k_p_Be7_to_B8)*Y(Be7)*state.rho; + jac.set(Be7, H1, scratch); + + scratch = -screened_rates(k_d_Be7_to_p_He4_He4)*Y(Be7)*state.rho; + jac.set(Be7, H2, scratch); + + scratch = -screened_rates(k_He3_Be7_to_p_p_He4_He4)*Y(Be7)*state.rho + screened_rates(k_He4_He3_to_Be7)*Y(He4)*state.rho; + jac.set(Be7, He3, scratch); + + scratch = screened_rates(k_He4_He3_to_Be7)*Y(He3)*state.rho; + jac.set(Be7, He4, scratch); + + scratch = -screened_rates(k_He3_Be7_to_p_p_He4_He4)*Y(He3)*state.rho - screened_rates(k_d_Be7_to_p_He4_He4)*Y(H2)*state.rho - screened_rates(k_p_Be7_to_B8)*Y(H1)*state.rho; + jac.set(Be7, Be7, scratch); + + scratch = screened_rates(k_p_Be7_to_B8)*Y(Be7)*state.rho; + jac.set(B8, H1, scratch); + + scratch = screened_rates(k_p_Be7_to_B8)*Y(H1)*state.rho; + jac.set(B8, Be7, scratch); + + scratch = -screened_rates(k_B8_to_He4_He4_weak_wc12); + jac.set(B8, B8, scratch); + scratch = -screened_rates(k_p_C12_to_N13)*Y(C12)*state.rho + screened_rates(k_p_N15_to_He4_C12)*Y(N15)*state.rho; jac.set(C12, H1, scratch); diff --git a/networks/nova/inputs.burn_cell.VODE b/networks/nova/inputs.burn_cell.VODE index f94d4554b8..66434599a5 100644 --- a/networks/nova/inputs.burn_cell.VODE +++ b/networks/nova/inputs.burn_cell.VODE @@ -37,3 +37,7 @@ unit_test.X10 = 0.0 unit_test.X11 = 0.0 unit_test.X12 = 0.0 unit_test.X13 = 0.0 +unit_test.X14 = 0.0 +unit_test.X15 = 0.0 +unit_test.X16 = 0.0 +unit_test.X17 = 0.0 diff --git a/networks/nova/network_plot.py b/networks/nova/network_plot.py deleted file mode 100644 index 589c7942e2..0000000000 --- a/networks/nova/network_plot.py +++ /dev/null @@ -1,21 +0,0 @@ -# C-burning with A=23 URCA rate module generator - -import pynucastro as pyna -from pynucastro.networks import StarKillerNetwork - -library_file = "20180319default2" -mylibrary = pyna.rates.Library(library_file) - -all_nuclei = ["p", "he4", "c12", "c13", "n13", "n14", "n15", "o14", "o15", "o16", "o17", "f17", "f18"] - -nova_library = mylibrary.linking_nuclei(all_nuclei, with_reverse=False) -print(len(nova_library._rates)) -rc = pyna.RateCollection(libraries=[nova_library]) - -comp = pyna.Composition(rc.get_nuclei()) -comp.set_solar_like() - -rho = 1.e4 -T = 9.e7 - -rc.plot(rho, T, comp, outfile="nova.png") diff --git a/networks/nova/nova.png b/networks/nova/nova.png index a9fbc5984d21a0254e7ababf86c1bdb7485ff14d..d8e3139620bfaf7becd69c9306aba5b34ace956c 100644 GIT binary patch literal 56059 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

gg^xNR7_vsaGQ`KK&(S6G6m|!OynYm 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 literal 47467 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 VR=xcVvf?Nd`jWxLq6-f9{|i_N+jjr} diff --git a/networks/nova/nova.py b/networks/nova/nova.py index 2e4862202c..a2601194c5 100644 --- a/networks/nova/nova.py +++ b/networks/nova/nova.py @@ -1,25 +1,31 @@ import pynucastro as pyna -from pynucastro.networks import AmrexAstroCxxNetwork, RateCollection, Composition +from pynucastro.networks import AmrexAstroCxxNetwork mylibrary = pyna.rates.ReacLibLibrary() -all_nuclei = ["p", "he4", "c12", "c13", "n13", "n14", "n15", "o14", "o15", "o16", "o17", "f17", "f18"] +all_nuclei = ["p", "h2", "he3", "he4", "be7", "b8", + "c12", "c13", "n13", "n14", "n15", + "o14", "o15", "o16", "o17", "f17", "f18"] nova_library = mylibrary.linking_nuclei(all_nuclei, with_reverse=False) -print(nova_library) +# pp_chain = ["p", "h2", "he3", "he4", "be7", "b8"] +# pp_library = mylibrary.linking_nuclei(pp_chain, with_reverse=False) net = AmrexAstroCxxNetwork(libraries=[nova_library]) net.write_network() -# make a plot +rc = pyna.RateCollection(libraries=[nova_library]) +# filter = pyna.RateCollection(libraries=[pp_library]) -rc = RateCollection(libraries=[nova_library]) - -comp = Composition(rc.get_nuclei()) +comp = pyna.Composition(rc.get_nuclei()) comp.set_solar_like() -rho = 1.e4 -T = 9.e7 +rho = 1.e3 +T = 1.e8 + +edge_labels = {(pyna.Nucleus("he4"), pyna.Nucleus("c12")): + r"$\alpha(\alpha\alpha,\gamma){}^{12}\mathrm{C}$"} -rc.plot(rho, T, comp, outfile="nova.png") +rc.plot(rho, T, comp, rotated=False, outfile="nova.png", N_range=(-1,10) , Z_range=(0,10), hide_xalpha=True, hide_xp=True, + curved_edges=True, edge_labels=edge_labels, node_size=300, node_font_size=10) diff --git a/networks/nova/partition_functions.H b/networks/nova/partition_functions.H index a5162644b0..54977f91ed 100644 --- a/networks/nova/partition_functions.H +++ b/networks/nova/partition_functions.H @@ -17,21 +17,21 @@ namespace part_fun { // interpolation routine - template + template AMREX_GPU_HOST_DEVICE AMREX_INLINE - void interpolate_pf(const amrex::Real t9, const amrex::Real (&temp_array)[npts], const amrex::Real (&pf_array)[npts], + void interpolate_pf(const amrex::Real t9, const T& temp_array, const T& pf_array, amrex::Real& pf, amrex::Real& dpf_dT) { - if (t9 >= temp_array[0] && t9 < temp_array[npts-1]) { + if (t9 >= temp_array.lo() && t9 < temp_array.hi()) { // find the largest temperature element <= t9 using a binary search - int left = 0; - int right = npts; + int left = temp_array.lo(); + int right = temp_array.hi(); while (left < right) { int mid = (left + right) / 2; - if (temp_array[mid] > t9) { + if (temp_array(mid) > t9) { right = mid; } else { left = mid + 1; @@ -44,11 +44,12 @@ namespace part_fun { // construct the slope -- this is (log10(pf_{i+1}) - log10(pf_i)) / (T_{i+1} - T_i) - amrex::Real slope = (pf_array[idx+1] - pf_array[idx]) / (temp_array[idx+1] - temp_array[idx]); + amrex::Real slope = (pf_array(idx+1) - pf_array(idx)) / + (temp_array(idx+1) - temp_array(idx)); // find the PF - amrex::Real log10_pf = pf_array[idx] + slope * (t9 - temp_array[idx]); + amrex::Real log10_pf = pf_array(idx) + slope * (t9 - temp_array(idx)); pf = std::pow(10.0_rt, log10_pf); // find the derivative (with respect to T, not T9) @@ -129,6 +130,7 @@ constexpr amrex::Real get_spin_state(const int inuc) { break; case H1: + case He3: case C13: case N13: case N15: @@ -136,11 +138,20 @@ constexpr amrex::Real get_spin_state(const int inuc) { spin = 2; break; + case H2: case N14: case F18: spin = 3; break; + case Be7: + spin = 4; + break; + + case B8: + spin = 5; + break; + case O17: case F17: spin = 6; diff --git a/networks/nova/partition_functions_data.cpp b/networks/nova/partition_functions_data.cpp new file mode 100644 index 0000000000..e4dc2a8c00 --- /dev/null +++ b/networks/nova/partition_functions_data.cpp @@ -0,0 +1,14 @@ +#include +#include +#include +#include + +#include + +using namespace amrex; + +namespace part_fun { + + +} + diff --git a/networks/nova/pynucastro.net b/networks/nova/pynucastro.net index d9089af113..7012ca4859 100644 --- a/networks/nova/pynucastro.net +++ b/networks/nova/pynucastro.net @@ -1,5 +1,9 @@ hydrogen-1 H1 1.0 1.0 +hydrogen-2 H2 2.0 1.0 +helium-3 He3 3.0 2.0 helium-4 He4 4.0 2.0 +beryllium-7 Be7 7.0 4.0 +boron-8 B8 8.0 5.0 carbon-12 C12 12.0 6.0 carbon-13 C13 13.0 6.0 nitrogen-13 N13 13.0 7.0 diff --git a/networks/nova/reaclib_rates.H b/networks/nova/reaclib_rates.H index 9e4061f811..ecd427461d 100644 --- a/networks/nova/reaclib_rates.H +++ b/networks/nova/reaclib_rates.H @@ -147,6 +147,312 @@ void rate_F17_to_O17_weak_wc12(const tf_t& tfactors, amrex::Real& rate, amrex::R } +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_B8_to_He4_He4_weak_wc12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // B8 --> He4 + He4 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // wc12w + ln_set_rate = -0.105148; + amrex::ignore_unused(tfactors); + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_p_p_to_d_weak_bet_pos_(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // p + p --> d + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // bet+w + ln_set_rate = -34.7863 + -3.51193 * tfactors.T913i + 3.10086 * tfactors.T913 + + -0.198314 * tfactors.T9 + 0.0126251 * tfactors.T953 + -1.02517 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -3.51193 * tfactors.T943i + (1.0/3.0) * 3.10086 * tfactors.T923i + + -0.198314 + (5.0/3.0) * 0.0126251 * tfactors.T923 + -1.02517 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_p_p_to_d_weak_electron_capture(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // p + p --> d + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // ecw + ln_set_rate = -43.6499 + -0.00246064 * tfactors.T9i + -2.7507 * tfactors.T913i + -0.424877 * tfactors.T913 + + 0.015987 * tfactors.T9 + -0.000690875 * tfactors.T953 + -0.207625 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.00246064 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.7507 * tfactors.T943i + (1.0/3.0) * -0.424877 * tfactors.T923i + + 0.015987 + (5.0/3.0) * -0.000690875 * tfactors.T923 + -0.207625 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_p_d_to_He3(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // d + p --> He3 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // de04 + ln_set_rate = 8.93525 + -3.7208 * tfactors.T913i + 0.198654 * tfactors.T913 + + 0.333333 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -3.7208 * tfactors.T943i + (1.0/3.0) * 0.198654 * tfactors.T923i + + 0.333333 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // de04n + ln_set_rate = 7.52898 + -3.7208 * tfactors.T913i + 0.871782 * tfactors.T913 + + -0.666667 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -3.7208 * tfactors.T943i + (1.0/3.0) * 0.871782 * tfactors.T923i + + -0.666667 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_d_d_to_He4(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // d + d --> He4 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // nacrn + ln_set_rate = 3.78177 + -4.26166 * tfactors.T913i + -0.119233 * tfactors.T913 + + 0.778829 * tfactors.T9 + -0.0925203 * tfactors.T953 + -0.666667 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -4.26166 * tfactors.T943i + (1.0/3.0) * -0.119233 * tfactors.T923i + + 0.778829 + (5.0/3.0) * -0.0925203 * tfactors.T923 + -0.666667 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_p_He3_to_He4_weak_bet_pos_(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // He3 + p --> He4 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // bet+w + ln_set_rate = -27.7611 + -4.30107e-12 * tfactors.T9i + -6.141 * tfactors.T913i + -1.93473e-09 * tfactors.T913 + + 2.04145e-10 * tfactors.T9 + -1.80372e-11 * tfactors.T953 + -0.666667 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.30107e-12 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -6.141 * tfactors.T943i + (1.0/3.0) * -1.93473e-09 * tfactors.T923i + + 2.04145e-10 + (5.0/3.0) * -1.80372e-11 * tfactors.T923 + -0.666667 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_He4_He3_to_Be7(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // He3 + He4 --> Be7 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // cd08n + ln_set_rate = 17.7075 + -12.8271 * tfactors.T913i + -3.8126 * tfactors.T913 + + 0.0942285 * tfactors.T9 + -0.00301018 * tfactors.T953 + 1.33333 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -12.8271 * tfactors.T943i + (1.0/3.0) * -3.8126 * tfactors.T923i + + 0.0942285 + (5.0/3.0) * -0.00301018 * tfactors.T923 + 1.33333 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // cd08n + ln_set_rate = 15.6099 + -12.8271 * tfactors.T913i + -0.0308225 * tfactors.T913 + + -0.654685 * tfactors.T9 + 0.0896331 * tfactors.T953 + -0.666667 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -12.8271 * tfactors.T943i + (1.0/3.0) * -0.0308225 * tfactors.T923i + + -0.654685 + (5.0/3.0) * 0.0896331 * tfactors.T923 + -0.666667 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_p_Be7_to_B8(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Be7 + p --> B8 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // nacrn + ln_set_rate = 12.5315 + -10.264 * tfactors.T913i + -0.203472 * tfactors.T913 + + 0.121083 * tfactors.T9 + -0.00700063 * tfactors.T953 + -0.666667 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -10.264 * tfactors.T943i + (1.0/3.0) * -0.203472 * tfactors.T923i + + 0.121083 + (5.0/3.0) * -0.00700063 * tfactors.T923 + -0.666667 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // nacrr + ln_set_rate = 7.73399 + -7.345 * tfactors.T9i + + -1.5 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 7.345 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + +} + template AMREX_GPU_HOST_DEVICE AMREX_INLINE void rate_p_C12_to_N13(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { @@ -673,6 +979,55 @@ void rate_p_O17_to_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& dra } +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_d_He3_to_p_He4(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // He3 + d --> p + He4 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // de04 + ln_set_rate = 24.6839 + -7.182 * tfactors.T913i + 0.473288 * tfactors.T913 + + 1.46847 * tfactors.T9 + -27.9603 * tfactors.T953 + -0.666667 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -7.182 * tfactors.T943i + (1.0/3.0) * 0.473288 * tfactors.T923i + + 1.46847 + (5.0/3.0) * -27.9603 * tfactors.T923 + -0.666667 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + + // de04 + ln_set_rate = 41.2969 + -7.182 * tfactors.T913i + -17.1349 * tfactors.T913 + + 1.36908 * tfactors.T9 + -0.0814423 * tfactors.T953 + 3.35395 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -7.182 * tfactors.T943i + (1.0/3.0) * -17.1349 * tfactors.T923i + + 1.36908 + (5.0/3.0) * -0.0814423 * tfactors.T923 + 3.35395 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + +} + template AMREX_GPU_HOST_DEVICE AMREX_INLINE void rate_He4_N13_to_p_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { @@ -1054,6 +1409,102 @@ void rate_p_F18_to_He4_O15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& } +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_He3_He3_to_p_p_He4(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // He3 + He3 --> p + p + He4 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // nacrn + ln_set_rate = 24.7788 + -12.277 * tfactors.T913i + -0.103699 * tfactors.T913 + + -0.0649967 * tfactors.T9 + 0.0168191 * tfactors.T953 + -0.666667 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -12.277 * tfactors.T943i + (1.0/3.0) * -0.103699 * tfactors.T923i + + -0.0649967 + (5.0/3.0) * 0.0168191 * tfactors.T923 + -0.666667 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_d_Be7_to_p_He4_He4(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Be7 + d --> p + He4 + He4 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // cf88n + ln_set_rate = 27.6987 + -12.428 * tfactors.T913i + + -0.666667 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -12.428 * tfactors.T943i + + -0.666667 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + +} + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void rate_He3_Be7_to_p_p_He4_He4(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { + + // Be7 + He3 --> p + p + He4 + He4 + + rate = 0.0; + drate_dT = 0.0; + + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; + + // mafon + ln_set_rate = 31.7435 + -5.45213e-12 * tfactors.T9i + -21.793 * tfactors.T913i + -1.98126e-09 * tfactors.T913 + + 1.84204e-10 * tfactors.T9 + -1.46403e-11 * tfactors.T953 + -0.666667 * tfactors.lnT9; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.45213e-12 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.793 * tfactors.T943i + (1.0/3.0) * -1.98126e-09 * tfactors.T923i + + 1.84204e-10 + (5.0/3.0) * -1.46403e-11 * tfactors.T923 + -0.666667 * tfactors.T9i; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; + } + +} + template AMREX_GPU_HOST_DEVICE AMREX_INLINE void rate_He4_He4_He4_to_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { @@ -1154,6 +1605,54 @@ fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_F17_to_O17_weak_wc12) = drate_dT; + } + rate_B8_to_He4_He4_weak_wc12(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_B8_to_He4_He4_weak_wc12) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_B8_to_He4_He4_weak_wc12) = drate_dT; + + } + rate_p_p_to_d_weak_bet_pos_(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_p_p_to_d_weak_bet_pos_) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_p_to_d_weak_bet_pos_) = drate_dT; + + } + rate_p_p_to_d_weak_electron_capture(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_p_p_to_d_weak_electron_capture) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_p_to_d_weak_electron_capture) = drate_dT; + + } + rate_p_d_to_He3(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_p_d_to_He3) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_d_to_He3) = drate_dT; + + } + rate_d_d_to_He4(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_d_d_to_He4) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_d_d_to_He4) = drate_dT; + + } + rate_p_He3_to_He4_weak_bet_pos_(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_p_He3_to_He4_weak_bet_pos_) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_He3_to_He4_weak_bet_pos_) = drate_dT; + + } + rate_He4_He3_to_Be7(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_He4_He3_to_Be7) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_He3_to_Be7) = drate_dT; + + } + rate_p_Be7_to_B8(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_p_Be7_to_B8) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Be7_to_B8) = drate_dT; + } rate_p_C12_to_N13(tfactors, rate, drate_dT); rate_eval.screened_rates(k_p_C12_to_N13) = rate; @@ -1208,6 +1707,12 @@ fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_p_O17_to_F18) = drate_dT; + } + rate_d_He3_to_p_He4(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_d_He3_to_p_He4) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_d_He3_to_p_He4) = drate_dT; + } rate_He4_N13_to_p_O16(tfactors, rate, drate_dT); rate_eval.screened_rates(k_He4_N13_to_p_O16) = rate; @@ -1238,6 +1743,24 @@ fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) if constexpr (std::is_same_v) { rate_eval.dscreened_rates_dT(k_p_F18_to_He4_O15) = drate_dT; + } + rate_He3_He3_to_p_p_He4(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_He3_He3_to_p_p_He4) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He3_He3_to_p_p_He4) = drate_dT; + + } + rate_d_Be7_to_p_He4_He4(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_d_Be7_to_p_He4_He4) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_d_Be7_to_p_He4_He4) = drate_dT; + + } + rate_He3_Be7_to_p_p_He4_He4(tfactors, rate, drate_dT); + rate_eval.screened_rates(k_He3_Be7_to_p_p_He4_He4) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He3_Be7_to_p_p_He4_He4) = drate_dT; + } rate_He4_He4_He4_to_C12(tfactors, rate, drate_dT); rate_eval.screened_rates(k_He4_He4_He4_to_C12) = rate; @@ -1251,7 +1774,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/nova2/Make.package b/networks/nova2/Make.package deleted file mode 100644 index 39c65eca7b..0000000000 --- a/networks/nova2/Make.package +++ /dev/null @@ -1,14 +0,0 @@ -CEXE_headers += network_properties.H - -ifeq ($(USE_REACT),TRUE) - CEXE_sources += actual_network_data.cpp - CEXE_headers += actual_network.H - CEXE_headers += tfactors.H - CEXE_headers += partition_functions.H - CEXE_headers += actual_rhs.H - CEXE_headers += reaclib_rates.H - CEXE_headers += table_rates.H - CEXE_sources += table_rates_data.cpp - USE_SCREENING = TRUE - USE_NEUTRINOS = TRUE -endif diff --git a/networks/nova2/_parameters b/networks/nova2/_parameters deleted file mode 100644 index e7a017d5aa..0000000000 --- a/networks/nova2/_parameters +++ /dev/null @@ -1,2 +0,0 @@ -@namespace: network - diff --git a/networks/nova2/actual_network.H b/networks/nova2/actual_network.H deleted file mode 100644 index 6666aa35e0..0000000000 --- a/networks/nova2/actual_network.H +++ /dev/null @@ -1,234 +0,0 @@ -#ifndef actual_network_H -#define actual_network_H - -#include -#include -#include - -#include -#include - -using namespace amrex; - -void actual_network_init(); - -const std::string network_name = "pynucastro-cxx"; - -namespace network -{ - - template - AMREX_GPU_HOST_DEVICE AMREX_INLINE - constexpr amrex::Real bion () { - using namespace Species; - - static_assert(spec >= 1 && spec <= NumSpec); - - // Set the binding energy of the element - - if constexpr (spec == H1) { - return 0.0_rt; - } - else if constexpr (spec == H2) { - return 2.224566_rt; - } - else if constexpr (spec == He3) { - return 7.7180399999999985_rt; - } - else if constexpr (spec == He4) { - return 28.29566_rt; - } - else if constexpr (spec == Be7) { - return 37.600836_rt; - } - else if constexpr (spec == B8) { - return 37.73724_rt; - } - else if constexpr (spec == C12) { - return 92.16172800000001_rt; - } - else if constexpr (spec == C13) { - return 97.108037_rt; - } - else if constexpr (spec == N13) { - return 94.105219_rt; - } - else if constexpr (spec == N14) { - return 104.65859599999999_rt; - } - else if constexpr (spec == N15) { - return 115.4919_rt; - } - else if constexpr (spec == O14) { - return 98.731892_rt; - } - else if constexpr (spec == O15) { - return 111.95538_rt; - } - else if constexpr (spec == O16) { - return 127.619296_rt; - } - else if constexpr (spec == O17) { - return 131.76237600000002_rt; - } - else if constexpr (spec == F17) { - return 128.21957600000002_rt; - } - else if constexpr (spec == F18) { - return 137.369484_rt; - } - - - // Return zero if we don't recognize the species. - return 0.0_rt; - } - - template - AMREX_GPU_HOST_DEVICE AMREX_INLINE - constexpr amrex::Real mion () { - static_assert(spec >= 1 && spec <= NumSpec); - - constexpr amrex::Real A = NetworkProperties::aion(spec); - constexpr amrex::Real Z = NetworkProperties::zion(spec); - - return (A - Z) * C::Legacy::m_n + Z * (C::Legacy::m_p + C::Legacy::m_e) - bion() * C::Legacy::MeV2gr; - } - - // Legacy (non-templated) interfaces - - AMREX_GPU_HOST_DEVICE AMREX_INLINE - amrex::Real bion (int spec) { - using namespace Species; - - amrex::Real b = 0.0_rt; - - // Set the binding energy of the element - constexpr_for<1, NumSpec+1>([&] (auto n) { - if (n == spec) { - b = bion(); - } - }); - - return b; - } - - AMREX_GPU_HOST_DEVICE AMREX_INLINE - amrex::Real mion (int spec) { - using namespace Species; - - amrex::Real m = 0.0_rt; - - constexpr_for<1, NumSpec+1>([&] (auto n) { - if (n == spec) { - m = mion(); - } - }); - - return m; - } -} - -namespace Rates -{ - - enum NetworkRates - { - k_N13_to_C13_weak_wc12 = 1, - k_O14_to_N14_weak_wc12 = 2, - k_O15_to_N15_weak_wc12 = 3, - k_F17_to_O17_weak_wc12 = 4, - k_B8_to_He4_He4_weak_wc12 = 5, - k_p_p_to_d_weak_bet_pos_ = 6, - k_p_p_to_d_weak_electron_capture = 7, - k_p_d_to_He3 = 8, - k_d_d_to_He4 = 9, - k_p_He3_to_He4_weak_bet_pos_ = 10, - k_He4_He3_to_Be7 = 11, - k_p_Be7_to_B8 = 12, - k_p_C12_to_N13 = 13, - k_He4_C12_to_O16 = 14, - k_p_C13_to_N14 = 15, - k_p_N13_to_O14 = 16, - k_p_N14_to_O15 = 17, - k_He4_N14_to_F18 = 18, - k_p_N15_to_O16 = 19, - k_p_O16_to_F17 = 20, - k_p_O17_to_F18 = 21, - k_d_He3_to_p_He4 = 22, - k_He4_N13_to_p_O16 = 23, - k_p_N15_to_He4_C12 = 24, - k_He4_O14_to_p_F17 = 25, - k_p_O17_to_He4_N14 = 26, - k_p_F18_to_He4_O15 = 27, - k_He3_He3_to_p_p_He4 = 28, - k_d_Be7_to_p_He4_He4 = 29, - k_He3_Be7_to_p_p_He4_He4 = 30, - k_He4_He4_He4_to_C12 = 31, - NumRates = k_He4_He4_He4_to_C12 - }; - - // number of reaclib rates - - const int NrateReaclib = 31; - - // number of tabular rates - - const int NrateTabular = 0; - - // rate names -- note: the rates are 1-based, not zero-based, so we pad - // this vector with rate_names[0] = "" so the indices line up with the - // NetworkRates enum - - static const std::vector rate_names = { - "", // 0 - "N13_to_C13_weak_wc12", // 1, - "O14_to_N14_weak_wc12", // 2, - "O15_to_N15_weak_wc12", // 3, - "F17_to_O17_weak_wc12", // 4, - "B8_to_He4_He4_weak_wc12", // 5, - "p_p_to_d_weak_bet_pos_", // 6, - "p_p_to_d_weak_electron_capture", // 7, - "p_d_to_He3", // 8, - "d_d_to_He4", // 9, - "p_He3_to_He4_weak_bet_pos_", // 10, - "He4_He3_to_Be7", // 11, - "p_Be7_to_B8", // 12, - "p_C12_to_N13", // 13, - "He4_C12_to_O16", // 14, - "p_C13_to_N14", // 15, - "p_N13_to_O14", // 16, - "p_N14_to_O15", // 17, - "He4_N14_to_F18", // 18, - "p_N15_to_O16", // 19, - "p_O16_to_F17", // 20, - "p_O17_to_F18", // 21, - "d_He3_to_p_He4", // 22, - "He4_N13_to_p_O16", // 23, - "p_N15_to_He4_C12", // 24, - "He4_O14_to_p_F17", // 25, - "p_O17_to_He4_N14", // 26, - "p_F18_to_He4_O15", // 27, - "He3_He3_to_p_p_He4", // 28, - "d_Be7_to_p_He4_He4", // 29, - "He3_Be7_to_p_p_He4_He4", // 30, - "He4_He4_He4_to_C12" // 31, - }; - -} - -#ifdef NSE_NET -namespace NSE_INDEX -{ - constexpr int H1_index = 0; - constexpr int N_index = -1; - constexpr int He4_index = 3; - - // Each row corresponds to the rate in NetworkRates enum - // First 3 row indices for reactants, followed by 3 product indices - // last index is the corresponding reverse rate index. - - extern AMREX_GPU_MANAGED amrex::Array2D rate_indices; -} -#endif - -#endif diff --git a/networks/nova2/actual_network_data.cpp b/networks/nova2/actual_network_data.cpp deleted file mode 100644 index 467e797eec..0000000000 --- a/networks/nova2/actual_network_data.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include - - -#ifdef NSE_NET -namespace NSE_INDEX -{ - AMREX_GPU_MANAGED amrex::Array2D rate_indices { - -1, -1, 8, -1, -1, 7, -1, - -1, -1, 11, -1, -1, 9, -1, - -1, -1, 12, -1, -1, 10, -1, - -1, -1, 15, -1, -1, 14, -1, - -1, -1, 5, -1, 3, 3, -1, - -1, 0, 0, -1, -1, 1, -1, - -1, 0, 0, -1, -1, 1, -1, - -1, 0, 1, -1, -1, 2, -1, - -1, 1, 1, -1, -1, 3, -1, - -1, 0, 2, -1, -1, 3, -1, - -1, 2, 3, -1, -1, 4, -1, - -1, 0, 4, -1, -1, 5, -1, - -1, 0, 6, -1, -1, 8, -1, - -1, 3, 6, -1, -1, 13, -1, - -1, 0, 7, -1, -1, 9, -1, - -1, 0, 8, -1, -1, 11, -1, - -1, 0, 9, -1, -1, 12, -1, - -1, 3, 9, -1, -1, 16, -1, - -1, 0, 10, -1, -1, 13, -1, - -1, 0, 13, -1, -1, 15, -1, - -1, 0, 14, -1, -1, 16, -1, - -1, 1, 2, -1, 0, 3, -1, - -1, 3, 8, -1, 0, 13, -1, - -1, 0, 10, -1, 3, 6, -1, - -1, 3, 11, -1, 0, 15, -1, - -1, 0, 14, -1, 3, 9, -1, - -1, 0, 16, -1, 3, 12, -1, - -1, 2, 2, 0, 0, 3, -1, - -1, 1, 4, 0, 3, 3, -1, - -1, 2, 4, 0, 0, 3, -1, - 3, 3, 3, -1, -1, 6, -1 - }; -} -#endif - -void actual_network_init() -{ - -} diff --git a/networks/nova2/actual_rhs.H b/networks/nova2/actual_rhs.H deleted file mode 100644 index 5ea5298963..0000000000 --- a/networks/nova2/actual_rhs.H +++ /dev/null @@ -1,1179 +0,0 @@ -#ifndef actual_rhs_H -#define actual_rhs_H - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace amrex; -using namespace ArrayUtil; - -using namespace Species; -using namespace Rates; - -using namespace rate_tables; - - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void ener_gener_rate(T const& dydt, amrex::Real& enuc) -{ - - // Computes the instantaneous energy generation rate (from the nuclei) - - // This is basically e = m c**2 - - enuc = 0.0_rt; - - for (int n = 1; n <= NumSpec; ++n) { - enuc += dydt(n) * network::mion(n); - } - - enuc *= C::Legacy::enuc_conv2; -} - - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void evaluate_rates(const burn_t& state, T& rate_eval) { - - - // create molar fractions - - amrex::Array1D Y; - for (int n = 1; n <= NumSpec; ++n) { - Y(n) = state.xn[n-1] * aion_inv[n-1]; - } - - [[maybe_unused]] amrex::Real rhoy = state.rho * state.y_e; - - // Calculate Reaclib rates - - using number_t = std::conditional_t; - number_t temp = state.T; - if constexpr (do_T_derivatives) { - // seed the dual number for temperature before calculating anything with it - autodiff::seed(temp); - } - plasma_state_t pstate{}; - fill_plasma_state(pstate, temp, state.rho, Y); - - tf_t tfactors = evaluate_tfactors(state.T); - - fill_reaclib_rates(tfactors, rate_eval); - - - - // Evaluate screening factors - - amrex::Real ratraw, dratraw_dT; - amrex::Real scor, dscor_dt; - [[maybe_unused]] amrex::Real scor2, dscor2_dt; - - - { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 1.0_rt, 1.0_rt); - - - static_assert(scn_fac.z1 == 1.0_rt); - - - actual_screen(pstate, scn_fac, scor, dscor_dt); - } - - - ratraw = rate_eval.screened_rates(k_p_p_to_d_weak_bet_pos_); - rate_eval.screened_rates(k_p_p_to_d_weak_bet_pos_) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_p_to_d_weak_bet_pos_); - rate_eval.dscreened_rates_dT(k_p_p_to_d_weak_bet_pos_) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_p_p_to_d_weak_electron_capture); - rate_eval.screened_rates(k_p_p_to_d_weak_electron_capture) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_p_to_d_weak_electron_capture); - rate_eval.dscreened_rates_dT(k_p_p_to_d_weak_electron_capture) = ratraw * dscor_dt + dratraw_dT * scor; - } - - - { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 1.0_rt, 2.0_rt); - - - static_assert(scn_fac.z1 == 1.0_rt); - - - actual_screen(pstate, scn_fac, scor, dscor_dt); - } - - - ratraw = rate_eval.screened_rates(k_p_d_to_He3); - rate_eval.screened_rates(k_p_d_to_He3) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_d_to_He3); - rate_eval.dscreened_rates_dT(k_p_d_to_He3) = ratraw * dscor_dt + dratraw_dT * scor; - } - - - { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 2.0_rt, 1.0_rt, 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_d_d_to_He4); - rate_eval.screened_rates(k_d_d_to_He4) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_d_d_to_He4); - rate_eval.dscreened_rates_dT(k_d_d_to_He4) = ratraw * dscor_dt + dratraw_dT * scor; - } - - - { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 2.0_rt, 3.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_He3_to_He4_weak_bet_pos_); - rate_eval.screened_rates(k_p_He3_to_He4_weak_bet_pos_) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_He3_to_He4_weak_bet_pos_); - rate_eval.dscreened_rates_dT(k_p_He3_to_He4_weak_bet_pos_) = ratraw * dscor_dt + dratraw_dT * scor; - } - - - { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 2.0_rt, 3.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_He3_to_Be7); - rate_eval.screened_rates(k_He4_He3_to_Be7) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_He3_to_Be7); - rate_eval.dscreened_rates_dT(k_He4_He3_to_Be7) = ratraw * dscor_dt + dratraw_dT * scor; - } - - - { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 4.0_rt, 7.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_Be7_to_B8); - rate_eval.screened_rates(k_p_Be7_to_B8) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Be7_to_B8); - rate_eval.dscreened_rates_dT(k_p_Be7_to_B8) = ratraw * dscor_dt + dratraw_dT * scor; - } - - - { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 6.0_rt, 12.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_C12_to_N13); - rate_eval.screened_rates(k_p_C12_to_N13) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_C12_to_N13); - rate_eval.dscreened_rates_dT(k_p_C12_to_N13) = ratraw * dscor_dt + dratraw_dT * scor; - } - - - { - 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); - - - 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; - 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; - } - - - { - 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) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_C13_to_N14); - rate_eval.dscreened_rates_dT(k_p_C13_to_N14) = ratraw * dscor_dt + dratraw_dT * scor; - } - - - { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 7.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_N13_to_O14); - rate_eval.screened_rates(k_p_N13_to_O14) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_N13_to_O14); - rate_eval.dscreened_rates_dT(k_p_N13_to_O14) = ratraw * dscor_dt + dratraw_dT * scor; - } - - - { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 7.0_rt, 14.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_N14_to_O15); - rate_eval.screened_rates(k_p_N14_to_O15) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_N14_to_O15); - rate_eval.dscreened_rates_dT(k_p_N14_to_O15) = 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); - - - static_assert(scn_fac.z1 == 2.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; - 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; - } - - - { - 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) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_N15_to_O16); - rate_eval.dscreened_rates_dT(k_p_N15_to_O16) = 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) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_N15_to_He4_C12); - rate_eval.dscreened_rates_dT(k_p_N15_to_He4_C12) = 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); - } - - - 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_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(1.0_rt, 1.0_rt, 8.0_rt, 17.0_rt); - - - static_assert(scn_fac.z1 == 1.0_rt); - - - actual_screen(pstate, scn_fac, scor, dscor_dt); - } - - - ratraw = rate_eval.screened_rates(k_p_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_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_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_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(1.0_rt, 2.0_rt, 2.0_rt, 3.0_rt); - - - static_assert(scn_fac.z1 == 1.0_rt); - - - actual_screen(pstate, scn_fac, scor, dscor_dt); - } - - - ratraw = rate_eval.screened_rates(k_d_He3_to_p_He4); - rate_eval.screened_rates(k_d_He3_to_p_He4) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_d_He3_to_p_He4); - rate_eval.dscreened_rates_dT(k_d_He3_to_p_He4) = ratraw * dscor_dt + dratraw_dT * scor; - } - - - { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 7.0_rt, 13.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_N13_to_p_O16); - rate_eval.screened_rates(k_He4_N13_to_p_O16) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16); - rate_eval.dscreened_rates_dT(k_He4_N13_to_p_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); - - - static_assert(scn_fac.z1 == 2.0_rt); - - - actual_screen(pstate, scn_fac, scor, dscor_dt); - } - - - 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; - } - - - { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 9.0_rt, 18.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_F18_to_He4_O15); - rate_eval.screened_rates(k_p_F18_to_He4_O15) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_F18_to_He4_O15); - rate_eval.dscreened_rates_dT(k_p_F18_to_He4_O15) = ratraw * dscor_dt + dratraw_dT * scor; - } - - - { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 3.0_rt, 2.0_rt, 3.0_rt); - - - static_assert(scn_fac.z1 == 2.0_rt); - - - actual_screen(pstate, scn_fac, scor, dscor_dt); - } - - - ratraw = rate_eval.screened_rates(k_He3_He3_to_p_p_He4); - rate_eval.screened_rates(k_He3_He3_to_p_p_He4) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He3_He3_to_p_p_He4); - rate_eval.dscreened_rates_dT(k_He3_He3_to_p_p_He4) = ratraw * dscor_dt + dratraw_dT * scor; - } - - - { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 2.0_rt, 4.0_rt, 7.0_rt); - - - static_assert(scn_fac.z1 == 1.0_rt); - - - actual_screen(pstate, scn_fac, scor, dscor_dt); - } - - - ratraw = rate_eval.screened_rates(k_d_Be7_to_p_He4_He4); - rate_eval.screened_rates(k_d_Be7_to_p_He4_He4) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_d_Be7_to_p_He4_He4); - rate_eval.dscreened_rates_dT(k_d_Be7_to_p_He4_He4) = ratraw * dscor_dt + dratraw_dT * scor; - } - - - { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 3.0_rt, 4.0_rt, 7.0_rt); - - - static_assert(scn_fac.z1 == 2.0_rt); - - - actual_screen(pstate, scn_fac, scor, dscor_dt); - } - - - ratraw = rate_eval.screened_rates(k_He3_Be7_to_p_p_He4_He4); - rate_eval.screened_rates(k_He3_Be7_to_p_p_He4_He4) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He3_Be7_to_p_p_He4_He4); - rate_eval.dscreened_rates_dT(k_He3_Be7_to_p_p_He4_He4) = 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_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; - } - - - // Fill approximate rates - - fill_approx_rates(tfactors, rate_eval); - - // Calculate tabular rates - - [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; - - rate_eval.enuc_weak = 0.0_rt; - - -} - -#ifdef NSE_NET -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void get_ydot_weak(const burn_t& state, - amrex::Array1D& ydot_nuc, - amrex::Real& enuc_weak, - [[maybe_unused]] const amrex::Array1D& Y) { - /// - /// Calculate Ydots contribute only from weak reactions. - /// This is used to calculate dyedt and energy generation from - /// weak reactions for self-consistent NSE - /// - - - // initialize ydot_nuc to 0 - - for (int i = 1; i <= neqs; ++i) { - ydot_nuc(i) = 0.0_rt; - } - - rate_t rate_eval; - - [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; - [[maybe_unused]] amrex::Real rhoy = state.rho * state.y_e; - - rate_eval.enuc_weak = 0.0_rt; - - // Calculate tabular rates and get ydot_weak - - - ydot_nuc(H1) = 0.0_rt; - - ydot_nuc(H2) = 0.0_rt; - - ydot_nuc(He3) = 0.0_rt; - - ydot_nuc(He4) = 0.0_rt; - - ydot_nuc(Be7) = 0.0_rt; - - ydot_nuc(B8) = 0.0_rt; - - ydot_nuc(C12) = 0.0_rt; - - ydot_nuc(C13) = 0.0_rt; - - ydot_nuc(N13) = 0.0_rt; - - ydot_nuc(N14) = 0.0_rt; - - ydot_nuc(N15) = 0.0_rt; - - ydot_nuc(O14) = 0.0_rt; - - ydot_nuc(O15) = 0.0_rt; - - ydot_nuc(O16) = 0.0_rt; - - ydot_nuc(O17) = 0.0_rt; - - ydot_nuc(F17) = 0.0_rt; - - ydot_nuc(F18) = 0.0_rt; - - enuc_weak = rate_eval.enuc_weak; -} -#endif - - -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rhs_nuc(const burn_t& state, - amrex::Array1D& ydot_nuc, - const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) { - - using namespace Rates; - - ydot_nuc(H1) = - -screened_rates(k_p_p_to_d_weak_bet_pos_)*amrex::Math::powi<2>(Y(H1))*state.rho + - -screened_rates(k_p_p_to_d_weak_electron_capture)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)*state.y_e + - -screened_rates(k_p_d_to_He3)*Y(H2)*Y(H1)*state.rho + - -screened_rates(k_p_He3_to_He4_weak_bet_pos_)*Y(He3)*Y(H1)*state.rho + - -screened_rates(k_p_Be7_to_B8)*Y(Be7)*Y(H1)*state.rho + - -screened_rates(k_p_C12_to_N13)*Y(C12)*Y(H1)*state.rho + - -screened_rates(k_p_C13_to_N14)*Y(C13)*Y(H1)*state.rho + - -screened_rates(k_p_N13_to_O14)*Y(N13)*Y(H1)*state.rho + - -screened_rates(k_p_N14_to_O15)*Y(N14)*Y(H1)*state.rho + - -screened_rates(k_p_N15_to_O16)*Y(N15)*Y(H1)*state.rho + - -screened_rates(k_p_O16_to_F17)*Y(O16)*Y(H1)*state.rho + - -screened_rates(k_p_O17_to_F18)*Y(O17)*Y(H1)*state.rho + - screened_rates(k_d_He3_to_p_He4)*Y(He3)*Y(H2)*state.rho + - screened_rates(k_He4_N13_to_p_O16)*Y(He4)*Y(N13)*state.rho + - -screened_rates(k_p_N15_to_He4_C12)*Y(N15)*Y(H1)*state.rho + - screened_rates(k_He4_O14_to_p_F17)*Y(He4)*Y(O14)*state.rho + - -screened_rates(k_p_O17_to_He4_N14)*Y(O17)*Y(H1)*state.rho + - -screened_rates(k_p_F18_to_He4_O15)*Y(F18)*Y(H1)*state.rho + - screened_rates(k_He3_He3_to_p_p_He4)*amrex::Math::powi<2>(Y(He3))*state.rho + - screened_rates(k_d_Be7_to_p_He4_He4)*Y(Be7)*Y(H2)*state.rho + - 2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4)*Y(Be7)*Y(He3)*state.rho; - - ydot_nuc(H2) = - 0.5*screened_rates(k_p_p_to_d_weak_bet_pos_)*amrex::Math::powi<2>(Y(H1))*state.rho + - 0.5*screened_rates(k_p_p_to_d_weak_electron_capture)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)*state.y_e + - -screened_rates(k_p_d_to_He3)*Y(H2)*Y(H1)*state.rho + - -screened_rates(k_d_d_to_He4)*amrex::Math::powi<2>(Y(H2))*state.rho + - -screened_rates(k_d_He3_to_p_He4)*Y(He3)*Y(H2)*state.rho + - -screened_rates(k_d_Be7_to_p_He4_He4)*Y(Be7)*Y(H2)*state.rho; - - ydot_nuc(He3) = - screened_rates(k_p_d_to_He3)*Y(H2)*Y(H1)*state.rho + - -screened_rates(k_p_He3_to_He4_weak_bet_pos_)*Y(He3)*Y(H1)*state.rho + - -screened_rates(k_He4_He3_to_Be7)*Y(He3)*Y(He4)*state.rho + - -screened_rates(k_d_He3_to_p_He4)*Y(He3)*Y(H2)*state.rho + - -screened_rates(k_He3_He3_to_p_p_He4)*amrex::Math::powi<2>(Y(He3))*state.rho + - -screened_rates(k_He3_Be7_to_p_p_He4_He4)*Y(Be7)*Y(He3)*state.rho; - - ydot_nuc(He4) = - 2.0*screened_rates(k_B8_to_He4_He4_weak_wc12)*Y(B8) + - 0.5*screened_rates(k_d_d_to_He4)*amrex::Math::powi<2>(Y(H2))*state.rho + - screened_rates(k_p_He3_to_He4_weak_bet_pos_)*Y(He3)*Y(H1)*state.rho + - -screened_rates(k_He4_He3_to_Be7)*Y(He3)*Y(He4)*state.rho + - -screened_rates(k_He4_C12_to_O16)*Y(C12)*Y(He4)*state.rho + - -screened_rates(k_He4_N14_to_F18)*Y(He4)*Y(N14)*state.rho + - screened_rates(k_d_He3_to_p_He4)*Y(He3)*Y(H2)*state.rho + - -screened_rates(k_He4_N13_to_p_O16)*Y(He4)*Y(N13)*state.rho + - screened_rates(k_p_N15_to_He4_C12)*Y(N15)*Y(H1)*state.rho + - -screened_rates(k_He4_O14_to_p_F17)*Y(He4)*Y(O14)*state.rho + - screened_rates(k_p_O17_to_He4_N14)*Y(O17)*Y(H1)*state.rho + - screened_rates(k_p_F18_to_He4_O15)*Y(F18)*Y(H1)*state.rho + - 0.5*screened_rates(k_He3_He3_to_p_p_He4)*amrex::Math::powi<2>(Y(He3))*state.rho + - 2.0*screened_rates(k_d_Be7_to_p_He4_He4)*Y(Be7)*Y(H2)*state.rho + - 2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4)*Y(Be7)*Y(He3)*state.rho + - -0.5*screened_rates(k_He4_He4_He4_to_C12)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho); - - ydot_nuc(Be7) = - screened_rates(k_He4_He3_to_Be7)*Y(He3)*Y(He4)*state.rho + - -screened_rates(k_p_Be7_to_B8)*Y(Be7)*Y(H1)*state.rho + - -screened_rates(k_d_Be7_to_p_He4_He4)*Y(Be7)*Y(H2)*state.rho + - -screened_rates(k_He3_Be7_to_p_p_He4_He4)*Y(Be7)*Y(He3)*state.rho; - - ydot_nuc(B8) = - -screened_rates(k_B8_to_He4_He4_weak_wc12)*Y(B8) + - screened_rates(k_p_Be7_to_B8)*Y(Be7)*Y(H1)*state.rho; - - ydot_nuc(C12) = - -screened_rates(k_p_C12_to_N13)*Y(C12)*Y(H1)*state.rho + - -screened_rates(k_He4_C12_to_O16)*Y(C12)*Y(He4)*state.rho + - screened_rates(k_p_N15_to_He4_C12)*Y(N15)*Y(H1)*state.rho + - 0.16666666666666667*screened_rates(k_He4_He4_He4_to_C12)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho); - - ydot_nuc(C13) = - screened_rates(k_N13_to_C13_weak_wc12)*Y(N13) + - -screened_rates(k_p_C13_to_N14)*Y(C13)*Y(H1)*state.rho; - - ydot_nuc(N13) = - -screened_rates(k_N13_to_C13_weak_wc12)*Y(N13) + - screened_rates(k_p_C12_to_N13)*Y(C12)*Y(H1)*state.rho + - -screened_rates(k_p_N13_to_O14)*Y(N13)*Y(H1)*state.rho + - -screened_rates(k_He4_N13_to_p_O16)*Y(He4)*Y(N13)*state.rho; - - ydot_nuc(N14) = - screened_rates(k_O14_to_N14_weak_wc12)*Y(O14) + - screened_rates(k_p_C13_to_N14)*Y(C13)*Y(H1)*state.rho + - -screened_rates(k_p_N14_to_O15)*Y(N14)*Y(H1)*state.rho + - -screened_rates(k_He4_N14_to_F18)*Y(He4)*Y(N14)*state.rho + - screened_rates(k_p_O17_to_He4_N14)*Y(O17)*Y(H1)*state.rho; - - ydot_nuc(N15) = - screened_rates(k_O15_to_N15_weak_wc12)*Y(O15) + - -screened_rates(k_p_N15_to_O16)*Y(N15)*Y(H1)*state.rho + - -screened_rates(k_p_N15_to_He4_C12)*Y(N15)*Y(H1)*state.rho; - - ydot_nuc(O14) = - -screened_rates(k_O14_to_N14_weak_wc12)*Y(O14) + - screened_rates(k_p_N13_to_O14)*Y(N13)*Y(H1)*state.rho + - -screened_rates(k_He4_O14_to_p_F17)*Y(He4)*Y(O14)*state.rho; - - ydot_nuc(O15) = - -screened_rates(k_O15_to_N15_weak_wc12)*Y(O15) + - screened_rates(k_p_N14_to_O15)*Y(N14)*Y(H1)*state.rho + - screened_rates(k_p_F18_to_He4_O15)*Y(F18)*Y(H1)*state.rho; - - ydot_nuc(O16) = - screened_rates(k_He4_C12_to_O16)*Y(C12)*Y(He4)*state.rho + - screened_rates(k_p_N15_to_O16)*Y(N15)*Y(H1)*state.rho + - -screened_rates(k_p_O16_to_F17)*Y(O16)*Y(H1)*state.rho + - screened_rates(k_He4_N13_to_p_O16)*Y(He4)*Y(N13)*state.rho; - - ydot_nuc(O17) = - screened_rates(k_F17_to_O17_weak_wc12)*Y(F17) + - -screened_rates(k_p_O17_to_F18)*Y(O17)*Y(H1)*state.rho + - -screened_rates(k_p_O17_to_He4_N14)*Y(O17)*Y(H1)*state.rho; - - ydot_nuc(F17) = - -screened_rates(k_F17_to_O17_weak_wc12)*Y(F17) + - screened_rates(k_p_O16_to_F17)*Y(O16)*Y(H1)*state.rho + - screened_rates(k_He4_O14_to_p_F17)*Y(He4)*Y(O14)*state.rho; - - ydot_nuc(F18) = - screened_rates(k_He4_N14_to_F18)*Y(He4)*Y(N14)*state.rho + - screened_rates(k_p_O17_to_F18)*Y(O17)*Y(H1)*state.rho + - -screened_rates(k_p_F18_to_He4_O15)*Y(F18)*Y(H1)*state.rho; - -} - - -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void actual_rhs (burn_t& state, amrex::Array1D& ydot) -{ - for (int i = 1; i <= neqs; ++i) { - ydot(i) = 0.0_rt; - } - - - // Set molar abundances - amrex::Array1D Y; - for (int i = 1; i <= NumSpec; ++i) { - Y(i) = state.xn[i-1] * aion_inv[i-1]; - } - - // build the rates - - rate_t rate_eval; - - constexpr int do_T_derivatives = 0; - - evaluate_rates(state, rate_eval); - - rhs_nuc(state, ydot, Y, rate_eval.screened_rates); - - // ion binding energy contributions - - amrex::Real enuc; - ener_gener_rate(ydot, enuc); - - // include any weak rate neutrino losses - enuc += rate_eval.enuc_weak; - - // Get the thermal neutrino losses - - amrex::Real sneut, dsneutdt, dsneutdd, dsnuda, dsnudz; - constexpr int do_derivatives{0}; - sneut5(state.T, state.rho, state.abar, state.zbar, sneut, dsneutdt, dsneutdd, dsnuda, dsnudz); - - // Append the energy equation (this is erg/g/s) - - ydot(net_ienuc) = enuc - sneut; - -} - - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void jac_nuc(const burn_t& state, - MatrixType& jac, - const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) -{ - - amrex::Real scratch; - - scratch = -screened_rates(k_p_Be7_to_B8)*Y(Be7)*state.rho - screened_rates(k_p_C12_to_N13)*Y(C12)*state.rho - screened_rates(k_p_C13_to_N14)*Y(C13)*state.rho - screened_rates(k_p_F18_to_He4_O15)*Y(F18)*state.rho - screened_rates(k_p_He3_to_He4_weak_bet_pos_)*Y(He3)*state.rho - screened_rates(k_p_N13_to_O14)*Y(N13)*state.rho - screened_rates(k_p_N14_to_O15)*Y(N14)*state.rho - screened_rates(k_p_N15_to_He4_C12)*Y(N15)*state.rho - screened_rates(k_p_N15_to_O16)*Y(N15)*state.rho - screened_rates(k_p_O16_to_F17)*Y(O16)*state.rho - screened_rates(k_p_O17_to_F18)*Y(O17)*state.rho - screened_rates(k_p_O17_to_He4_N14)*Y(O17)*state.rho - screened_rates(k_p_d_to_He3)*Y(H2)*state.rho - 2.0*screened_rates(k_p_p_to_d_weak_bet_pos_)*Y(H1)*state.rho - 2.0*screened_rates(k_p_p_to_d_weak_electron_capture)*Y(H1)*amrex::Math::powi<2>(state.rho)*state.y_e; - jac.set(H1, H1, scratch); - - scratch = screened_rates(k_d_Be7_to_p_He4_He4)*Y(Be7)*state.rho + screened_rates(k_d_He3_to_p_He4)*Y(He3)*state.rho - screened_rates(k_p_d_to_He3)*Y(H1)*state.rho; - jac.set(H1, H2, scratch); - - scratch = 2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4)*Y(Be7)*state.rho + 2.0*screened_rates(k_He3_He3_to_p_p_He4)*Y(He3)*state.rho + screened_rates(k_d_He3_to_p_He4)*Y(H2)*state.rho - screened_rates(k_p_He3_to_He4_weak_bet_pos_)*Y(H1)*state.rho; - jac.set(H1, He3, scratch); - - scratch = screened_rates(k_He4_N13_to_p_O16)*Y(N13)*state.rho + screened_rates(k_He4_O14_to_p_F17)*Y(O14)*state.rho; - jac.set(H1, He4, scratch); - - scratch = 2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4)*Y(He3)*state.rho + screened_rates(k_d_Be7_to_p_He4_He4)*Y(H2)*state.rho - screened_rates(k_p_Be7_to_B8)*Y(H1)*state.rho; - jac.set(H1, Be7, scratch); - - scratch = -screened_rates(k_p_C12_to_N13)*Y(H1)*state.rho; - jac.set(H1, C12, scratch); - - scratch = -screened_rates(k_p_C13_to_N14)*Y(H1)*state.rho; - jac.set(H1, C13, scratch); - - scratch = screened_rates(k_He4_N13_to_p_O16)*Y(He4)*state.rho - screened_rates(k_p_N13_to_O14)*Y(H1)*state.rho; - jac.set(H1, N13, scratch); - - scratch = -screened_rates(k_p_N14_to_O15)*Y(H1)*state.rho; - jac.set(H1, N14, scratch); - - scratch = -screened_rates(k_p_N15_to_He4_C12)*Y(H1)*state.rho - screened_rates(k_p_N15_to_O16)*Y(H1)*state.rho; - jac.set(H1, N15, scratch); - - scratch = screened_rates(k_He4_O14_to_p_F17)*Y(He4)*state.rho; - jac.set(H1, O14, scratch); - - scratch = -screened_rates(k_p_O16_to_F17)*Y(H1)*state.rho; - jac.set(H1, O16, scratch); - - scratch = -screened_rates(k_p_O17_to_F18)*Y(H1)*state.rho - screened_rates(k_p_O17_to_He4_N14)*Y(H1)*state.rho; - jac.set(H1, O17, scratch); - - scratch = -screened_rates(k_p_F18_to_He4_O15)*Y(H1)*state.rho; - jac.set(H1, F18, scratch); - - scratch = -screened_rates(k_p_d_to_He3)*Y(H2)*state.rho + 1.0*screened_rates(k_p_p_to_d_weak_bet_pos_)*Y(H1)*state.rho + 1.0*screened_rates(k_p_p_to_d_weak_electron_capture)*Y(H1)*amrex::Math::powi<2>(state.rho)*state.y_e; - jac.set(H2, H1, scratch); - - scratch = -screened_rates(k_d_Be7_to_p_He4_He4)*Y(Be7)*state.rho - screened_rates(k_d_He3_to_p_He4)*Y(He3)*state.rho - 2.0*screened_rates(k_d_d_to_He4)*Y(H2)*state.rho - screened_rates(k_p_d_to_He3)*Y(H1)*state.rho; - jac.set(H2, H2, scratch); - - scratch = -screened_rates(k_d_He3_to_p_He4)*Y(H2)*state.rho; - jac.set(H2, He3, scratch); - - scratch = -screened_rates(k_d_Be7_to_p_He4_He4)*Y(H2)*state.rho; - jac.set(H2, Be7, scratch); - - scratch = -screened_rates(k_p_He3_to_He4_weak_bet_pos_)*Y(He3)*state.rho + screened_rates(k_p_d_to_He3)*Y(H2)*state.rho; - jac.set(He3, H1, scratch); - - scratch = -screened_rates(k_d_He3_to_p_He4)*Y(He3)*state.rho + screened_rates(k_p_d_to_He3)*Y(H1)*state.rho; - jac.set(He3, H2, scratch); - - scratch = -screened_rates(k_He3_Be7_to_p_p_He4_He4)*Y(Be7)*state.rho - 2.0*screened_rates(k_He3_He3_to_p_p_He4)*Y(He3)*state.rho - screened_rates(k_He4_He3_to_Be7)*Y(He4)*state.rho - screened_rates(k_d_He3_to_p_He4)*Y(H2)*state.rho - screened_rates(k_p_He3_to_He4_weak_bet_pos_)*Y(H1)*state.rho; - jac.set(He3, He3, scratch); - - scratch = -screened_rates(k_He4_He3_to_Be7)*Y(He3)*state.rho; - jac.set(He3, He4, scratch); - - scratch = -screened_rates(k_He3_Be7_to_p_p_He4_He4)*Y(He3)*state.rho; - jac.set(He3, Be7, scratch); - - scratch = screened_rates(k_p_F18_to_He4_O15)*Y(F18)*state.rho + screened_rates(k_p_He3_to_He4_weak_bet_pos_)*Y(He3)*state.rho + screened_rates(k_p_N15_to_He4_C12)*Y(N15)*state.rho + screened_rates(k_p_O17_to_He4_N14)*Y(O17)*state.rho; - jac.set(He4, H1, scratch); - - scratch = 2.0*screened_rates(k_d_Be7_to_p_He4_He4)*Y(Be7)*state.rho + screened_rates(k_d_He3_to_p_He4)*Y(He3)*state.rho + 1.0*screened_rates(k_d_d_to_He4)*Y(H2)*state.rho; - jac.set(He4, H2, scratch); - - scratch = 2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4)*Y(Be7)*state.rho + 1.0*screened_rates(k_He3_He3_to_p_p_He4)*Y(He3)*state.rho - screened_rates(k_He4_He3_to_Be7)*Y(He4)*state.rho + screened_rates(k_d_He3_to_p_He4)*Y(H2)*state.rho + screened_rates(k_p_He3_to_He4_weak_bet_pos_)*Y(H1)*state.rho; - jac.set(He4, He3, scratch); - - scratch = -screened_rates(k_He4_C12_to_O16)*Y(C12)*state.rho - screened_rates(k_He4_He3_to_Be7)*Y(He3)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_N13_to_p_O16)*Y(N13)*state.rho - screened_rates(k_He4_N14_to_F18)*Y(N14)*state.rho - screened_rates(k_He4_O14_to_p_F17)*Y(O14)*state.rho; - jac.set(He4, He4, scratch); - - scratch = 2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4)*Y(He3)*state.rho + 2.0*screened_rates(k_d_Be7_to_p_He4_He4)*Y(H2)*state.rho; - jac.set(He4, Be7, scratch); - - scratch = 2.0*screened_rates(k_B8_to_He4_He4_weak_wc12); - jac.set(He4, B8, scratch); - - scratch = -screened_rates(k_He4_C12_to_O16)*Y(He4)*state.rho; - jac.set(He4, C12, scratch); - - scratch = -screened_rates(k_He4_N13_to_p_O16)*Y(He4)*state.rho; - jac.set(He4, N13, scratch); - - scratch = -screened_rates(k_He4_N14_to_F18)*Y(He4)*state.rho; - jac.set(He4, N14, scratch); - - scratch = screened_rates(k_p_N15_to_He4_C12)*Y(H1)*state.rho; - jac.set(He4, N15, scratch); - - scratch = -screened_rates(k_He4_O14_to_p_F17)*Y(He4)*state.rho; - jac.set(He4, O14, scratch); - - scratch = screened_rates(k_p_O17_to_He4_N14)*Y(H1)*state.rho; - jac.set(He4, O17, scratch); - - scratch = screened_rates(k_p_F18_to_He4_O15)*Y(H1)*state.rho; - jac.set(He4, F18, scratch); - - scratch = -screened_rates(k_p_Be7_to_B8)*Y(Be7)*state.rho; - jac.set(Be7, H1, scratch); - - scratch = -screened_rates(k_d_Be7_to_p_He4_He4)*Y(Be7)*state.rho; - jac.set(Be7, H2, scratch); - - scratch = -screened_rates(k_He3_Be7_to_p_p_He4_He4)*Y(Be7)*state.rho + screened_rates(k_He4_He3_to_Be7)*Y(He4)*state.rho; - jac.set(Be7, He3, scratch); - - scratch = screened_rates(k_He4_He3_to_Be7)*Y(He3)*state.rho; - jac.set(Be7, He4, scratch); - - scratch = -screened_rates(k_He3_Be7_to_p_p_He4_He4)*Y(He3)*state.rho - screened_rates(k_d_Be7_to_p_He4_He4)*Y(H2)*state.rho - screened_rates(k_p_Be7_to_B8)*Y(H1)*state.rho; - jac.set(Be7, Be7, scratch); - - scratch = screened_rates(k_p_Be7_to_B8)*Y(Be7)*state.rho; - jac.set(B8, H1, scratch); - - scratch = screened_rates(k_p_Be7_to_B8)*Y(H1)*state.rho; - jac.set(B8, Be7, scratch); - - scratch = -screened_rates(k_B8_to_He4_He4_weak_wc12); - jac.set(B8, B8, scratch); - - scratch = -screened_rates(k_p_C12_to_N13)*Y(C12)*state.rho + screened_rates(k_p_N15_to_He4_C12)*Y(N15)*state.rho; - jac.set(C12, H1, scratch); - - scratch = -screened_rates(k_He4_C12_to_O16)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho); - jac.set(C12, He4, scratch); - - scratch = -screened_rates(k_He4_C12_to_O16)*Y(He4)*state.rho - screened_rates(k_p_C12_to_N13)*Y(H1)*state.rho; - jac.set(C12, C12, scratch); - - scratch = screened_rates(k_p_N15_to_He4_C12)*Y(H1)*state.rho; - jac.set(C12, N15, scratch); - - scratch = -screened_rates(k_p_C13_to_N14)*Y(C13)*state.rho; - jac.set(C13, H1, scratch); - - scratch = -screened_rates(k_p_C13_to_N14)*Y(H1)*state.rho; - jac.set(C13, C13, scratch); - - scratch = screened_rates(k_N13_to_C13_weak_wc12); - jac.set(C13, N13, scratch); - - scratch = screened_rates(k_p_C12_to_N13)*Y(C12)*state.rho - screened_rates(k_p_N13_to_O14)*Y(N13)*state.rho; - jac.set(N13, H1, scratch); - - scratch = -screened_rates(k_He4_N13_to_p_O16)*Y(N13)*state.rho; - jac.set(N13, He4, scratch); - - scratch = screened_rates(k_p_C12_to_N13)*Y(H1)*state.rho; - jac.set(N13, C12, scratch); - - scratch = -screened_rates(k_He4_N13_to_p_O16)*Y(He4)*state.rho - screened_rates(k_N13_to_C13_weak_wc12) - screened_rates(k_p_N13_to_O14)*Y(H1)*state.rho; - jac.set(N13, N13, scratch); - - scratch = screened_rates(k_p_C13_to_N14)*Y(C13)*state.rho - screened_rates(k_p_N14_to_O15)*Y(N14)*state.rho + screened_rates(k_p_O17_to_He4_N14)*Y(O17)*state.rho; - jac.set(N14, H1, scratch); - - scratch = -screened_rates(k_He4_N14_to_F18)*Y(N14)*state.rho; - jac.set(N14, He4, scratch); - - scratch = screened_rates(k_p_C13_to_N14)*Y(H1)*state.rho; - jac.set(N14, C13, scratch); - - scratch = -screened_rates(k_He4_N14_to_F18)*Y(He4)*state.rho - screened_rates(k_p_N14_to_O15)*Y(H1)*state.rho; - jac.set(N14, N14, scratch); - - scratch = screened_rates(k_O14_to_N14_weak_wc12); - jac.set(N14, O14, scratch); - - scratch = screened_rates(k_p_O17_to_He4_N14)*Y(H1)*state.rho; - jac.set(N14, O17, scratch); - - scratch = -screened_rates(k_p_N15_to_He4_C12)*Y(N15)*state.rho - screened_rates(k_p_N15_to_O16)*Y(N15)*state.rho; - jac.set(N15, H1, scratch); - - scratch = -screened_rates(k_p_N15_to_He4_C12)*Y(H1)*state.rho - screened_rates(k_p_N15_to_O16)*Y(H1)*state.rho; - jac.set(N15, N15, scratch); - - scratch = screened_rates(k_O15_to_N15_weak_wc12); - jac.set(N15, O15, scratch); - - scratch = screened_rates(k_p_N13_to_O14)*Y(N13)*state.rho; - jac.set(O14, H1, scratch); - - scratch = -screened_rates(k_He4_O14_to_p_F17)*Y(O14)*state.rho; - jac.set(O14, He4, scratch); - - scratch = screened_rates(k_p_N13_to_O14)*Y(H1)*state.rho; - jac.set(O14, N13, scratch); - - scratch = -screened_rates(k_He4_O14_to_p_F17)*Y(He4)*state.rho - screened_rates(k_O14_to_N14_weak_wc12); - jac.set(O14, O14, scratch); - - scratch = screened_rates(k_p_F18_to_He4_O15)*Y(F18)*state.rho + screened_rates(k_p_N14_to_O15)*Y(N14)*state.rho; - jac.set(O15, H1, scratch); - - scratch = screened_rates(k_p_N14_to_O15)*Y(H1)*state.rho; - jac.set(O15, N14, scratch); - - scratch = -screened_rates(k_O15_to_N15_weak_wc12); - jac.set(O15, O15, scratch); - - scratch = screened_rates(k_p_F18_to_He4_O15)*Y(H1)*state.rho; - jac.set(O15, F18, scratch); - - scratch = screened_rates(k_p_N15_to_O16)*Y(N15)*state.rho - screened_rates(k_p_O16_to_F17)*Y(O16)*state.rho; - jac.set(O16, H1, scratch); - - scratch = screened_rates(k_He4_C12_to_O16)*Y(C12)*state.rho + screened_rates(k_He4_N13_to_p_O16)*Y(N13)*state.rho; - jac.set(O16, He4, scratch); - - scratch = screened_rates(k_He4_C12_to_O16)*Y(He4)*state.rho; - jac.set(O16, C12, scratch); - - scratch = screened_rates(k_He4_N13_to_p_O16)*Y(He4)*state.rho; - jac.set(O16, N13, scratch); - - scratch = screened_rates(k_p_N15_to_O16)*Y(H1)*state.rho; - jac.set(O16, N15, scratch); - - scratch = -screened_rates(k_p_O16_to_F17)*Y(H1)*state.rho; - jac.set(O16, O16, scratch); - - scratch = -screened_rates(k_p_O17_to_F18)*Y(O17)*state.rho - screened_rates(k_p_O17_to_He4_N14)*Y(O17)*state.rho; - jac.set(O17, H1, scratch); - - scratch = -screened_rates(k_p_O17_to_F18)*Y(H1)*state.rho - screened_rates(k_p_O17_to_He4_N14)*Y(H1)*state.rho; - jac.set(O17, O17, scratch); - - scratch = screened_rates(k_F17_to_O17_weak_wc12); - jac.set(O17, F17, scratch); - - scratch = screened_rates(k_p_O16_to_F17)*Y(O16)*state.rho; - jac.set(F17, H1, scratch); - - scratch = screened_rates(k_He4_O14_to_p_F17)*Y(O14)*state.rho; - jac.set(F17, He4, scratch); - - scratch = screened_rates(k_He4_O14_to_p_F17)*Y(He4)*state.rho; - jac.set(F17, O14, scratch); - - scratch = screened_rates(k_p_O16_to_F17)*Y(H1)*state.rho; - jac.set(F17, O16, scratch); - - scratch = -screened_rates(k_F17_to_O17_weak_wc12); - jac.set(F17, F17, scratch); - - scratch = -screened_rates(k_p_F18_to_He4_O15)*Y(F18)*state.rho + screened_rates(k_p_O17_to_F18)*Y(O17)*state.rho; - jac.set(F18, H1, scratch); - - scratch = screened_rates(k_He4_N14_to_F18)*Y(N14)*state.rho; - jac.set(F18, He4, scratch); - - scratch = screened_rates(k_He4_N14_to_F18)*Y(He4)*state.rho; - jac.set(F18, N14, scratch); - - scratch = screened_rates(k_p_O17_to_F18)*Y(H1)*state.rho; - jac.set(F18, O17, scratch); - - scratch = -screened_rates(k_p_F18_to_He4_O15)*Y(H1)*state.rho; - jac.set(F18, F18, scratch); - - -} - - - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void actual_jac(const burn_t& state, MatrixType& jac) -{ - - // Set molar abundances - amrex::Array1D Y; - for (int i = 1; i <= NumSpec; ++i) { - Y(i) = state.xn[i-1] * aion_inv[i-1]; - } - - - jac.zero(); - - rate_derivs_t rate_eval; - - constexpr int do_T_derivatives = 1; - - evaluate_rates(state, rate_eval); - - // Species Jacobian elements with respect to other species - - jac_nuc(state, jac, Y, rate_eval.screened_rates); - - // Energy generation rate Jacobian elements with respect to species - - for (int j = 1; j <= NumSpec; ++j) { - auto jac_slice_2 = [&](int i) -> amrex::Real { return jac.get(i, j); }; - ener_gener_rate(jac_slice_2, jac(net_ienuc,j)); - } - - // Account for the thermal neutrino losses - - amrex::Real sneut, dsneutdt, dsneutdd, dsnuda, dsnudz; - constexpr int do_derivatives{1}; - sneut5(state.T, state.rho, state.abar, state.zbar, sneut, dsneutdt, dsneutdd, dsnuda, dsnudz); - - for (int j = 1; j <= NumSpec; ++j) { - amrex::Real b1 = (-state.abar * state.abar * dsnuda + (zion[j-1] - state.zbar) * state.abar * dsnudz); - jac.add(net_ienuc, j, -b1); - } - - - // Evaluate the Jacobian elements with respect to energy by - // calling the RHS using d(rate) / dT and then transform them - // to our energy integration variable. - - amrex::Array1D yderivs; - - rhs_nuc(state, yderivs, Y, rate_eval.dscreened_rates_dT); - - for (int k = 1; k <= NumSpec; k++) { - jac.set(k, net_ienuc, temperature_to_energy_jacobian(state, yderivs(k))); - } - - - // finally, d(de/dt)/de - - amrex::Real jac_e_T; - ener_gener_rate(yderivs, jac_e_T); - jac_e_T -= dsneutdt; - jac.set(net_ienuc, net_ienuc, temperature_to_energy_jacobian(state, jac_e_T)); - -} - - -AMREX_INLINE -void actual_rhs_init () { - - init_tabular(); - -} - - -#endif diff --git a/networks/nova2/inputs.burn_cell.VODE b/networks/nova2/inputs.burn_cell.VODE deleted file mode 100644 index 66434599a5..0000000000 --- a/networks/nova2/inputs.burn_cell.VODE +++ /dev/null @@ -1,43 +0,0 @@ -unit_test.run_prefix = "react_pynucastro_" - -unit_test.small_temp = 1e5 -unit_test.small_dens = 1e5 - -integrator.burner_verbose = 0 - -# Set which jacobian to use -# 1 = analytic jacobian -# 2 = numerical jacobian -integrator.jacobian = 1 - -integrator.renormalize_abundances = 0 - -integrator.rtol_spec = 1.0e-6 -integrator.rtol_enuc = 1.0e-6 -integrator.atol_spec = 1.0e-6 -integrator.atol_enuc = 1.0e-6 - - -unit_test.tmax = 1.0 -unit_test.nsteps = 1000 - -unit_test.density = 1.0e7 -unit_test.temperature = 1.0e8 - -unit_test.X1 = 1.0 -unit_test.X2 = 0.0 -unit_test.X3 = 0.0 -unit_test.X4 = 0.0 -unit_test.X5 = 0.0 -unit_test.X6 = 0.0 -unit_test.X7 = 0.0 -unit_test.X8 = 0.0 -unit_test.X9 = 0.0 -unit_test.X10 = 0.0 -unit_test.X11 = 0.0 -unit_test.X12 = 0.0 -unit_test.X13 = 0.0 -unit_test.X14 = 0.0 -unit_test.X15 = 0.0 -unit_test.X16 = 0.0 -unit_test.X17 = 0.0 diff --git a/networks/nova2/nova.png b/networks/nova2/nova.png deleted file mode 100644 index 8867d19795d5ea5f1493963236c1319cc1a9716b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63679 zcmdSA1yfw%(lrVpgy1Ada7} zf!@}^l!5f_u^V^@qMew!BMc0>{_`(vp+JE-49xW>@vnkPZs`Y$?p|8Ti{O*dmMVsn z{>4GD>ynw%#5#S8w=vl5ybW|CKY z=4ro%GgFK%HW7y8 z`7_}@47zx=bBJxWb7M^e>;k8uT2Fi zu+0$p|GfVf()7&x|F=8wx$W^_@f?j_e*M2jEHv#GDgEE^2lnCqciie^cmE$BWD|M( zI=dym>U;e^ru5$j8wv9c-}(JIn=`on@1@tV|9f>@dB@$oV?F<`4@31QoHAD9$lzniV%sji$oNniJ2Hi;84Z5=P#XBGi<^8v*-46lz@kokqXR8E zuS`8y#aPna|FVv4U;jO5_rMbMch#6|uE5aeItA&%{iifkq;)M7lO)cMqg7(KZw$Ww za~T7}BW1A{09 zR%eb|sbadFFKb@SLh!q-*_fNU`_By!Oag}NNIszkaqc49Xy8BF#XtYN1?(MogO}VP z8F%1VwEs1Q{WQd5*6VlFI@K0S)lBTA{7dPHSuMy&aKI9*C{J)FL3l;}Tvu;^bvkE* zUqAfiq_$QlMdZK9pZ5a;aj->3nC~+8j48~ove2dV)P(z#p%pq2mw6;^N!r=uscDAz zb;7~hPflvRjBi+q4yDpafnUYYMASuuK$GdGU6^P7#YRkF z|C??IS#yumT!KsyS&`@4@0!+(8n(?4ngQyT0T>PciFl1l z>~~ef{M=nbg|$j=t; z%H2JdQDy-)ec)Zh(9K1;?{I>uPS~)?dUgo$+O($aW(`EgaCbb9kkgKIewc^65C5-` z{@mxLy{dgXT2U#;ByGC6gfo(%&AjurrJ}w!yoJu(X7&$!F1}?kUpjXU^}KXHUMlG4 zuK5CjQ7FX5#%Aks-qv(1N4WW7S`#;lNPF{ageT^MWTG8J+x6sb`H7!Mnn>|Kj%Q_i zEDx2`En18%yb79K+95c<*++LXM@ILae2+5*W{ z^jj~z34&E1%YYjre|U7zISAjP05 zr5Yee5#wNGlF5_Ptxrl(&p>URd}j5-sS6cy=r ze1kVP+ngbTeU6N{U2CZ$p!^Qy)KtyAUw>?R&BYfM=M9u*oqk8n)sm*7xy1V`6nrpV z&7A;z8XW0rC>QTrLKN8x_%!Zh&28g5WqD zHb~B8w!If4#Fg=&m6iQ}WZr|`K%8?+chG!gmPaYha&*1H=q;!6GRkuU}JEPC(a=~2F$DYQn81!-vT;6I4Ng@X1E zq&ivx*YTwvU%wk=FkSCp$ND+8T(RS3&>E%w0j+maov9FsEt7QhOZMPTYEC+l@B_+P zwrjVxIhIh*lc*b*xR3Nnv}Atgc{w>Rc9Kol9Jhu7w{O!jKLr1CUM3OYb^NH-NtN>y zm7SGgK51=V8RvqQv3Ha>5JvpB1&7r^hSwBDDW^3p9U)VN4)sfghO^ zg+3tE4!Uq$cvuI`4;%=B4mqg_Fr&??+BYPs)ZmurNG;T`kt3o;Ak*7H0D`$>7x3imS;V)uc-wE6Xfb;QeiWdK51#6|My$!-}Bb$PkZophScu zX}yYDerRR1`=b+9m!qkBmMx=fn&;Y^KNarH!B)reT`VQ2r2B%EUWmk?lb)V_>+ue{ z{T$#TSw>b;EkW5uMPVVt9-)<$%ttL(OXsXkk$8%*8~zByddsce_nQp9t1MYJQjn88 z$s~u(1l7~3tcOUbH`G(zD*HK$<$4~bgJzW5mw;s$yP1s3_Z>yE%brR`oO4}FNC%V} z=uwr0#X=J>g3{TBhmzYZlWqtCHN~?e`Ua0PsH6=$iJCUqKm^ZvJTF-A*e?T?aD;1{ zkl1a-AH+s(VAMN_Rm!pKg_$;~^Yj=M-$N;veIqk-jH7YU&vc9idHK=5tK8uRa zx!|4wpnGB6Ss%RS1^g-@lSI~{&F`{`E;V*(;q}L7I_9a1$dom6fg72@(<#SlQU*wY1XnaFBo_Fa?vqYIyF8 z3){`zBFn}x>O<y98PBiykx<`Vw<7=<-MPCPjA!9s-0q28rzl8l-fd5~t_Op#JC` zg9BhQjFy_+4`wO?&;{uPHSQ=$g9^N)QEzhUH|IgRx}U`~N!l)W3~l$! zz@xT-BXIS3d5!k2aq`O-=}6pGU>9s$A?wFPY(YR$F(z_oD0(7=D_)>2UFlg*HpmlR zUUGr9@2r0RI9||PH3d~bgXQRl=EB!p$V?h zMe%C!WpE*}P{T?`U$-ggR}iq>-P>msM*VN;8#dnN%VdN@_BT^ZGxZPWYVMCi1U80P zMu%K5pLZj&zq<}vbC7ON}6^!AjCa`vTTa$`oQeaRI6atAmIm#LF1f##qb zn!@65AXlYtUlFbnHAY5HU~*upB+nWjz1)s>s#P`P&tSU?X@;m}_~R(L)kyzyH%9|IqEVt97Ntd3m8nLmF0b0Vx8146V2+t-LU zYSM;Hx5@?eAPmR^$J@Ww5&t(wkA!XFH~?F)BSN z*JrQ+Ayal{@^!E>>00fYo~bPJGqAYm50QE2Hg#^PSFmB*lglP!;(u!&`4f-aeES^<+g~I?$ALl zL4)Mk;?u$T4oIOcU+LzjElDbSq0U!#ACIXXo1xTH6<5S1S+Jkz7=EB+>-BQwIs3G& z2pZ{kn(*ZE5#pb?qbB1`G;a(~?DhW4I*ah0>R*Kr4Fd-sBU4=LFcDKO#W_uQd17!O zlDSazR+n{1x@uIf(eagXs~Dv%S;x}#oz;ZS{%zI7&dS=!Hs#BhC_1)g2R)V&e45#* zB^W>RrmXwARO*Hfu|BhvuIo0gL|G%YKthg=;rr8Oe_1Sp$bZ`tX%K))9Ab%fr{-eE z^HjFjc_;1JbScSr7;)O2JG!QZZPZ~ps<(t)V6?{GxYIa7e@NtF34QT%7b7&qu4tVz z_xuOw_{6tH^Lh(m)Mfa1)U%ivEIEvejCJaB*eSOpZ!AGE0-NY)u=?V%)`(rM2q~Sh z$WQ%4<+{5r;0QDC|Cw@7Faa<539i7xIrHeD=5mX;rWCl9J@m|3AaQ`2`zM@*GST)h zy>ZVH&Ro}SdGsbka|YKpR;A@tNQaE)j2cEePwEAfjPTMWWxL%iL82NP{dY31!#J(mbDCd%sHcF4&TMh zc9l`1!Qwv8tNNZ5zw6M;aIuS3m>Z`DdOGD2^gV)#s7v6o>_fh5AR=^>l4W>llI;{0 zqa?Dz>_)!6d}jvJNWnj2oEO>h(zDP4@zu*+8B=4x%Kf}Jo~v{pDs(%o;>%+j*! z&}IF?!@j}6wN4obnz{3<9qYxm+Kid;Qz4n7ec0Qzxv`8<4 zr%Og%Ty_Q*uT}d_MJPHSYfWH2)b;?dMOFVONM!kUzRBji)DXQrV_BcS`^&6;wTamn z52Hl`tC4eW65{iodi$}vaoxfHU`-o8m7?4TM=%kOZ#%3J!I5@rS=g3P`Xi>nh$BLH!g0*i&Y=KQNh1jJ!Xb%f}6d$k%@U1`;1 z)$N`2sv5+*`X%{wC(~MEbbf%KJYyk%RK=2qq>y`pyKLA|u8D<0zrKBj149YpKr66B ztLwK3z6NP^p#9{%3F=2-7L82*;Q5FKZJwaE`_VSe)m-FP&6zpRl~g(oMLhBW%-3pa zUEMoIgf1RNJdYUa4ZIAm(?9qz{@+ApF%Lgz2^?bb{yrR~4i7Fi!Sjz;YfW(Z=)-HsD7Uj11Pd-=AE;fA z;NqTBkbj5FhM&_bbTMLn2~@O!rb`b@)>@YlFjNGy+^)v+Yy=PdxQe^N?0CsXFb<;4%e`<}rOy=GaiVTK=J_i1act*;N0SM=B_&>?W_>OeU9V#!J7L2}0 zGv6$=uad`tFEKpMI2c(uf&M+gFFkZRx)b8*30;n1-103@uWY^GQHkPTrx{$jgZ-LcOSyj+huzEq%PAYk9@HY|e5FBkz9yluV^C5O(Sp!B3FF^#Z%C;L* z3iRZRG-5C){$dr~g&0wm)h~0jku&+SsVnMbv>@^@0mXV8c#Sx(-^~qgsG|TU_ef&K z{?+La!&A(_o=JW>V+6zfdahdd+40VCIh`}L1o)e2K?B&pGz789eCKLh^}4>|1o!dy z&+^Ry(L2Z9yf4TkAqeO!E)qX>>l5tje>faq`Psbc5#yDm$Om8FCAJW%a)b7LtU^Xd zC2skdjvkMNbqbeY-lLNkPb;8ZJ2`nkci&8`H_un6ob}QXPkQe*%8=qiH3A=XwCS>F zTV4hjwEIbG|!z>|7o~OnmHR zOWoT+ysaKZ!xBz3L}MRk+J98uY`uSZnx)EakgPE9BW=WVAbVYq6nC#>u$}`ex0Y`5 z!Zc*Iz0`n;MUpUJul)*}ztxgEL-&4^g!3*uzJ6_g8@=&?FF@3j^=ps^t0>;P*n%G@ z_iMObZa

LGui9EN1B2Jlv;Zu5L7;R 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

Z{A1_uV7*n{^ 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 TjCk0Eg3oz%U9}PwtKk0vt}YDB diff --git a/networks/nova2/nova2.py b/networks/nova2/nova2.py deleted file mode 100644 index 2a7301f490..0000000000 --- a/networks/nova2/nova2.py +++ /dev/null @@ -1,25 +0,0 @@ -import pynucastro as pyna -from pynucastro.networks import AmrexAstroCxxNetwork - -mylibrary = pyna.rates.ReacLibLibrary() - -all_nuclei = ["p", "h2", "he3", "he4", "be7", "b8", - "c12", "c13", "n13", "n14", "n15", - "o14", "o15", "o16", "o17", "f17", "f18"] - -nova_library = mylibrary.linking_nuclei(all_nuclei, with_reverse=False) - -print(nova_library) - -net = AmrexAstroCxxNetwork(libraries=[nova_library]) -net.write_network() - -rc = pyna.RateCollection(libraries=[nova_library]) - -comp = pyna.Composition(rc.get_nuclei()) -comp.set_solar_like() - -rho = 1.e4 -T = 9.e7 - -rc.plot(rho, T, comp, outfile="nova.png") diff --git a/networks/nova2/partition_functions.H b/networks/nova2/partition_functions.H deleted file mode 100644 index 6fe1122bfb..0000000000 --- a/networks/nova2/partition_functions.H +++ /dev/null @@ -1,167 +0,0 @@ -#ifndef PARTITION_FUNCTIONS_H -#define PARTITION_FUNCTIONS_H - -#include -#include - -#include -#include -#include - -using namespace amrex; -using namespace Species; - -namespace part_fun { - - - - // interpolation routine - - template - AMREX_GPU_HOST_DEVICE AMREX_INLINE - void interpolate_pf(const amrex::Real t9, const amrex::Real (&temp_array)[npts], const amrex::Real (&pf_array)[npts], - amrex::Real& pf, amrex::Real& dpf_dT) { - - if (t9 >= temp_array[0] && t9 < temp_array[npts-1]) { - - // find the largest temperature element <= t9 using a binary search - - int left = 0; - int right = npts; - - while (left < right) { - int mid = (left + right) / 2; - if (temp_array[mid] > t9) { - right = mid; - } else { - left = mid + 1; - } - } - - const int idx = right - 1; - - // now we have temp_array[idx] <= t9 < temp_array[idx+1] - - // construct the slope -- this is (log10(pf_{i+1}) - log10(pf_i)) / (T_{i+1} - T_i) - - amrex::Real slope = (pf_array[idx+1] - pf_array[idx]) / (temp_array[idx+1] - temp_array[idx]); - - // find the PF - - amrex::Real log10_pf = pf_array[idx] + slope * (t9 - temp_array[idx]); - pf = std::pow(10.0_rt, log10_pf); - - // find the derivative (with respect to T, not T9) - - amrex::Real dpf_dT9 = pf * M_LN10 * slope; - dpf_dT = dpf_dT9 / 1.e9_rt; - - } else { - - // T < the smallest T or >= the largest T in the partition function table - pf = 1.0; - dpf_dT = 0.0; - - } - - } - - struct pf_cache_t { - // Store the coefficient and derivative adjacent in memory, as they're - // always accessed at the same time. - // The entries will be default-initialized to zero, which is fine since - // log10(x) is never zero. - amrex::Array2D data{}; - }; - -} - -// main interface - -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void get_partition_function(const int inuc, [[maybe_unused]] const tf_t& tfactors, - amrex::Real& pf, amrex::Real& dpf_dT) { - - // inuc is the 1-based index for the species - - switch (inuc) { - - - default: - - pf = 1.0_rt; - dpf_dT = 0.0_rt; - - } - -} - -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void get_partition_function_cached(const int inuc, const tf_t& tfactors, - part_fun::pf_cache_t& pf_cache, - amrex::Real& pf, amrex::Real& dpf_dT) { - if (pf_cache.data(inuc, 1) != 0.0_rt) { - // present in cache - amrex::ignore_unused(tfactors); - pf = pf_cache.data(inuc, 1); - dpf_dT = pf_cache.data(inuc, 2); - } else { - get_partition_function(inuc, tfactors, pf, dpf_dT); - pf_cache.data(inuc, 1) = pf; - pf_cache.data(inuc, 2) = dpf_dT; - } -} - -// spins - -AMREX_GPU_HOST_DEVICE AMREX_INLINE -constexpr amrex::Real get_spin_state(const int inuc) { - - amrex::Real spin = -1.0; - - switch (inuc) { // NOLINT(bugprone-switch-missing-default-case) - - case He4: - case C12: - case O14: - case O16: - spin = 1; - break; - - case H1: - case He3: - case C13: - case N13: - case N15: - case O15: - spin = 2; - break; - - case H2: - case N14: - case F18: - spin = 3; - break; - - case Be7: - spin = 4; - break; - - case B8: - spin = 5; - break; - - case O17: - case F17: - spin = 6; - break; - - - } - - return spin; - -} - - -#endif diff --git a/networks/nova2/pynucastro.net b/networks/nova2/pynucastro.net deleted file mode 100644 index 7012ca4859..0000000000 --- a/networks/nova2/pynucastro.net +++ /dev/null @@ -1,17 +0,0 @@ -hydrogen-1 H1 1.0 1.0 -hydrogen-2 H2 2.0 1.0 -helium-3 He3 3.0 2.0 -helium-4 He4 4.0 2.0 -beryllium-7 Be7 7.0 4.0 -boron-8 B8 8.0 5.0 -carbon-12 C12 12.0 6.0 -carbon-13 C13 13.0 6.0 -nitrogen-13 N13 13.0 7.0 -nitrogen-14 N14 14.0 7.0 -nitrogen-15 N15 15.0 7.0 -oxygen-14 O14 14.0 8.0 -oxygen-15 O15 15.0 8.0 -oxygen-16 O16 16.0 8.0 -oxygen-17 O17 17.0 8.0 -fluorine-17 F17 17.0 9.0 -fluorine-18 F18 18.0 9.0 diff --git a/networks/nova2/reaclib_rates.H b/networks/nova2/reaclib_rates.H deleted file mode 100644 index 56c0bc24d0..0000000000 --- a/networks/nova2/reaclib_rates.H +++ /dev/null @@ -1,1786 +0,0 @@ -#ifndef REACLIB_RATES_H -#define REACLIB_RATES_H - -#include -#include - -#include -#include -#include - -using namespace Rates; -using namespace Species; - -struct rate_t { - amrex::Array1D screened_rates; - amrex::Real enuc_weak; -}; - -struct rate_derivs_t { - amrex::Array1D screened_rates; - amrex::Array1D dscreened_rates_dT; - amrex::Real enuc_weak; -}; - - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_N13_to_C13_weak_wc12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // N13 --> C13 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // wc12w - ln_set_rate = -6.7601; - amrex::ignore_unused(tfactors); - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_O14_to_N14_weak_wc12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // O14 --> N14 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // wc12w - ln_set_rate = -4.62354; - amrex::ignore_unused(tfactors); - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_O15_to_N15_weak_wc12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // O15 --> N15 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // wc12w - ln_set_rate = -5.17053; - amrex::ignore_unused(tfactors); - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_F17_to_O17_weak_wc12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // F17 --> O17 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // wc12w - ln_set_rate = -4.53318; - amrex::ignore_unused(tfactors); - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_B8_to_He4_He4_weak_wc12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // B8 --> He4 + He4 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // wc12w - ln_set_rate = -0.105148; - amrex::ignore_unused(tfactors); - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_p_to_d_weak_bet_pos_(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // p + p --> d - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // bet+w - ln_set_rate = -34.7863 + -3.51193 * tfactors.T913i + 3.10086 * tfactors.T913 - + -0.198314 * tfactors.T9 + 0.0126251 * tfactors.T953 + -1.02517 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -3.51193 * tfactors.T943i + (1.0/3.0) * 3.10086 * tfactors.T923i - + -0.198314 + (5.0/3.0) * 0.0126251 * tfactors.T923 + -1.02517 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_p_to_d_weak_electron_capture(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // p + p --> d - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // ecw - ln_set_rate = -43.6499 + -0.00246064 * tfactors.T9i + -2.7507 * tfactors.T913i + -0.424877 * tfactors.T913 - + 0.015987 * tfactors.T9 + -0.000690875 * tfactors.T953 + -0.207625 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.00246064 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.7507 * tfactors.T943i + (1.0/3.0) * -0.424877 * tfactors.T923i - + 0.015987 + (5.0/3.0) * -0.000690875 * tfactors.T923 + -0.207625 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_d_to_He3(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // d + p --> He3 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // de04 - ln_set_rate = 8.93525 + -3.7208 * tfactors.T913i + 0.198654 * tfactors.T913 - + 0.333333 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -3.7208 * tfactors.T943i + (1.0/3.0) * 0.198654 * tfactors.T923i - + 0.333333 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // de04n - ln_set_rate = 7.52898 + -3.7208 * tfactors.T913i + 0.871782 * tfactors.T913 - + -0.666667 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -3.7208 * tfactors.T943i + (1.0/3.0) * 0.871782 * tfactors.T923i - + -0.666667 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_d_d_to_He4(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // d + d --> He4 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // nacrn - ln_set_rate = 3.78177 + -4.26166 * tfactors.T913i + -0.119233 * tfactors.T913 - + 0.778829 * tfactors.T9 + -0.0925203 * tfactors.T953 + -0.666667 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -4.26166 * tfactors.T943i + (1.0/3.0) * -0.119233 * tfactors.T923i - + 0.778829 + (5.0/3.0) * -0.0925203 * tfactors.T923 + -0.666667 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_He3_to_He4_weak_bet_pos_(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // He3 + p --> He4 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // bet+w - ln_set_rate = -27.7611 + -4.30107e-12 * tfactors.T9i + -6.141 * tfactors.T913i + -1.93473e-09 * tfactors.T913 - + 2.04145e-10 * tfactors.T9 + -1.80372e-11 * tfactors.T953 + -0.666667 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.30107e-12 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -6.141 * tfactors.T943i + (1.0/3.0) * -1.93473e-09 * tfactors.T923i - + 2.04145e-10 + (5.0/3.0) * -1.80372e-11 * tfactors.T923 + -0.666667 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_He3_to_Be7(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // He3 + He4 --> Be7 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // cd08n - ln_set_rate = 17.7075 + -12.8271 * tfactors.T913i + -3.8126 * tfactors.T913 - + 0.0942285 * tfactors.T9 + -0.00301018 * tfactors.T953 + 1.33333 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -12.8271 * tfactors.T943i + (1.0/3.0) * -3.8126 * tfactors.T923i - + 0.0942285 + (5.0/3.0) * -0.00301018 * tfactors.T923 + 1.33333 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // cd08n - ln_set_rate = 15.6099 + -12.8271 * tfactors.T913i + -0.0308225 * tfactors.T913 - + -0.654685 * tfactors.T9 + 0.0896331 * tfactors.T953 + -0.666667 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -12.8271 * tfactors.T943i + (1.0/3.0) * -0.0308225 * tfactors.T923i - + -0.654685 + (5.0/3.0) * 0.0896331 * tfactors.T923 + -0.666667 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Be7_to_B8(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // Be7 + p --> B8 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // nacrn - ln_set_rate = 12.5315 + -10.264 * tfactors.T913i + -0.203472 * tfactors.T913 - + 0.121083 * tfactors.T9 + -0.00700063 * tfactors.T953 + -0.666667 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -10.264 * tfactors.T943i + (1.0/3.0) * -0.203472 * tfactors.T923i - + 0.121083 + (5.0/3.0) * -0.00700063 * tfactors.T923 + -0.666667 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // nacrr - ln_set_rate = 7.73399 + -7.345 * tfactors.T9i - + -1.5 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 7.345 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_C12_to_N13(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // C12 + p --> N13 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // ls09n - ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 - + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i - + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // ls09r - ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 - + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i - + 0.148883 + -1.5 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_C12_to_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // C12 + He4 --> O16 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // nac2 - ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 - + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i - + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // nac2 - ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 - + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i - + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_C13_to_N14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // C13 + p --> N14 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // nacrr - ln_set_rate = 15.1825 + -13.5543 * tfactors.T9i - + -1.5 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.5543 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // nacrn - ln_set_rate = 18.5155 + -13.72 * tfactors.T913i + -0.450018 * tfactors.T913 - + 3.70823 * tfactors.T9 + -1.70545 * tfactors.T953 + -0.666667 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -13.72 * tfactors.T943i + (1.0/3.0) * -0.450018 * tfactors.T923i - + 3.70823 + (5.0/3.0) * -1.70545 * tfactors.T923 + -0.666667 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // nacrr - ln_set_rate = 13.9637 + -5.78147 * tfactors.T9i + -0.196703 * tfactors.T913 - + 0.142126 * tfactors.T9 + -0.0238912 * tfactors.T953 + -1.5 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.78147 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.196703 * tfactors.T923i - + 0.142126 + (5.0/3.0) * -0.0238912 * tfactors.T923 + -1.5 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_N13_to_O14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // N13 + p --> O14 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // lg06r - ln_set_rate = 10.9971 + -6.12602 * tfactors.T9i + 1.57122 * tfactors.T913i - + -1.5 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.12602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.57122 * tfactors.T943i - + -1.5 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // lg06n - ln_set_rate = 18.1356 + -15.1676 * tfactors.T913i + 0.0955166 * tfactors.T913 - + 3.0659 * tfactors.T9 + -0.507339 * tfactors.T953 + -0.666667 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.1676 * tfactors.T943i + (1.0/3.0) * 0.0955166 * tfactors.T923i - + 3.0659 + (5.0/3.0) * -0.507339 * tfactors.T923 + -0.666667 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_N14_to_O15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // N14 + p --> O15 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // im05n - ln_set_rate = 17.01 + -15.193 * tfactors.T913i + -0.161954 * tfactors.T913 - + -7.52123 * tfactors.T9 + -0.987565 * tfactors.T953 + -0.666667 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -0.161954 * tfactors.T923i - + -7.52123 + (5.0/3.0) * -0.987565 * tfactors.T923 + -0.666667 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // im05r - ln_set_rate = 6.73578 + -4.891 * tfactors.T9i - + 0.0682 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.891 * tfactors.T9i * tfactors.T9i - + 0.0682 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // im05r - ln_set_rate = 7.65444 + -2.998 * tfactors.T9i - + -1.5 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.998 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // im05n - ln_set_rate = 20.1169 + -15.193 * tfactors.T913i + -4.63975 * tfactors.T913 - + 9.73458 * tfactors.T9 + -9.55051 * tfactors.T953 + 0.333333 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -4.63975 * tfactors.T923i - + 9.73458 + (5.0/3.0) * -9.55051 * tfactors.T923 + 0.333333 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_N14_to_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // N14 + He4 --> F18 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // il10n - ln_set_rate = 21.5339 + -36.2504 * tfactors.T913i - + -5.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.2504 * tfactors.T943i - + (5.0/3.0) * -5.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // il10r - ln_set_rate = 13.8995 + -10.9656 * tfactors.T9i + -5.6227 * tfactors.T913i - + -1.5 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.9656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i - + -1.5 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // il10r - ln_set_rate = 0.196838 + -5.16034 * tfactors.T9i - + -1.5 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.16034 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_N15_to_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // N15 + p --> O16 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // li10n - ln_set_rate = 20.0176 + -15.24 * tfactors.T913i + 0.334926 * tfactors.T913 - + 4.59088 * tfactors.T9 + -4.78468 * tfactors.T953 + -0.666667 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.24 * tfactors.T943i + (1.0/3.0) * 0.334926 * tfactors.T923i - + 4.59088 + (5.0/3.0) * -4.78468 * tfactors.T923 + -0.666667 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // li10r - ln_set_rate = 14.5444 + -10.2295 * tfactors.T9i - + 0.0459037 * tfactors.T9 + -1.5 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.2295 * tfactors.T9i * tfactors.T9i - + 0.0459037 + -1.5 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // li10r - ln_set_rate = 6.59056 + -2.92315 * tfactors.T9i - + -1.5 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.92315 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_O16_to_F17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // O16 + p --> F17 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // ia08n - ln_set_rate = 19.0904 + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 - + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + -0.666667 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i - + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + -0.666667 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_O17_to_F18(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // O17 + p --> F18 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // il10n - ln_set_rate = 15.8929 + -16.4035 * tfactors.T913i + 4.31885 * tfactors.T913 - + -0.709921 * tfactors.T9 + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.4035 * tfactors.T943i + (1.0/3.0) * 4.31885 * tfactors.T923i - + -0.709921 + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // il10r - ln_set_rate = 9.39048 + -6.22828 * tfactors.T9i + 2.31435 * tfactors.T913 - + -0.302835 * tfactors.T9 + 0.020133 * tfactors.T953 + -1.5 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.22828 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.31435 * tfactors.T923i - + -0.302835 + (5.0/3.0) * 0.020133 * tfactors.T923 + -1.5 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // il10r - ln_set_rate = -13.077 + -0.746296 * tfactors.T9i - + -1.5 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.746296 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_d_He3_to_p_He4(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // He3 + d --> p + He4 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // de04 - ln_set_rate = 24.6839 + -7.182 * tfactors.T913i + 0.473288 * tfactors.T913 - + 1.46847 * tfactors.T9 + -27.9603 * tfactors.T953 + -0.666667 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -7.182 * tfactors.T943i + (1.0/3.0) * 0.473288 * tfactors.T923i - + 1.46847 + (5.0/3.0) * -27.9603 * tfactors.T923 + -0.666667 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // de04 - ln_set_rate = 41.2969 + -7.182 * tfactors.T913i + -17.1349 * tfactors.T913 - + 1.36908 * tfactors.T9 + -0.0814423 * tfactors.T953 + 3.35395 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -7.182 * tfactors.T943i + (1.0/3.0) * -17.1349 * tfactors.T923i - + 1.36908 + (5.0/3.0) * -0.0814423 * tfactors.T923 + 3.35395 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_N13_to_p_O16(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // N13 + He4 --> p + O16 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // cf88n - ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 - + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i - + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_N15_to_He4_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // N15 + p --> He4 + C12 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // nacrn - ln_set_rate = 27.4764 + -15.253 * tfactors.T913i + 1.59318 * tfactors.T913 - + 2.4479 * tfactors.T9 + -2.19708 * tfactors.T953 + -0.666667 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.253 * tfactors.T943i + (1.0/3.0) * 1.59318 * tfactors.T923i - + 2.4479 + (5.0/3.0) * -2.19708 * tfactors.T923 + -0.666667 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // nacrr - ln_set_rate = -6.57522 + -1.1638 * tfactors.T9i + 22.7105 * tfactors.T913 - + -2.90707 * tfactors.T9 + 0.205754 * tfactors.T953 + -1.5 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.1638 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.7105 * tfactors.T923i - + -2.90707 + (5.0/3.0) * 0.205754 * tfactors.T923 + -1.5 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // nacrr - ln_set_rate = 20.8972 + -7.406 * tfactors.T9i - + -1.5 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 7.406 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // nacrr - ln_set_rate = -4.87347 + -2.02117 * tfactors.T9i + 30.8497 * tfactors.T913 - + -8.50433 * tfactors.T9 + -1.54426 * tfactors.T953 + -1.5 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.02117 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 30.8497 * tfactors.T923i - + -8.50433 + (5.0/3.0) * -1.54426 * tfactors.T923 + -1.5 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_O14_to_p_F17(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // O14 + He4 --> p + F17 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // Ha96n - ln_set_rate = 40.8358 + -39.388 * tfactors.T913i + -17.4673 * tfactors.T913 - + 35.3029 * tfactors.T9 + -24.8162 * tfactors.T953 + -0.666667 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.388 * tfactors.T943i + (1.0/3.0) * -17.4673 * tfactors.T923i - + 35.3029 + (5.0/3.0) * -24.8162 * tfactors.T923 + -0.666667 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // Ha96r - ln_set_rate = 16.3087 + -22.51 * tfactors.T9i - + -1.5 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.51 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // Ha96r - ln_set_rate = 11.1184 + -13.6 * tfactors.T9i - + -1.5 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.6 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // Ha96r - ln_set_rate = -106.091 + -0.453036 * tfactors.T9i - + -1.5 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.453036 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // Ha96r - ln_set_rate = 12.1289 + -12.0223 * tfactors.T9i - + -1.5 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.0223 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // Ha96r - ln_set_rate = 18.6518 + -26.0 * tfactors.T9i - + -1.5 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 26.0 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_O17_to_He4_N14(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // O17 + p --> He4 + N14 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // il10r - ln_set_rate = 5.5336 + -2.11477 * tfactors.T9i - + -1.5 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.11477 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // il10r - ln_set_rate = -7.20763 + -0.753395 * tfactors.T9i - + -1.5 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.753395 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // il10n - ln_set_rate = 19.579 + -16.9078 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.9078 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // il10r - ln_set_rate = 10.174 + -4.95865 * tfactors.T9i + 5.10182 * tfactors.T913 - + 0.379373 * tfactors.T9 + -0.0672515 * tfactors.T953 + -1.5 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.95865 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.10182 * tfactors.T923i - + 0.379373 + (5.0/3.0) * -0.0672515 * tfactors.T923 + -1.5 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_F18_to_He4_O15(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // F18 + p --> He4 + O15 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // il10n - ln_set_rate = 62.0058 + -21.4023 * tfactors.T913i + -80.8891 * tfactors.T913 - + 134.6 * tfactors.T9 + -126.504 * tfactors.T953 + -0.666667 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -80.8891 * tfactors.T923i - + 134.6 + (5.0/3.0) * -126.504 * tfactors.T923 + -0.666667 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // il10r - ln_set_rate = 1.75704 + -3.01675 * tfactors.T9i + 13.3223 * tfactors.T913 - + -1.36696 * tfactors.T9 + 0.0757363 * tfactors.T953 + -1.5 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.01675 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.3223 * tfactors.T923i - + -1.36696 + (5.0/3.0) * 0.0757363 * tfactors.T923 + -1.5 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // il10r - ln_set_rate = -31.7388 + -0.376432 * tfactors.T9i + 61.738 * tfactors.T913 - + -108.29 * tfactors.T9 + -34.2365 * tfactors.T953 + -1.5 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.376432 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 61.738 * tfactors.T923i - + -108.29 + (5.0/3.0) * -34.2365 * tfactors.T923 + -1.5 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He3_He3_to_p_p_He4(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // He3 + He3 --> p + p + He4 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // nacrn - ln_set_rate = 24.7788 + -12.277 * tfactors.T913i + -0.103699 * tfactors.T913 - + -0.0649967 * tfactors.T9 + 0.0168191 * tfactors.T953 + -0.666667 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -12.277 * tfactors.T943i + (1.0/3.0) * -0.103699 * tfactors.T923i - + -0.0649967 + (5.0/3.0) * 0.0168191 * tfactors.T923 + -0.666667 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_d_Be7_to_p_He4_He4(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // Be7 + d --> p + He4 + He4 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // cf88n - ln_set_rate = 27.6987 + -12.428 * tfactors.T913i - + -0.666667 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -12.428 * tfactors.T943i - + -0.666667 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He3_Be7_to_p_p_He4_He4(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // Be7 + He3 --> p + p + He4 + He4 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // mafon - ln_set_rate = 31.7435 + -5.45213e-12 * tfactors.T9i + -21.793 * tfactors.T913i + -1.98126e-09 * tfactors.T913 - + 1.84204e-10 * tfactors.T9 + -1.46403e-11 * tfactors.T953 + -0.666667 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.45213e-12 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.793 * tfactors.T943i + (1.0/3.0) * -1.98126e-09 * tfactors.T923i - + 1.84204e-10 + (5.0/3.0) * -1.46403e-11 * tfactors.T923 + -0.666667 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_He4_He4_to_C12(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // He4 + He4 + He4 --> C12 - - rate = 0.0; - drate_dT = 0.0; - - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // fy05r - ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 - + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i - + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // fy05r - ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 - + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i - + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - - // fy05n - ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 - + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; - - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i - + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 / 1.0e9; - } - -} - - - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) -{ - - amrex::Real rate; - amrex::Real drate_dT; - - rate_N13_to_C13_weak_wc12(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_N13_to_C13_weak_wc12) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N13_to_C13_weak_wc12) = drate_dT; - - } - rate_O14_to_N14_weak_wc12(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_O14_to_N14_weak_wc12) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O14_to_N14_weak_wc12) = drate_dT; - - } - rate_O15_to_N15_weak_wc12(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_O15_to_N15_weak_wc12) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O15_to_N15_weak_wc12) = drate_dT; - - } - rate_F17_to_O17_weak_wc12(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_F17_to_O17_weak_wc12) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F17_to_O17_weak_wc12) = drate_dT; - - } - rate_B8_to_He4_He4_weak_wc12(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_B8_to_He4_He4_weak_wc12) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_B8_to_He4_He4_weak_wc12) = drate_dT; - - } - rate_p_p_to_d_weak_bet_pos_(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_p_to_d_weak_bet_pos_) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_p_to_d_weak_bet_pos_) = drate_dT; - - } - rate_p_p_to_d_weak_electron_capture(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_p_to_d_weak_electron_capture) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_p_to_d_weak_electron_capture) = drate_dT; - - } - rate_p_d_to_He3(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_d_to_He3) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_d_to_He3) = drate_dT; - - } - rate_d_d_to_He4(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_d_d_to_He4) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_d_d_to_He4) = drate_dT; - - } - rate_p_He3_to_He4_weak_bet_pos_(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_He3_to_He4_weak_bet_pos_) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_He3_to_He4_weak_bet_pos_) = drate_dT; - - } - rate_He4_He3_to_Be7(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_He3_to_Be7) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_He3_to_Be7) = drate_dT; - - } - rate_p_Be7_to_B8(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_Be7_to_B8) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Be7_to_B8) = drate_dT; - - } - rate_p_C12_to_N13(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_C12_to_N13) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C12_to_N13) = drate_dT; - - } - rate_He4_C12_to_O16(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_C12_to_O16) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_C12_to_O16) = drate_dT; - - } - rate_p_C13_to_N14(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_C13_to_N14) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C13_to_N14) = drate_dT; - - } - rate_p_N13_to_O14(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_N13_to_O14) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_N13_to_O14) = drate_dT; - - } - rate_p_N14_to_O15(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_N14_to_O15) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_N14_to_O15) = drate_dT; - - } - rate_He4_N14_to_F18(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_N14_to_F18) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N14_to_F18) = drate_dT; - - } - rate_p_N15_to_O16(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_N15_to_O16) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_N15_to_O16) = drate_dT; - - } - rate_p_O16_to_F17(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_O16_to_F17) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_F17) = drate_dT; - - } - rate_p_O17_to_F18(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_O17_to_F18) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O17_to_F18) = drate_dT; - - } - rate_d_He3_to_p_He4(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_d_He3_to_p_He4) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_d_He3_to_p_He4) = drate_dT; - - } - rate_He4_N13_to_p_O16(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_N13_to_p_O16) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16) = drate_dT; - - } - rate_p_N15_to_He4_C12(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_N15_to_He4_C12) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_N15_to_He4_C12) = drate_dT; - - } - rate_He4_O14_to_p_F17(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_O14_to_p_F17) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O14_to_p_F17) = drate_dT; - - } - rate_p_O17_to_He4_N14(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_O17_to_He4_N14) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O17_to_He4_N14) = drate_dT; - - } - rate_p_F18_to_He4_O15(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_F18_to_He4_O15) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F18_to_He4_O15) = drate_dT; - - } - rate_He3_He3_to_p_p_He4(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He3_He3_to_p_p_He4) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He3_He3_to_p_p_He4) = drate_dT; - - } - rate_d_Be7_to_p_He4_He4(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_d_Be7_to_p_He4_He4) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_d_Be7_to_p_He4_He4) = drate_dT; - - } - rate_He3_Be7_to_p_p_He4_He4(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He3_Be7_to_p_p_He4_He4) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He3_Be7_to_p_p_He4_He4) = drate_dT; - - } - rate_He4_He4_He4_to_C12(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_He4_He4_to_C12) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12) = drate_dT; - - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_approx_rates([[maybe_unused]] const tf_t& tfactors, [[maybe_unused]] T& rate_eval) -{ - - [[maybe_unused]] amrex::Real rate{}; - [[maybe_unused]] amrex::Real drate_dT{}; - - -} - -#endif diff --git a/networks/nova2/table_rates.H b/networks/nova2/table_rates.H deleted file mode 100644 index a2c5b79b54..0000000000 --- a/networks/nova2/table_rates.H +++ /dev/null @@ -1,399 +0,0 @@ -#ifndef TABLE_RATES_H -#define TABLE_RATES_H - -#include -#include -#include -#include - -#include - -using namespace amrex; - -void init_tabular(); - -// Table is expected to be in terms of dens*ye and temp (logarithmic, cgs units) -// Table energy units are expected in terms of ergs - -// all tables are expected to have columns: -// Log(rhoY) Log(T) mu dQ Vs Log(e-cap-rate) Log(nu-energy-loss) Log(gamma-energy) -// Log(g/cm^3) Log(K) erg erg erg Log(1/s) Log(erg/s) Log(erg/s) -// - -const int num_tables = 0; - -enum TableVars -{ - jtab_mu = 1, - jtab_dq = 2, - jtab_vs = 3, - jtab_rate = 4, - jtab_nuloss = 5, - jtab_gamma = 6, - num_vars = jtab_gamma -}; - - -struct table_t -{ - int ntemp; - int nrhoy; - int nvars; - int nheader; -}; - -// we add a 7th index, k_index_dlogr_dlogt used for computing the derivative -// of Log(rate) with respect of Log(temperature) by using the table -// values. It isn't an index into the table but into the 'entries' -// array. Is important to mention that although we compute dlogr/dlogT is -// the computed quantity in 'entries', we pursue ultimately -// dr/dt as the final desired quantity to be computed for this index. - -const int k_index_dlogr_dlogt = 7; -const int add_vars = 1; // 1 Additional Var in entries - - -namespace rate_tables -{ -} - -template -void init_tab_info(const table_t& tf, const std::string& file, R& log_rhoy_table, T& log_temp_table, D& data) -{ - // This function initializes the selected tabular-rate tables. From the tables we are interested - // on the rate, neutrino-energy-loss and the gamma-energy entries. - - std::ifstream table; - table.open(file); - - if (!table.is_open()) { - // the table was not present or we could not open it; abort - amrex::Error("table could not be opened"); - } - - std::string line; - - // read and skip over the header - - for (int i = 0; i < tf.nheader; ++i) { - std::getline(table, line); - } - - // now the data -- there are 2 extra columns, for log_temp and log_rhoy - - for (int j = 1; j <= tf.nrhoy; ++j) { - for (int i = 1; i <= tf.ntemp; ++i) { - std::getline(table, line); - if (line.empty()) { - amrex::Error("Error reading table data"); - } - - std::istringstream sdata(line); - - sdata >> log_rhoy_table(j) >> log_temp_table(i); - - for (int n = 1; n <= tf.nvars; ++n) { - sdata >> data(i, j, n); - } - } - } - table.close(); -} - - -template -AMREX_INLINE AMREX_GPU_HOST_DEVICE -int vector_index_lu(const int vlen, const V& vector, const amrex::Real fvar) -{ - - // Returns the greatest index of vector for which vector(index) < fvar. - // Return 1 if fvar < vector(1) - // Return size(vector)-1 if fvar > vector(size(vector)) - // The interval [index, index+1] brackets fvar for fvar within the range of vector. - - int index; - - if (fvar < vector(1)) { - index = 1; - } else if (fvar > vector(vlen)) { - index = vlen - 1; - } else { - int nup = vlen; - int ndn = 1; - for (int i = 1; i <= vlen; ++i) { - int j = ndn + (nup - ndn)/2; - if (fvar < vector(j)) { - nup = j; - } else { - ndn = j; - } - if ((nup - ndn) == 1) { - break; - } - } - index = ndn; - } - return index; -} - - -AMREX_INLINE AMREX_GPU_HOST_DEVICE -amrex::Real -evaluate_linear_1d(const amrex::Real fhi, const amrex::Real flo, const amrex::Real xhi, const amrex::Real xlo, const amrex::Real x) -{ - // This function is a 1-D linear interpolator, that keeps x constant to xlo or xhi, based - // on the side, if x is outside [xlo, xhi] respectively. - - amrex::Real xx = Clamp(x, xlo, xhi); - amrex::Real f = flo + (fhi - flo) * (xx - xlo) / (xhi - xlo); - - return f; -} - -AMREX_INLINE AMREX_GPU_HOST_DEVICE -amrex::Real -evaluate_linear_2d(const amrex::Real fip1jp1, const amrex::Real fip1j, const amrex::Real fijp1, const amrex::Real fij, - const amrex::Real xhi, const amrex::Real xlo, const amrex::Real yhi, const amrex::Real ylo, - const amrex::Real x, const amrex::Real y) -{ - // This is the 2-D linear interpolator, as an extension of evaluate_linear_1d. - - amrex::Real f; - amrex::Real dx = xhi - xlo; - amrex::Real dy = yhi - ylo; - - amrex::Real E = fij; - amrex::Real C = (fijp1 - fij) / dy; - amrex::Real B = (fip1j - fij) / dx; - amrex::Real A = (fip1jp1 - B * dx - C * dy - E) / (dx * dy); - - amrex::Real xx = Clamp(x, xlo, xhi); - amrex::Real yy = Clamp(y, ylo, yhi); - - f = A * (xx - xlo) * (yy - ylo) + - B * (xx - xlo) + - C * (yy - ylo) + - E; - - return f; -} - - -template -AMREX_INLINE AMREX_GPU_HOST_DEVICE -amrex::Real -evaluate_vars(const table_t& table_meta, const R& log_rhoy_table, const T& log_temp_table, const D& data, - const amrex::Real log_rhoy, const amrex::Real log_temp, const int component) -{ - // This function evaluates the 2-D interpolator, for several pairs of rho_ye and temperature. - - int jtemp_lo = vector_index_lu(table_meta.ntemp, log_temp_table, log_temp); - int jtemp_hi = jtemp_lo + 1; - - int irhoy_lo = vector_index_lu(table_meta.nrhoy, log_rhoy_table, log_rhoy); - int irhoy_hi = irhoy_lo + 1; - - amrex::Real rhoy_lo = log_rhoy_table(irhoy_lo); - amrex::Real rhoy_hi = log_rhoy_table(irhoy_hi); - - amrex::Real t_lo = log_temp_table(jtemp_lo); - amrex::Real t_hi = log_temp_table(jtemp_hi); - - amrex::Real fij = data(jtemp_lo, irhoy_lo, component); - amrex::Real fip1j = data(jtemp_lo, irhoy_hi, component); - amrex::Real fijp1 = data(jtemp_hi, irhoy_lo, component); - amrex::Real fip1jp1 = data(jtemp_hi, irhoy_hi, component); - - amrex::Real r = evaluate_linear_2d(fip1jp1, fip1j, fijp1, fij, - rhoy_hi, rhoy_lo, t_hi, t_lo, log_rhoy, log_temp); - - return r; -} - - -template -AMREX_INLINE AMREX_GPU_HOST_DEVICE -amrex::Real -evaluate_dr_dtemp(const table_t& table_meta, const R& log_rhoy_table, const T& log_temp_table, const D& data, - const amrex::Real log_rhoy, const amrex::Real log_temp) -{ - // The main objective of this function is compute dlogr_dlogt. - - int irhoy_lo = vector_index_lu(table_meta.nrhoy, log_rhoy_table, log_rhoy); - int irhoy_hi = irhoy_lo + 1; - - int jtemp_lo = vector_index_lu(table_meta.ntemp, log_temp_table, log_temp); - int jtemp_hi = jtemp_lo + 1; - - amrex::Real dlogr_dlogt; - - //Now we compute the forward finite difference on the boundary - - if ((jtemp_lo - 1 < 1) || (jtemp_hi + 1 > table_meta.ntemp)) { - - // In this case we are in the boundaries of the table. - // At the boundary, we compute the forward-j finite difference - // to compute dlogr_dlogt_i and dlogr_dlogt_ip1, using the - // following stencil: - // - // - // fijp1-----------fip1jp1 - // | | - // | | - // | | - // | | - // | | - // | | - // | | - // fij-------------fip1j - // - // with the following result: - // - // dlogr_dlogt_i --------dlogr_dlogt_ip1 - // - // Finally, we perform a 1d-linear interpolation between dlogr_dlogt_ip1 - // and dlogr_dlogt_i to compute dlogr_dlogt - - amrex::Real log_rhoy_lo = log_rhoy_table(irhoy_lo); - amrex::Real log_rhoy_hi = log_rhoy_table(irhoy_hi); - - amrex::Real log_temp_lo = log_temp_table(jtemp_lo); - amrex::Real log_temp_hi = log_temp_table(jtemp_hi); - - amrex::Real fij = data(jtemp_lo, irhoy_lo, jtab_rate); - amrex::Real fip1j = data(jtemp_lo, irhoy_hi, jtab_rate); - amrex::Real fijp1 = data(jtemp_hi, irhoy_lo, jtab_rate); - amrex::Real fip1jp1 = data(jtemp_hi, irhoy_hi, jtab_rate); - - amrex::Real dlogr_dlogt_i = (fijp1 - fij) / (log_temp_hi - log_temp_lo); - amrex::Real dlogr_dlogt_ip1 = (fip1jp1 - fip1j) / (log_temp_hi - log_temp_lo); - - if ((log_temp < log_temp_lo) || (log_temp > log_temp_hi)) { - dlogr_dlogt = 0.0_rt; - } else { - dlogr_dlogt = evaluate_linear_1d(dlogr_dlogt_ip1, dlogr_dlogt_i, log_rhoy_hi, log_rhoy_lo, log_rhoy); - } - - } else { - - // In this case, we use a bigger stencil to reconstruct the - // temperature derivatives in the j and j+1 temperature positions, - // using the cetral-j finite differences: - // - // fijp2 ------------fip1jp2 - // | | - // | | - // | | - // | | - // | | - // | | - // | | - // fijp1------------fip1jp1 - // | | - // | | - // | | - // | | - // | | - // | | - // | | - // fij------------- fip1j - // | | - // | | - // | | - // | | - // | | - // | | - // | | - // fijm1------------fip1jm1 - // - // with the following result: - // - // - // dr_dt_ijp1 --------dr_dt_ip1jp1 - // | | - // | | - // | | - // | | - // | | - // | | - // | | - // dr_dt_ij-----------dr_dt_ip1j - // - // Finally, we perform a 2d-linear interpolation to - // compute dlogr_dlogt. - - amrex::Real log_temp_jm1 = log_temp_table(jtemp_lo-1); - amrex::Real log_temp_j = log_temp_table(jtemp_lo); - amrex::Real log_temp_jp1 = log_temp_table(jtemp_hi); - amrex::Real log_temp_jp2 = log_temp_table(jtemp_hi+1); - - amrex::Real log_rhoy_lo = log_rhoy_table(irhoy_lo); - amrex::Real log_rhoy_hi = log_rhoy_table(irhoy_hi); - - amrex::Real fijm1 = data(jtemp_lo-1, irhoy_lo, jtab_rate); - amrex::Real fij = data(jtemp_lo, irhoy_lo, jtab_rate); - amrex::Real fijp1 = data(jtemp_hi, irhoy_lo, jtab_rate); - amrex::Real fijp2 = data(jtemp_hi+1, irhoy_lo, jtab_rate); - - amrex::Real fip1jm1 = data(jtemp_lo-1, irhoy_hi, jtab_rate); - amrex::Real fip1j = data(jtemp_lo, irhoy_hi, jtab_rate); - amrex::Real fip1jp1 = data(jtemp_hi, irhoy_hi, jtab_rate); - amrex::Real fip1jp2 = data(jtemp_hi+1, irhoy_hi, jtab_rate); - - amrex::Real dlogr_dlogt_ij = (fijp1 - fijm1)/(log_temp_jp1 - log_temp_jm1); - amrex::Real dlogr_dlogt_ijp1 = (fijp2 - fij)/(log_temp_jp2 - log_temp_j); - amrex::Real dlogr_dlogt_ip1j = (fip1jp1 - fip1jm1)/(log_temp_jp1 - log_temp_jm1); - amrex::Real dlogr_dlogt_ip1jp1 = (fip1jp2 - fip1j)/(log_temp_jp2 - log_temp_j); - - dlogr_dlogt = evaluate_linear_2d(dlogr_dlogt_ip1jp1, dlogr_dlogt_ip1j, dlogr_dlogt_ijp1, dlogr_dlogt_ij, - log_rhoy_hi, log_rhoy_lo, log_temp_jp1, log_temp_j, - log_rhoy, log_temp); - - } - return dlogr_dlogt; -} - - -template -AMREX_INLINE AMREX_GPU_HOST_DEVICE -void -get_entries(const table_t& table_meta, const R& log_rhoy_table, const T& log_temp_table, const D& data, - const amrex::Real log_rhoy, const amrex::Real log_temp, amrex::Array1D& entries) -{ - for (int ivar = 1; ivar <= num_vars; ivar++) { - entries(ivar) = evaluate_vars(table_meta, log_rhoy_table, log_temp_table, data, - log_rhoy, log_temp, ivar); - } - - entries(k_index_dlogr_dlogt) = evaluate_dr_dtemp(table_meta, log_rhoy_table, log_temp_table, data, - log_rhoy, log_temp); -} - -template -AMREX_INLINE AMREX_GPU_HOST_DEVICE -void -tabular_evaluate(const table_t& table_meta, - const R& log_rhoy_table, const T& log_temp_table, const D& data, - const amrex::Real rhoy, const amrex::Real temp, - amrex::Real& rate, amrex::Real& drate_dt, amrex::Real& edot_nu, amrex::Real& edot_gamma) -{ - amrex::Array1D entries; - - // Get the table entries at this rhoy, temp - - amrex::Real log_rhoy = std::log10(rhoy); - amrex::Real log_temp = std::log10(temp); - - get_entries(table_meta, log_rhoy_table, log_temp_table, data, - log_rhoy, log_temp, entries); - - // Fill outputs: rate, d(rate)/d(temperature), and - // (negative) neutrino loss contribution to energy generation - - rate = std::pow(10.0_rt, entries(jtab_rate)); - drate_dt = rate * entries(k_index_dlogr_dlogt) / temp; - edot_nu = -std::pow(10.0_rt, entries(jtab_nuloss)); - edot_gamma = std::pow(10.0_rt, entries(jtab_gamma)); -} - -#endif diff --git a/networks/nova2/table_rates_data.cpp b/networks/nova2/table_rates_data.cpp deleted file mode 100644 index 63b38aff19..0000000000 --- a/networks/nova2/table_rates_data.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#include -#include -#include -#include - -using namespace amrex; - -namespace rate_tables -{ - - -} - - -void init_tabular() -{ - - amrex::Print() << "reading in network electron-capture / beta-decay tables..." << std::endl; - - using namespace rate_tables; - - -} diff --git a/networks/nova2/tfactors.H b/networks/nova2/tfactors.H deleted file mode 100644 index 3ec02d562f..0000000000 --- a/networks/nova2/tfactors.H +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef TFACTORS_H -#define TFACTORS_H - -struct tf_t { - amrex::Real T9; - amrex::Real T9i; - amrex::Real T943i; - amrex::Real T923i; - amrex::Real T913i; - amrex::Real T913; - amrex::Real T923; - amrex::Real T953; - amrex::Real lnT9; -}; - -AMREX_GPU_HOST_DEVICE AMREX_INLINE -tf_t evaluate_tfactors(const amrex::Real T) -{ - - tf_t tf; - tf.T9 = T / 1.e9_rt; - tf.T9i = 1.0_rt / tf.T9; - tf.T913 = std::cbrt(tf.T9); - tf.T913i = 1.0_rt / tf.T913; - tf.T923i = tf.T913i * tf.T913i; - tf.T943i = tf.T9i * tf.T913i; - tf.T923 = tf.T913 * tf.T913; - tf.T953 = tf.T9 * tf.T923; - tf.lnT9 = std::log(tf.T9); - - return tf; -} - -#endif From a867e701992efddfba8795c6570d94b59c370919 Mon Sep 17 00:00:00 2001 From: Alexander Smith Date: Sun, 23 Feb 2025 16:00:52 -0500 Subject: [PATCH 02/10] Updating more files --- networks/general_null/nova.net | 21 +++++++++++++++++++++ networks/nova/actual_rhs.H | 13 ++++++++++--- networks/nova/nova.py | 4 ---- 3 files changed, 31 insertions(+), 7 deletions(-) create mode 100644 networks/general_null/nova.net diff --git a/networks/general_null/nova.net b/networks/general_null/nova.net new file mode 100644 index 0000000000..ea482a078e --- /dev/null +++ b/networks/general_null/nova.net @@ -0,0 +1,21 @@ +# The nova network contains the pp-chain, some +# nuclei from the x-process, like Be and B, and +# the CNO cycle, allowing a leakage throguh f18. + +hydrogen-1 H1 1.0 1.0 +hydrogen-2 H2 2.0 1.0 +helium-3 He3 3.0 2.0 +helium-4 He4 4.0 2.0 +beryllium-7 Be7 7.0 4.0 +boron-8 B8 8.0 5.0 +carbon-12 C12 12.0 6.0 +carbon-13 C13 13.0 6.0 +nitrogen-13 N13 13.0 7.0 +nitrogen-14 N14 14.0 7.0 +nitrogen-15 N15 15.0 7.0 +oxygen-14 O14 14.0 8.0 +oxygen-15 O15 15.0 8.0 +oxygen-16 O16 16.0 8.0 +oxygen-17 O17 17.0 8.0 +fluorine-17 F17 17.0 9.0 +fluorine-18 F18 18.0 9.0 diff --git a/networks/nova/actual_rhs.H b/networks/nova/actual_rhs.H index 9763566e31..d810e6ebcd 100644 --- a/networks/nova/actual_rhs.H +++ b/networks/nova/actual_rhs.H @@ -10,7 +10,9 @@ #include #include #include +#ifdef NEUTRINOS #include +#endif #include #include @@ -803,9 +805,12 @@ void actual_rhs (burn_t& state, amrex::Array1D& ydot) // Get the thermal neutrino losses - amrex::Real sneut, dsneutdt, dsneutdd, dsnuda, dsnudz; + amrex::Real sneut{}; +#ifdef NEUTRINOS constexpr int do_derivatives{0}; + amrex::Real dsneutdt{}, dsneutdd{}, dsnuda{}, dsnudz{}; sneut5(state.T, state.rho, state.abar, state.zbar, sneut, dsneutdt, dsneutdd, dsnuda, dsnudz); +#endif // Append the energy equation (this is erg/g/s) @@ -1135,7 +1140,9 @@ void actual_jac(const burn_t& state, MatrixType& jac) // Account for the thermal neutrino losses - amrex::Real sneut, dsneutdt, dsneutdd, dsnuda, dsnudz; + amrex::Real dsneutdt{}; +#ifdef NEUTRINOS + amrex::Real sneut, dsneutdd, dsnuda, dsnudz; constexpr int do_derivatives{1}; sneut5(state.T, state.rho, state.abar, state.zbar, sneut, dsneutdt, dsneutdd, dsnuda, dsnudz); @@ -1143,7 +1150,7 @@ void actual_jac(const burn_t& state, MatrixType& jac) amrex::Real b1 = (-state.abar * state.abar * dsnuda + (zion[j-1] - state.zbar) * state.abar * dsnudz); jac.add(net_ienuc, j, -b1); } - +#endif // Evaluate the Jacobian elements with respect to energy by // calling the RHS using d(rate) / dT and then transform them diff --git a/networks/nova/nova.py b/networks/nova/nova.py index a2601194c5..4d6bd600aa 100644 --- a/networks/nova/nova.py +++ b/networks/nova/nova.py @@ -9,14 +9,10 @@ nova_library = mylibrary.linking_nuclei(all_nuclei, with_reverse=False) -# pp_chain = ["p", "h2", "he3", "he4", "be7", "b8"] -# pp_library = mylibrary.linking_nuclei(pp_chain, with_reverse=False) - net = AmrexAstroCxxNetwork(libraries=[nova_library]) net.write_network() rc = pyna.RateCollection(libraries=[nova_library]) -# filter = pyna.RateCollection(libraries=[pp_library]) comp = pyna.Composition(rc.get_nuclei()) comp.set_solar_like() From 4afeaab0e76d6c95ba546e55f15936273d61a7ef Mon Sep 17 00:00:00 2001 From: Alexander Smith Date: Mon, 24 Feb 2025 04:09:19 -0500 Subject: [PATCH 03/10] Modifying the picture --- Docs/source/nova.png | Bin 47467 -> 56059 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Docs/source/nova.png b/Docs/source/nova.png index a9fbc5984d21a0254e7ababf86c1bdb7485ff14d..d8e3139620bfaf7becd69c9306aba5b34ace956c 100644 GIT binary patch literal 56059 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

gg^xNR7_vsaGQ`KK&(S6G6m|!OynYm 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 literal 47467 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 VR=xcVvf?Nd`jWxLq6-f9{|i_N+jjr} From 8b00c94d10d533e936bd3510271e8eff5ca0578d Mon Sep 17 00:00:00 2001 From: Alexander Smith Date: Mon, 24 Feb 2025 16:38:37 -0500 Subject: [PATCH 04/10] delete nova2.png --- Docs/source/nova2.png | Bin 63679 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Docs/source/nova2.png diff --git a/Docs/source/nova2.png b/Docs/source/nova2.png deleted file mode 100644 index 8867d19795d5ea5f1493963236c1319cc1a9716b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63679 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

LGui9EN1B2Jlv;Zu5L7;R z&({&Kqu_pi28i(=4y;aBq4Ekd(FC4xhrHzaYMS$W%nC*vEKQRglR`Wq%G^ytD8YY` z9xf`}sAp7bgp#CV=lF^lt%sEzQd89c%0RTCb(F}6bX8~Jrm3`F)LGI}46=5C&)cRa zymY>g~Jz=%EnPm&Oa2uQ|J@12MgZx&CQP)oRAL%Ub$MHyJ>sE@SKzdjQ-%!IJ`jtBpk}G8*#SIjaa= zMB_PW?8iA@#PvSMizguW2@&7sd@E z0=99SK+`^pHROKX^w&XSDw?O}ivw#!M&QUg!92rcZ{G)|=do09GfPF%qr9^*LS@@+ zbkv6YhsDh;m*1qgfO**MtppN8pqsVD5VM_9Kr~@{bs)lSeGiE82e|q>uSv?pyF%tS za@gw|p7!_cb;@--tr96zo;RZL%O-w9#pW^8}`r5GR~be5<3stst{X6{CH zR@cMwvNmVub@c8UX?)HXIB+@g0*x;Q)hABL3KG)$`g@2h-^VG}q!wrP5nc@ai1s)y z_>(+3_2J#A&7H;Er$PCtqZ+1=5OkQN{*joN2l6R@ktLg%c1=`*nRTA;cEg`}13~-E zx`+Cj0SpvZuzyw}jyn@Q5@kN>X~-}8%Z65nJr@k2Kmv%rk}&GX=V(o`6=%lCx#-%(BS>70%I~&pjSVCGB!=7Ou4-NuU&`VUNYK3%?B*5 zca$K+TL3dNlCHzMlKS0<;I#~wBmdx4tw~|cLz-z;2N$-Z+45xPm%96kk_8)T;S-vvo;bk zV@}v~QJ&6!DZ_uhRWJ5zhc5Zr7kP7-2BNv;qeaZ#hg!tpmb`6w^t+aod9`f4Z6qFf zB@6WJxt^I@pMOJLw(v62bsgTc<`;3jLE^D4LuRTW6^ivXGxjav6Rb708wTr@E<0w)DWB^4J%b#Yn(N{-=X9#2WhV-&wI8fBW>k+Eah063O*b=Daz4`Ir6VD? zp3C#QOTklC#TH!gfy1}1?)aVvs#?2`QhA+n9x{{68_{TsHLkB0Dh1ymzXo&D6mO=Q zX_-zfsqiy9uEf?>kVgxppFeyWceiHp`kUt&P5Rej@DM0AA$%$BX3a?O)V$s)ee2>~ zUp~4rW`32;T;I^Q=JLCYuk&NiaTZ)Ty4&L&+b~A8$xq`i5d6r>T|EM@NB4tPVI*tcWw8 zDAO6J;vVZdqDWY;Gk~K4=g6v>1<$Z&Dx4I9gPt6!nZ`22MecRS$wzOf(!3g^caogv z2=;P{a|S1;(tX95#2p6?xwk>xer6f`%+XYU#U!;LH>1iGA+5G<|ysTh3NDDW1I;IT3g5_#0Q5 zoyZDE4?^<;7L9&Rnv37`294E^9Oc8D4d$_yKT)+7$jH7OfviQRg!f=&*C;TYS;&mNC9 z1I6JFY)&V3Vvb`|da6SV53Eu1b8ZkXS?_>i;mC0mN0(D1%5~+V{XD+ck4<$>7cT>6 zI`~2>L?`P|u9BIK5Obtp9(?a1TF2;{8dCf5CK-w=l~lyfE~bFiAQmrE??>b1vER0} z<#9z*1C)&%o1S*~QH&-naq`mVMK54;t;g-!X^%(32rtImG`d8$?+y;ObpXCEz~YPU z)fyuKwWEd^?|BMvkaY6P?sXwJMG`7qDyq0LX8#t*PM*f*|Hu90m65A?awb;ohXjgo z{1ptuzIkx|hA?O(2NXBiYJ_5~IGtHC}&RD-8eEW%U!(Vt8_=$MfS(11`|u zMlF75Lbiw8BW*ZP2%2DI=K?!OcQwM+4 zc%V4Mjgz60oZ7Ce8Ur81Eg{#lX`8Al?u8Rb(K;P(W#<1H%{$V$SE{%EXnAJ#-tu#A zKGVC;Ui>8JeCHUxck|0LO|A^=X;JD`Cid%591a&#s-{iu04~&Be1*z;%k=#tybFM& zr|A6fV&N!}-=tuP;QE7OBCIT_Dk`VE@~b~+h}xynN|hp8uvGSsli8_o^7pJ6!AWOt zISMYg*~No`-9LpLz>%Axey}s;FQY8Vfi-a)Y=AZM_KW8G{IR#V>a*Hu;yu=EfLP$o zgp*8~O7}UrXs4MtjX+Z3=O1EPU0yS+pKKXZE1ju~-EnffKh4Q*woKl2?lkgm73ham zm`e2sNl$PB;A+EmrYGlWAm;V#s827E>w+L7?gl`(tb&@32A&bzwNNaG6K_YXvr`0- zNh+MTY>R>)izyans99rY23~!;S`7Cew3Sw`_nJ5V_ zrRxDA?Qucjz=Q&bZfdIgn*sRfgC(gSUDP;zZSYjqSA3(W(rTy2M@Joh=h$ZenvI!k zbFITwTOuJrWDcXrw@NDI zI>Q4Av<(21?S6j(ZdeT_xW0w7jf7*-q(uS3#!V9EcklpaB&AP4`TqF=10!9QWTmJ0Y9ndgl$aLu;T^l;6?u28jTAga zIRv@=`XsDo#G0J|9v*(?us`G+K*%Gds(d$=Wo!Xw1G4mC=fg?2006WXw@|wzV_t&#)RHAS3IzigBIT7EFGuXur4RPy zVQCe!2IWK?O>lTPi$BG@NDB+Xw$V!L#@ijMm+_>Y-gh={NJ7C<>NDm>(!eKaJP6E; z@14Z|4$%B74h`4KPY=5JQYoEbRGFcp+v~vM8H1yVcu%@9XKiu-_9Aw!tA)qW8?a72 zh1RkX$NGYPSlkQ3$%q8BhH62zWl_N`i{h%~EsV>ZLN~K~6 z@OIpRPVlL#m1=z3a+bR8-Kf!?P9W!aR1u7Vnp$7m(}Qj6bq|BXtZ|Yv(dg*t_RV(I z_BUkuowJ%%yJWk1&oO;XO^>~A$YkBI)a-#bs&LL|mMvr!@rM^b9otsu#7@z2$CjLBssA8pG zg2iq_(hpYYP<}V6Cpb@+MAPj?Z=JN@C$ppS(SS8_X-qG=Gu1$BMsgz3;{kGR#`huiz zb#aN&pwtbHN3#d5xS*;r4+d|mJ$@6j#<}@`o?zd|#=t)+VwZojUC!dOE52 zPZ0O^_GVhWJ;xy$pK!G3RXe}DChJ}~hs4SxXiM{_KD>!0PP$(_^+J#+d&?%-Wg`X3Pv~8^ImZV^E1J z^_on9ZZz)kLr5x`?SW0_PwI5Wj{@13QR2#+h8|47xtrFMhI?Q|6f*m#BtFxWXdyKs zR!meBV!XR})Kwyo_l283iPsY95;NUq2tv8{9x%3_tQPosgr^wsXL~peTvFaT5HHK$ zZ(X-I?c5BAOH8x8aYDK}?r+YjW`xKBIhnC}hVb08KC_Mt&hG`Kftv9gCPk%w=-JC#oW5J`hMU`~L^ROxrU0$6R>L^{o0$5FnJ4!xBb!m5OgpoIN*K$$G;W-Ekjqf-MjNGR5-0OQYHW(~+D=t2kLM3>`YOrzI#qyd ziUQJt>W70MG3>wf6Epd!!LLp}kLlS92-hb^4Lho$?jI3Yc~8e2d4Hmfe^`m=GZjmH z{7vNzVjJ&8@ZU7M-NA+JuS=nJj&3zKEW&{#{52z@Cl7#9=OiEcXs@u3YTSeeN8^%w zr#)FpjRYVtrAyF$t=wR9hgMYEl9;=vbM{BQH6>bKQYk}6o^9<$EJ=I8L=8?imI$Jj z0rEPLIX93A9s`M%%-0BqZ~dKL*V8}M*c}66Lh$`LEz>_8SuE4~qRN5_#gd#2w1Ktl zlWn_WJ~r2k-A_7-h%r$E9d%+_fT0^!=DFkDUS?<>q!M^yij+8VK}HFWW2A9@<`Zcz zeMS&4O5}|_J9Szjha{~OgUbM~i0=dT4~ zwq(Vh{3Aq9YU1oBw%cjL%RDjP?tM8MWXi+zwmJ{vflQCQAA%s)3^r%q>Wu=}HEn2$9# zJCCoYYkB1CmVpBoL9+leIqgnuH~;#jr)m=tAqgcr*~ne%@KBX(?xa%sZa!LJx4wy% z{|NBvJ+`$m^PHCSQK?&8s&^!kS^@8BCs!jjmOOwojXfW0U`LcnTXpRGJcx z$isc6m?7+CF!Fw>1jWdxtFJ==o6}5d@ST90cl$~<4N=B$^4mNO?Juxk*Z90MPp%X}FUJIXyuUCeQEB11i?d(Vus+K1gl_93 zHZMSsHWZ9@8L*$0Kh48@UdVoiiRi&fo!~~`a?*Oo znOFT7=2&FzX0>*?s;n%|y%*z5ipsRI!5bK)vBeveSvN*O!XP(%D&zcTFZPI}74fQV)%NoBDQ z*X`pAl;RXe*(`8P7H@3$sn?_H;Zt@?QEqp;ugB}f7x5YF-}Z2Pstx%xw7_pvlh-(- z8-lBrGT>5;r54@&is;JhrxgZL2(X`I`KUNKK}Cj`O7P!ha175?`+bV*Jn#ll{u|J za-~&=Nbj)HGizeM53gR7qS1*~e7lLa_VVqmNoTgEe?!+xwEr}WTtgry0P=g4stLA6 z&B0AQeu6}{js>4_lX!&5B-G-QmXH~JIY)Kr;orG+^zDGti#L6DWqZfhs&<8T;V#0H zmB|wGIW68AwKcN(&MtiX4ZqQ%s6%Szl7uoBb2|;%U&{ZhN~!g1k71K;&P9Q<+8$y0 z)rx7DiQBoJOIU!nHNu~7MEe{$8l}q^mHFn#Pay9AzQ@Jx^VgnyL42JEtmdeMEMvXV z0rKQ0LuH6#tWoGoi{1HgS9)IHibAqpxT#S)-;V8@i`vantI`8bj`Cbl6|>iRH!c1% zuV`PnqHJdfPR1QAX;>OjA)9LV_0D0Opj@sQc>K5+gUq~JMnNIug;^@p9WHm_`%(&~ z3|zPVu)y~;7+IH))8uSL3Abh_}!pZ$1r z&vkZICt!7!G2d99a$$8#5t-^(Fe*e_`mwsMOP~F>lLHwLzi=#7J5}7OR=<$CzYeot zYOTEFpEGcV>2}Ify=E-7_wgN{8gfcvuA?3)_AXQM9M>f($r~FyO@i3nAJ}_6lxkiZ zFFJbd?7k*AtRUqmzoRRIW%<)^`MF?d_lx(k$h{wI6;J5;h@H@ND5UTnN@WAKc3|ou zdM1$Zy;^9^@-!5iQ?GK%S0H==NW=iYa^9MBt$FeEfiMf2Izn{T8alWE!_6Me>yaK| zPftr*oO)vP^SYzki-1a+zMayN|28kL0ZHYrs{SvaSZ(>*-L2K+!xPtUeA{XYy~4rV zt7!G-W|Jt1QC~~cIgcbs z7i>+!zl1I1#Hv+`VJ%3D)6@Gh30)c$Gp%fOSuyZo?X`t`%&~mgikA)Zk!%wTP&TCV zH2tu?;0NU46O}qt`J%Ig-XV)8HB!|{juXE|uLyWy$TfcG9(bj?;zKA21#+F3I7aVL zC~K~Mv>Jq@Aa5m9t@BU>h25)WmZwpWobFWTXNOEI)+#ko__}OjjA&%HK1X-K|otaxO05IY9jiS8INDeC>XEsG~?N{HJ=a*K0 zp*}*$k1ssz@vL4_!?vsO@%$-v(!%n;Jsz4*^F-C`X8Wa{X2|b9zE)n93tUXQQm_iN z_3{u`J>D^5Np5f$7gb+A^~9=KPxDds_tH$ZEJz>PM=gId*{<|9`+83UWvl!6&2@G{ zIj@~gC!4acKA@FRM6w37`Bhb8NpVCgUm9ZuW<-h&NEEDGPXz*A6Mt9REiRy?@{XjX z^e$bFZWB~iVW8J>G!B4lmR2~>$2kYI+_tNJmuFP*sEg8y>_JtZ(PuTh6S^8 z``>)LznrmC^T(7R10$#jQnZzhXCJ7}k%%)Ai57b61g@#{ha(5`^_dBgkith4?{vWC z;d%y_y^GXdh}+;kosh2HSf8az>7Xh7DMhIrK*5yhU;(Ja z{8BWSmBv608xZ*>Yp)qK&xg}c5DTG%|0T7|ogMnUeA>3LJ2kN8*rWu|a+rY**wnm(zC&&9;g-Jp%MFb?+n8Se#$CrsqcmW0y4s>xr53n8ptx>^CBB8a_R;RB zMKF>r_Xc_qq=ME_g@M7EqkTPol?!05fK*%#ODLQA?uz5L^Po@ap2i8Q2iM)k?1J}0 ziuWsYKhxrAyQf~&KYw6@YJVo2xMNK7y!aU{#AwoKg7)+BI*y-M<)oPvaTt3euxA3{ z#8Dwx!_3qoJEJ~-9nob$v`RoolT$=%BFv15cZ@xioUYoEuG-?F+QQlGLd1!ca&GYE z^4BODx7+9C1P~B2B8FT?aVOc(OqmM-N|U*yTl^DfYpO@O`8cR+SEk?V6tB|9I)TwXm1>CDqMXuPLJd?$?vuuSbr4Rk?*Fz7o_A$Ye}>(Tjvs_#7Bv1el!&?drx<&Mi6+ zXP=Xcf|*uOI0@esYOgHa;RSJVj+`Egq8>&K71l6pJPf69#^XsY|@f5Q^`{K z+9`5Kt!KTUGPOf8PkwE}XUktvY12!ho}XaE^V?8N?A@8+lp7`Ba|QDz&9f)X@ve=? zx_|#?=BQ-oF-Ja#6Hp;)&$X|urlJhcBR67A#(EeBPHjjNFq@}R-^h@6%e-rsLawjP zBVMV^H)8J0jCNQfuOVyJ8;xr%T{VXYSajMjI?DH$YnML^1~B|DQYhd~#bK%QS17WJZ0F>3X%lzBtq0o84-a;2yW*TN} z`=@VD`l5G&)3>!JC&=&giMD(`mBq4WmZ}%dx%`35CLIBEL)K2&b2l0NsDCu$zi5bz2 zMe+{~GeiPc<$C*$Lz)#Df(J%zjE~mL7f!1zZx0A<7oERTWoq|F@2P|jB6DsotQRJ0 zM)nwV72+~czhc#(C4jo%dKpQWhlF4LHM==vgC<0vB_{n zdMfgKg9fW)8eDT7Z9TE$_%zcQXCT1 zS9#U=4!K(&pfI$Zq*_=AluWSZQ?%E*jiu8?5~3wkg^VP8pL(lnYvZ!AvKo3f82{oI z3VVya!@SK$Hz0?m6Wh54*HyNmp%UD4Hr@{EwEel6`L~2)BlG_iLVUMnVJevHA2JXf zA20F_iHYFMcEeEx-RoyTbJJFHL`M#3>gLV&K>_y{PwYQ8nv$L8moJ(1p{#p?ccbo#MmUkjcnE$3&^Vs;se*ChP>_5NesomW<)oMk6# zX=X>RA5tQ&fMA3E-ft)z>08K*2Gr29B?f@v&j!)~z6Gzy>4SqL_*Is9`nQB2=H`M- z4;qdIyD#PIXdzfqJAZ{zUk47%N>*Dhe0$IJewHj8L2$G?#e2?PU3dVUj7pGRpm*`h z+=2}wFl*?crLk&mOnd>3yx#ufR!iIQ$w_z*;cIrxsk`N#`?5X}{*I#0qQ`EhSgG>#XY_qohn`F z#oKm;M`witr;ZrM+1q8U%RS38e$oXRm~Xm|3WSb5I3`M{8nC9aTjQ(hdOO#q#ZLUK ztHr{CzlY2Vc%@%c92SNQ9O`)7n`?2O{P5RBseVP?+*B8o__-2(xM+ef^far?8R*vn zM7q2#wNvK={4l-h$TxFCvd7?JRZJIWsChs^TojLm+a5_tk%ifIHFDw#eV^oh3l>3m z*zH-e!Eq%=D=a)wQpeY1ISALY?t=+_qTXdd)UDQotHbRVgbmv%kprY}y^jy1_$PZ( zIO+o7%Hp=K|8&87P2R#!i|B0rtktB^j(Q_%fwv^~UWk*Bl7XS+=~bjkI4DNX$`i%% z|7bk5W^JN@ZYE_?oHa{J->xO9OM_d{j;Z!OeWv;YH;D)>Svj~b7;Q{+fOD(+<`e(JPNb?iH^y=Y z{o&K`#FF#D@iFYrU3}lAtG6Yo?2LHV@^Sa(j@x9_VOZ7 zxX(50j#JI>6seU!{%I<(7YE^w>DQN;zx(>|=Fxcs6K}u#BS0~(l42pfi2;B7^l2kb zl76-I?kKmp8CvXO81=US8#lIf;LykRQ8@sKWPWd6UGY%d_e=b7&`R952>06Ew(Al514hYE(2CPDe6indJD@rX9v5MuI8>6YG2R zwXgBP=zhLRZM{`fM2fW*-!8mNN1P+8)ZI5%PKl9clyTBVWCwqgbo>z#2FxQtF&``E zQjtzF(kDd&ZhU$=(Qd(@La*YN5BRPp;@w%1tams-KfHbY((P=R!+kA`$_-#C)muE+ z)_bEQZ#<(#m|rkU{q5H#+O+qrSl8u!y5&iRBLB>=>U6fmYt!}`{7It&bR3>6Jx-%k zSNled;bdC-#5Un%&I9T#PPy6kvTeT4V+%+JU|Ic(5KmZuvdwC}l{%%7V4hrSWiwZv zEVOkTWvV+zB1vm$x;g6A%^72wz74Z`dbmQrz0JB?*iL3PmT24Ny_i(g@;t2ZI*HKT z00=6g^O_i=x1WRm!a?m-cgw4*u8%=Cp0L&8G{HP)H&bD{L`pp+-es^$a}(+QDrnJT zSgYZ=1s4qh!a%*mpnHy)x~Os=A_2x%3VKGZQnu+03hJ&r!maS2><*War-9K;RO2Ib z`@T|=-SeZgt48x+Jn+2}hy9MWgOyE6vuS7ta*MZE3PdG3+b(Te;H4;*5~>h7g}`Ur4gE$E?E(h~f@2VCnfc{Cn4D2>@GLf0tjewcp3^XWF!eA$RDNjF0d)`AuwX)*yEQF~*%*md zrBv+3S(NtgDH3e;e$&NSd%MNEEYNVyZ`)+9w~?I^dxpB&)r+FZ86x<2e3j5#2SQSU zSC;35Mn1)BJg3eBBZzCBpNg~;%$^c~FE;;Jn3Y;}_u($}lfyh3vD%ZGwe%cJK z(g*Ms`b^#Ee$t5X7*^3We$tQ$=ZwWB*Fo}g;=i#GH!e1DesLZk1*tfX!_jCs;c@RBKmHP-wOQUiuIw|64B>Yop;8uVB)O|=m z48BXElp4(aYEx@J{t@|lpfuvu#jTo_p)}ejZm6s!<3PEt*65bAav@S7LW`EqBe~7} z(Fers8ww_V-ak)(-IQ1(S1e<8oBYNI4Y}nl|NIe*vAbxGU#d`mC(9_o3R2YL0NVZ) z`8#WJ$3}+?sD#b67)Y6+V)(G`EB**>4;PTUcjgYg?{!Na5$|-pVga9~)IR4| z`CGIwQB%;>A zGdzdU`_`%TZV`HVXzNQ*=eaWAXBhOiu7?|U&d`N=WwJqSdhh2+PbQ={bmcoAkX!v0 zIj=QtfgWzSOqT!1Yz+P%vc58`%54i5Md^}m6a}M0@kl#sPyrQ0=wC!<9 zuV|aX((BTyu*|U34toBEY$XC^5DQGR+`4WX0~Fbb5HI3SRRHJ5x0~nAlW*Mk0Cfql zX<#*ST3qui(JLCu{fyKo61!ZdXEE0^LJuJ}}g8ku%gAS!K5BrW9^q z0@&(@hy1(EEA&`hcg8@re$VB826ww%d!Lz|Ot~n2p4>A`K)Ttr*uS%f$d5T2oAT~0 z4-Fn~ok_aWNIqOz&t0vB#t$^L6wDqVVuqmcM2<~1+2vcQ7@y~~Kn}vXn%hVBvs**g zP95KIVFY%K5%R$R)?aG&N0f1dS2l@{H_+CkSl`}xWr6h?Nq4N4sHb&2YHmIt+H`Mq zgJL8&Qlq)(rv~8^4=nXv!$)Gj39Qw{jLrF*37yFbzFcN(w&sYKXESu0gZKm{c@V!bH`Qi@xf zX^$N->(`;4fvrS9hzri?W#A3qo;FMrDv~iWS7-pZW7CY0HVpv<7k+Z1*?@fvMCFY& zB{4>gt3($j(%-?~s2pq^);y>HskItoK?cPWPSaP(kqsbA5NJ(^KyN)?#3R0UqoYp- z)OEglyC!_mG6X^Kws6p-ba#``Dp#sj<>b?S85XJ8^qsJdeFJ{U01+F2RrL($zyq$V zF`}G#I(~Y*L_4Mq3v`^L;_vjkLI|3|Eaz$?(r(w@s5veBsTjooN^v$gboSm7PJS63 zc@7Ann(rCk%dnB_XS-4*bY%lNzX*d7m2{%?YrKY-m^V6C6p3lsBLm|N+hJpaT zrtF0jD**b8(NK8KXtFLa15c4&`WUzWD4y3POn8T>>pk05Oyx1-tzE(Y*-!OpPs9iK zN*1ZCfmV8#XS#HrbjqckKm&Qob)WUl4bgL_xPf6z5>p^BnPn8bMN?EE(YY77Rw^ny zOlcmLd4iMatQgu-K^00ch$5`OI%0i*pc5J;Ue7GY^+{G6P~xPVV+IiTD0oJ=A1DPd>TvZV6f_rSD4Ndmq=;u80~yYjPy2o?o4E+uc24M zTV5YLp*muDd3h_K`_^yZ1pF|2-u}Hre-(=htGunsoe%2adD3XXWu}rn%TRK?#j< zGbts-6nh3I#>dGsjcySWRUe=~+%qdS&FLcg$%?;+!^f4is}V`(Al>=Y$%AF6`g-43 z0Vs`QKG8(k`{$91c2^ceh>iDz_B0Q%0v`<^vE6{}S$w#6gerD#H~GU`U$)l?1eO&U z)~Syn^zD%j;RT^z&n0xCh0*jw={(wgL~&WVrS~6H1F1B9IkTj26>E);MK4R!UU;$I zs2+)~fUpBYH?nim=S7%t2Ric0d+a&!9Hg2UzySjO2m|!?=gukebK>O=Hxxc;xRaAj zPTsPBdF!lClGfks?ocnS5Kq`=_|g}UAxw}I--q+xb9~D<1cZz9#gl)e&g_=v=G)VH zpAcS^zr|U1h$86Y!vky5P0`?Q$0*nmU(wN=3VF~~d7}`tdQ^HJYra>I1 zQY~8U92zw&Co}8ox#kD4011|}an9nDja!q%pl)6-a*sdaEg9+IC~;t^-RI@f&o!hA z4uZHIwqa`;kyYHPY5ijD(H|o$tHQC%;q=T1E1tZ@4L*W$9NO9hfT}q1$#9J_U9DQN zZvbE%A-crQDx7x&LHgNtZ5rH|^qD-3xEfWbLwbKO7ECd%O_D84v*u6VjB`f1ewx@{ zE`IaLFT(e2=0~m=fe-^-HqXY(mEb>^Dp?-&YRWafuB!5=lty9&s=!WC1U%?x$DQm^S*xJf#1cf^veI-M6UXN*~h z@C~|B+=#0K7DZOejqkw@1w{By9EKq2MyfG4((Zdj@lq5?UFr82$LEOuXu{We-=w`J z4M#UQsspb+XjB1wBdFIJv5zbfsT1{3?o<+?aLJO#rn^8#G!AWcmR;t&XW9lE&mL9A8$5r(}|QhV)n1#ki<1mZv2xxWZXhHp~m-!fUKb z_4VGt05wh6bnZF8BGG2=)^|_iu-;o}HE;hhW4HfM@tHU`(->b8AtD+YN^!KE(bbqr z+1AZ_MRU?ea}2Ot+qyDc%dT>X!2S#F&`+Gr35oJih8a`~D>Ak6kOd^BWhtUbC}>&a zMG-zE0?i=CB+f*QWCoi&%m;llSmw}RCfd3Nsctiwcm?vYk}#Gp&rQuDS-~V&Kig5U zn2h$aX@Hf*_5&ArWWQ;kAvQPuLHV)7IH865$%XGB)2xDbzoNKmBTguXscwm0Sr%;4 zmp?(4bwn#GdU(y=J?oT*e`rjIH}pQy=Q?XKxMw;WkyxacUnpFe$N zP1=glh)CJLD3|&^>pS8X2cw!*Kn}jAQ=^!L==|K>)h=e-oaR{t^shgLoFRo~EL#IueJkmG; zG*k0G6L?zgl<1k=o(5waR<}>6!q9(Qo){wvF;B25c#S>{jX@=|+d#yAPS?ee#m2wj zbV2T{4&SsIQmmV@EV#$S-J|pEFoM9ZaGorKHyN<=xSp(3zxgdm>j}!graW@SK~%9t zO*$*030l(~^|8$bj+~*Zmqwl8)RhvMZ7+136`0fGV<*lp^jPzO%~#;j{v16boi9EC zG{?7owgonCGVHno_nppU6rH6DnWvcAHV&Wn=5^i9scoInC^?XQ$f*+%p;xDGZ<{Mc z%=?aPub-n1V@}vfz~MxtH$=^2{OPGlEKSOY$EMKc?fS6%-`ciCRPfOW3)E(AVoCfU z6edxd!g^Ns2OBI&O!0)1!BViJ^mAq!k!GGd9r7~6>G9^WVbhptT&wfin^FSq&!=II zs&$vSHWRxSGUJ$H-~;54_kbuae4N^puL~(9%rk9hCwPuRuGAM}1>t+}y2EVd{gd|Y z$Z0l)gi34}1qBX+#w6s8SXn*kVJ;*EFJT;unZlc^^XnGUnN`78gzQUNuM zU%s43S$qGU$iD4i74h4e0&1kqnAG+H?uP^x$eJon7%fNs@T62v4b!Vd5m%0`Arash z@UqB@y6>fuh$;#Vr4%zDG)UOZ2ENz?K&@9G8;MQl_dTsc`D^$C7Tn_9& zGk*bGY_(pOk{Cl%4QZ!Ao=H0f0;Qe+`irqiA?zrf)d6cq=3eLHA2ZtjfaVobAEWr& z!bHgI_q1;Xr(ip^*07X0x-m zxEo=tX?|c=WK*P4yNM@<=W}yZN>CT}+A&OS^^X-<$X|5ZqVxOkN63pa8iQ}e+HWUE zbHehHL(OY&ASh}OMo5Q{-U|Wvrop?x8zU)TeuMYKrS{8 zsYK`NLigq1zQ?hY?n>a$Hf48NkGk_sY-;dez-L+P&&jx-lS$GvsR^NG2AmjK zyx0`QI~}YfKol;6eOw4NT>~bXg;WVTl=WGzC1`ox{}j$TsQ*;V6&pK8LreWU>s!gx zHORn%AlUN0Z20g=X{FQhkCKc3g^nAM>opx8szm{ej_4^Ge)CE=_Ew|B9Hq*3)m6G; zP<7INAUAh_o@L2UQ|VGhw$8c>r&8$a)P`!nydEV6tFHWNi0w6F?tCVK$oxQ7)X;LH zbq@M^cjPZUnLq-zF9dGhaBj>f8Hyha593#x5j^PncvanptE)R?&bAQ^BQ2FhvMdjS z2Sxi#-pedk%Pz7Pto}EAoTs!mhr^OP5qxI6 z#RbSGwdOC~c1WGsy>h`*e}M zLP{Sbad;Y{+KUQw=KsjP5qF+1m|wqKp1ZcfvR2=z-@lH%n>$@#cFLR&E;$)w`%FSF zw6$fKk3z$Y!53qj3Mw-eiBJQ{gYgf5 z_|VX-n(O=2|Ci`gEbzvW&zXYC_M)V)mUOf3u0*%h>j?!RAwbsk$GD{EIaBrFYmWBN z@11i8ECOtjumY-ZCHIOKSbF)wR1Gu+(X06c#D8)}Q*TWvkld9XTK|d*$SwdxjbB8l zhf?iqd>Uoc+iocMJa#bLTL!U2%I4nzZjt?x_uBU4)&GI2z*2-JS$OF%Ra87iP?(w1- z(GZeQz#B%>Y0I|K?a$qsuJAGx{D`n*d6DgU5HTbPmzMW+-Y{v=bVkyZMJ%;9md9!9 zhtZfUg<+7#pYIA9|A%Mg^6xNSv)zz%fhtIg-bYq+A!r> zlg=F(Zk2sX_&D;G@higCyeTbLd%!!wRdm;dzg!lIxUgfhLzX*KaF5ibDH!{vBvd5a}t-5WR#;O7qY>&d@NCKcEvGWa|d?@qZOXo1; zwPK}MWafzwE@Pf`!ifsRyYo*Z65QhYGj;T~8B2x*`Dp1m{`m6_vlduEg<(Ve zvO0WLy=Qu6kCzlDO=502E7R3DwrahoB$o)UR2RlA9nw(cLU4v; z+g1zS;O*1Ibb~z!Q7am1j0` zFX`5py>kh`-ilDBy)J!Y{_^C-iAYIEiqt$ zyl!-Zyf3(zK@_PtslXNpZ2jlWP=Wle!S)9jXSTXqX-mxff_%w2K4H>|PS6nzRe}MC zFwVRN3ymQ^AA+}#{C}h7mPL(Dje0qI%WBL{i*aP5Ldr2Xf7p_Jx8oD~$I+N`?a-!S zWOf(A3f~8P>$^rqhNhVwOIXamvTHd;jtO>6RuWM?D!t-NEroL)(3%LFQCM9}xRN-G zidw0Gm`NZiH4cMZ^s!z*JOb|1@;6dzs@32wO$s|4!Tolmp>Xo+jluVKg=N)UNmjdq z^{zoXcj3RO%T#hBkjJJgUzr~IO@9UQ2?KysgvlaNhK8Fhri(rLpRRePt~;OtNXv2{ z)TUt@0qP-heB;`xC1$QGrzM&h?qfcmguxczaQ5(Y-uKlhWi;`veSPyp@EiO=2WDT4 zjJUZQJUN6{UGd;^Bst|R*hzq$?;xv!ulaP*+ISk!p9gkvXRA$zcHX5H_`eez>C(?o z5zO8$)v*kg=)~ltZ^|Uwp4S!n$Cb7x5yk|iuCYC-g@w)ivV^x4%M?#7uA8v@PtX@hl>)1oP;&4l#5npnbjeOOr z(q?nl(I3M!zurD{UvtpslYEyL@_fxd}7r)_kJU8v#gHcEV#%=HWct?fp~QW4a~}g?$UcD>32zbR-3|iYE#RQ=6aM z2SL?cLEIDT4W5?#x~u3bq4UsQn3Xe^tC4W`4j@VEZg#sVo!uKqU=FYZT5L6&Udm~U zRFDcz{5SlZepiz;ba?bXv8D*U-A4|#T~lM1ZYtN`FZe)^J7HEJ&C#tV!=d|?>D#F6 zU>{zPBQHDfui<1C$3Lik>ND%}vzKfe=L3s+&NLapx!WmAtGWKy2%n4dDokE8AM?hDtdZ)$o)y0A#g-}_Vh`$M8 z3Zog;z4NLr-j>}95K%C|=EUDDKfW&R(jYmPQr($N(2Ql@x-daICEXTtFw3P;Q^b`X z*j!Zo``g|KRVZF=Wf$qCaUEWZ*=K4Snfgg%;NFnTl1=5q0Hmoki|$FY77d|bESSNa zhc}|{DO3<%!M<hbA+mvg)$-y=r=mip3$d|@uOZ`nvUGWxVn>x7-EY}z@df#A7Fp$ zahh;iGnK|_F56jCW^Bn)Z{)HimM2^8?PFEn_;P$HGMXC&bh3FBI_UBl0Tq%>RI3AK zO^T8qnH0dB8{SF3=Kn#M00f5*a#!&j?Bg;{eKmKp=W%4JUio$&4Jt#Vv=#dX>RMz<5 zHT!kI!Q>wfg7Dc%g`>>P=GM!+EcIcMg`k6B;5y!r=n^i)eof9(Rc-J?5yk0l3uERf z#^jl=W-P3qcPj88e`)NzAe7e>mtLs~VnAbwP|wO5M>EBBD~?CQ=<^v<=(2LU*{ez5 zbK^qiIfN-HD*B{(^9vSz$)TZvwA@_?f$2LqI%1$lN4Y*oH@JWmMBMD%MhRc{EtbJ+ zp12^(SE^5C=|o^fsvbBOr7F@FH_;uPTHHWz0l}iPiP(jG&jysEIu+9}wa0z5Wy)|UlJB~sTj|0`}5OY+0WlvApkH%w%t3&(6?YFKv|BjE$+5%20KWmD?n zo+>oh zqAV^h{=b^$$ZfDVPR-)C^rz`-lJ*b5MZJ%s$ojpYCfn7u*Ys8`oZ{e*)8<47DZZITG^xnTeO;>KPpq zqhBd05J(|DY}1ep<}j^S159T?I4HBw@Z$Q3R^mGrKCp-Hxx{5FA8!}sop0<@wONN& z7{)Gfn7KsGnygJBv4d?2@5Wm*9$)%}0~8 z#B>ZIbjoNz$(;ECC{2KyKSi^YVUF9sIz1Sy<`@}*7uT~i0>&5*RWf%r-!4_X_utT-8`i19&jDHcZ;jhryMc-nmxdA3t($qB#&HDW8O&2H&Mx{IP<3GNvn04ud*viaG z=4pTaJo6n>|Z=4xPjse|crDhD#N+OF|FaFzQ zbcsZkAn1`F?s2U%?g=3KC*&U2q|2%*#cR4djbvsvqV$JTu z%t?dE!0{gXbGro3zohwajRyeO3+6w43s6#82O|_<8v?(?`-+U=zpj=hv|DEMFh5wxNRg7v&X7dJa7bSb82p#*a7GIIj3 z-PxDbYA8h_+Q+IqguSLa^;|hESqdpN-;&`xS^EHCZxsw44E@$eu7tW;7?kwZWMfjs zr;hA{0X8=yVb@%wG*e=TmpvhQ#A5}>U+ry8QqW;U;hcp~u=Pd2yJG?Sl^Vj@qR3g>~LZ%4m!1mELcWU*s1Hfp7O$&!BKSARm+-AIVnyq#T%J3;8Q3D3qB^zXyA&?r(kpU~VEsi1`A(Kwp2qYtf5dmaEU8 zu;Wh+O~fi>EZDJ@GYtXemUczx{2c9egb}R1IF04Zo_%QqGTW2v<jXdo{2Xx|B9umON(zf z!pZa?nA{~cdeUcxT%RqC zybd~cb!uvMBf`)ftzxDP4^5|;#K114f#THq{hy&L@Nt(8YPyA8y%`Xz?+%carFL}g zt?+FKOOdbitSVAPG(93!8moh>a6%0C<75zz&WI0>-pZYD+Xl}N$ zmzMBwlqw~{+MkXjlfRympqO0T8vEp1ZG`BUWzSv4o4NXpgCHW5#FgmHDv)MA zjS41@3YJ`;+2BOC(dfmMqRZ8Z&GdR2g`N_YCo$sbb!UkUFwKgqv+VU}67Fr46*TAA zA0r)anYG2u2s)iT_L(6Zp{uo4qn0-)WGP5y2B0-iVpRmj+3%k2N^+HpS0XPGykovV z?_F>NDvfS}Fbf(Pa9pk3KhXC-gD%IBa5Yem$a@TXE>bVww@lyRUYJ9!N>Sk`qSvb& z%o&xnX(@}lbJ5tCMrPV1LEw~t6Zs9wrF9xxAX zSF=2&7gZYi4)YT)I~_cfvI+=>KJA{6ZGAP! zc5bvfEyn!#ql3CR|0JVpUz7WYFh+PMPUbi-?2HVMahrNtYk6p)&8`-)B&K;Ckha~~ zgcd(AHFXP2F1X_+dH7`_Gmtspyj75m*GvVBQd-bU>dOH#`fUavprV4dV2qpjL5Q!) zcl?PgmNJ4FR;CTp^g+e~oZt&pDlSiR_$7sf4K51)20t=WB*0DfHrv z{d?}~>`EsePWOD@H_*tem`PJta4)i^NG|Z67Bc9{EQOSZ+x~ud9pJH!ACjaz##NJPwW`P zMrBtrb%j)5feZWt=YarF#EBL#Zh%{5FJQ{%M^EEqrWD(OUUGL#xs8pn}NJ-cHaXCE@g{1?&+u=k=J5)!v*`gGVhj z$7{U4J%jfUyVzNEyWXd%8Ztrb_g_!#MqMwE`MJ#K^JMcq{6oC69O!G%xp;PbIgllNBgb-|f^>Ra_; zz(Bp1td-~+=H#ibtM%6q>}knbb1H&u3{g7u11HcdFyRy=m!%f-Toc9W;tC2lQE#LT z4i=i+QXfFWkwehRsN8->kr)krGual6|9T`Gkmrv}7c|M1{NY{r!Hm^xSof@qE>8jo++mfic=k6cB;KuLlk1u}gxWXb5sbLwr z1Ce65!G)u&pg`_R|Ne>y4#|2Anr2bc(dmIMYfe0=?!$M`&Tf;<=d4nES9+u_Tdxum z6EClZJ%+ds8ryFUT81x=Rs+WU?q>nOIpJ8oot3 z4k>Krl2Y5d2i6cGZ--5HXev}K=(9O@xAX1BKW_e6$&;ut|4Aj&yL^pAwi%P4qU>b- z`5>!6xPEBtMq|Tr{6UgK!wjjE!$X=ZrdXsIfImzEqRKdhysqbr=3l#6hBCvr@`oj# zBqb%)-JQ>>R2sdoY&yg35;R={W95mZQ)vUiRVV1|cJr}mlkDMA^d9urak#qzBC6H0 zZkO=SHPzMS#$!|r_0+a<-)^7$|>yK{pok{8MMEtmDDX$S1boC z#gae-G1FF7{P$-}@s}njjOAH;$nG}CcTljZIW@fK35MC!|QX@&_L_v+!=0Kk{!P?AIsAG><-B8_Lt5Ksa z`m-k8S4Go5A`MwL{y@&nK-8{x`P)7vz~YWVm2XOLo*g+b&fx)x0}>wo_WVfx8r{k% zt6(R4Af4$ForQO1=bB_$m+(c_P5tV?I>e)u9Y_q{HpNLTh;j4Jox4_7QHFI4I1uYq zXYv_m71+@Om<6RBzsS4FV2}_dmO*`Hrw+8eItCq!D%@@yaOsp8m#Uzx#h^bh@(Syl z{147)!M|;xqKl5ePL|NGmVs0r&<2?sA1a4K*SKh}v1bOcxd$YyRLc@k2rR4v{&@x% zr(=(_%|XM--*$peA`<3zzM?Iz>Sh!bDqWW5(@aVdh=x8`ekvgeNpf0bP6-^nQ_1Fr z{CW1b&avN;6W`=7S9XSNp{Yk&O!50FFar^)pjL%>Z&s#Us{Fp9`CY=y%vTsHiTK|; zbwj$WtgJprFL^=6Ap7OZ`(wE51n6i>tNe6;1xHy!FMqC028^|2&Inoh2${AhMJ^I> z;sOTfpMu(x%jzzt!QHrhcy!Rx*tzI_{61Cu7$Nm{nUm_1&#t>i=^0;)hIBQ5c%?39 zPMIx7tpZBuJIW>pMvE2LVTm?gji~*@vVRe1*F-Os5#`91oZ-(((_aCex0RIf*l*Mm z)GMioTW%?L{#L9M*d z^Ki%La#m_CeP?rZSBSC#Gn{bNtK>`iWwV@MEadz=WW~n^&?z!xODCn}1x2oZTzV)K z>um_hlfSn#gnw27@NHmOaeX~uT*1xa&t?&R(4H2W)xx{YGY@g-DnIG4sDZ^m3n-h$ z^w@mv(+UQiUsVMyIVO)6D2>g`e9NYE|CmdS)E`SvG*Kld41Jj2|5C$3o!B?^zIw|p zOwD&x3UG^4t?M#nyPGHi2B85Lq_KKmkhF2%ntV*M62eA?{X8?DiD7uQsym>6>m>#{ zR^Wx&WV)@3HNpA@t5YN$TR_-h*#dXk%lQ&$Wnzg2J)P!$I{`p-9zQ~7Dkr7L=Sc~|eZEe>ptL%%hg<#LA% zW_F~|3~Ii8mgzl>k<&Kb)T&j+nN}U2)}yWOz|ZPV?AOJP*vShvz=WBZk*cTWu*7Ac zkt~3eyETBLf0bVpQe@n;Jz=-?^3TQ3mq25Z45XQ`r8et*8pB2Z_6PKb%tJfXIq{G} zP4|k`8^F;4y}2u^s;ohAH7YKy`*^)ybnZR^id*8#gudw!pCvRxJS~PqGqmP*0h{kB zr&4ax-LIy4}Ke34dT4s%B2Yz*b*FxP^jwvma+3TUyKQCJw_deG#ke6Tn-Hy|rY^4zoc&yl6pW+J91NG}b=Ow~rA zTOvc6b>ZcK9uvfFMr|@o77!3`53@h%gQ1JC6a3McyIT%!JWF!4E z)~P4pn14gu0GhITg&`@VJbA`-en1TxCIaQeTObmob!bQdLkj?Aqd!bTdt_pwqnD1H zV0!xd+fAy<9S;_YHz^{-1YY*yf=n*(=T{%u1)zsLKO^-yTlQiDsmoZff3*`s63E~Q z_&^B;N=xH|SThR`*Eq(^?$vb%eEZg^l|i|ZV|d9yGdytHm{KXs>!#uH?L_W2bK_+y zsj0vy0bis-y$ya_a(v4hu(%#M5zj%OF!6n;1=N9R!OxfT`;*OKLm)=}AX-%bWDbYm z`n4Sq#!ELQ4ClMvDxHY^nFwwGp?8VJ6&d*nPQ^dN1t)eb_0>{w8l0`h%K%53J!(0V z>CaH;0qYcLg0Abb_ldQL8sVR;r6`yx&$I%fwqe?DhaIi#i z<~qn|7IRo(mvuS7*N~Da!?AhyC=yG;HuSk1=0#`O|HfKMnp6t3`2QV0%Ed zqdUR#F^QWrzWPTP{2*Uw76T1Rl>gBg_@68CXSEoK*ycMmCrS%zUyuUgNz_DOc&c3S zfJw4+X!vTl#qPGH<6!GnGr zPXQacuVdBP#MIQ9D+L=D*MUT{(aBnAdQt6_zLOsY;>5Ug@G9FI041ewz$T=|x;O(KS_aLb(+e8f#{qRmWQIbF_&qBZBvd!NGOILdaLL;S)M zKkzOt99H-qre~D(RE2X6=`9QXwlvcyfc-!nHS`{R0+#?&<^3<_9Y1UpbOr2YZ3S(4?}^0Jp&YI z`-`WZz#hNg?eqeY8*?5FaM~X55A*oEQZL1lnsB9h*34Mcy8lfIq{NScsrZD)D%yWs z5`hHc`LBBon2VD=Uq17!!(@c~ry&39{J=<>$qg||mc!J}uxBRhMMhReeGY-Ny|YRR z-z*MA&*p`InnBt{bB7@JL$ZuPP0!kDWt;k^{@uQz4FTc=Y~H)@vNex~3y-{_qIG1= z%clVKAjc-0DfE}<{fk`)Z3wGs*`&Z0f=Lb!d^cWvJ5xY^TW6(~*-N&(a{|9RnM z2|zRrg6ZEtuwq?jWv5`e%@>r05x8Gho#9RXnsK3?qekyCK?HT>pDv88brVzd|# zyTq6J=fK18k^B1fTLv{0bLYQ53jZ_=bTXiI^l~g^p9##>275~{04@hXgK(cggZ>`Z zb3BKys;a%fx>}6ew}(~oeqoUd9W)Xo12D@G);uU0V5XX$3OngKVs(c(T7%{UmP%|` z`!8&W4PfyG=yfw@yMP&SK;vaoFIg{uazF`jh?lS0c?X7ZqMQ0&68V}A_PoR^gJuc^ z_qL3YH%E;VRhv(7;}s_V)MnKiPN`);gB~SB)O!s3prMKLEz!rnzq# zFo7wX-2>Xohh>m!uXW;S{sey}IiZq3va23Zs4YX^!o?ps>2**S+OmhR(9OIcS5Jf$ zM1Lt&;g#p-urN0k(ys&cN(Rl+x;N@O{I=ZgZVtjb@=OpJYv_Op%+7bbU+nPYJPrIO zj}>IDi%SlSUFDkeYnIRMBO!mEf-3m8PpuZEOWbsj=mekSuXdhdjR)Q^-PmfKN1g1y z@hy7AE^`t8*dD|#+A#k4V=p1Rs;tC{WnR=Y6xX={D(QC8AjPguVx(36 zB3Qo$jNA?F5Kjr3Qn~R_roSV&VMjAVBA~Af@sdJNVRo4MpwGwxw;K9u!pWd^lrE-+Dc{H(Err3Rwr=8p@VcQUp{lj^oqU~@KjjbF z**iRh0+IxXWP(L@l-x;B3v>E{;NLjH%fR#dbxG4XAt0Q9Zs^ep1&Wl(6;4Mw?sq$y zC$}fV6{eF6&>R=EU*TN22ooZ&tjTFn%f-n2$e54ndmj1P{cHfo)jt65r&%+hB5L#`PH|RtZU7a;~@iaqpW7oAu9td;wiFP5^0j z0fcJho-t|u!EU~DCK_7WC^h{+wq#hK3&p4oT8VQljRG*vG%u{14tt176C_>~zrYsf9H zCgih1>*>C(AzIkYYn|2aeUA)a|El5Ooc%r_S#Hnm;3%mK!aP~vD^WE{9qNoC%^Gm9 z6KU(VqER2TNg3{@;_)3+{vOE&l=x`^i3M8vH*jNS$7{XNPyuwzM!9AU4Go=h-b?{8 z18XS#j;3Oc*7K+Hi-Ciwyh#@euHjJhQ_W#opXYMP2iiuuN#msHz%5)!!&!gopbktN z-&vkClkJAYQ!g0H<|`^`o}*_a&DS)5=wL8cYyC+R4=n&Opk3X=!qk+=fe4%vcY8E^ z-%~<;-pw}@wZ@eq%o}{Un%aHe)lgKJYeF#b_2aq((HjOaOE81JpvTBnXSKe%z5_Q- z)GmA<;M4J9hV9tMasm=*@*DlOols1UGeTqfCaudFJw;iEKYwC3}bm z0Z{pe2FC*cvavRT_ScO7&H|CZG5Aj$rh7vs zFq}?|WnALM#&0cK?%1IHoEL95*r#hOp-nYp+BgB?&}znpe#1Lis1kL!Sx{X64XlY2 z(~_pxhJ)rLQ8G7{?H#ByITU6`zj5>H(VwQl#0)Vh6`${WClG7~SaTl({9zU2sI$RWmE5HUYCO zL#y5kIK^EY(}-?D7L7+DP>2C)TYd;C^G5)5cXW#wyK1Q~cDy^NG#p$Cf5Z?*aq8R}aLA0WBpeGfXcz9c0}`PO7UwSS&2p;+p%_*p1)j2Xbs&Kz9| zKA?^p4s;$~A->`1iuIA;L<~_kH#e`Hx1f613dmJ7ommh?_M5s$IS327PXtY~Kwi`c z3VmkN<$hgVBG|&|KY#jy8sIljJ@5fVOorLPXXQLkpIXhD*Fd`*Xffi~hvnt>9k^d` zQ%NRvq&P10LhV41-!*=am3{F&)us+`uCzP9;kfZxmMLQjdQhwp|b3-_MSG zFnFA^nAxypidFZQJG{R5JAf@54enczSCs1YMw+qfe^62PbqBfW5vWsIfm5ekw>wN@ z*yEyMab4Qu8jB2a_~cC*DJ%$aiO@~yB! zx&oRontsP#&zAu{0?jN@-Eqp|8((zc5q!&&dk@zOk_AQQ>L<5+GqbM4uQ`UOe0DpL zWIj*(3Mgkqmm@ zmT$Ngw|d!Bav*hCrybl{W;mbsh*1Y9T$1sePw4{Mq;iEpXg8mdx;>7Kt*!M@C!Q|Y zyiS0%BIw?dm`JFn59&=o4P+>*px_5$E7mn#EL1)3moFtVe+99bE^@=a5-j+&WyV{6 zMl!Zz>!01Kx3d-aItD>ZwqJJ9qCM=dOT2(Gyb#Tc@7NnKn4yQuRbB8fc}qgY&Ceq@ z&8uF|9*O# zS`Hq@WeG)0*?hhpN43U67?k}bsIXWFQIAhfn4FLGpl9twyKV3ly)st{8kC*`?MdEp z1MQYRRjLg;1QNGo>n?)tVggCEDs?uLd^fwy$$&#gO+({7ZPs;twsUlUbCCJ-=Q9ul zpdQf$!ZnLM`(E!rG(l#8u*1|KuF(Gqan;X^rLB9j`(h;(SdST1(8h6nFR=7G3?msj zW9V_G_2UruV0bAOL&U^gMd&$w@o`zj3{8j+@@#hdTjz$5P(%elEudH*htuIpNQ@)0 zwPx_1ZV$KJIV2t63MoVI2{tN01ifx=5M!w-yqBScK2mJm8v!XUM2_&4? zidsIfVO3IM#nA%s<7WkRV)KEB{w9Hkyn=r!9$!8}^%zd@U{Fum&>0uG^KGj|yFV%i z08zfj#Q1@dl`e>idWMGsK4*a!CIU#VY!-8Y;L>{jI8KmB=$`LRGm+RzG-&x{6cwR@ zB00MT!^S2V?)6^WytJyUW9xt^h@C;n-r- zsa0>cAlNoD#Gf_&?v1>kI+X7aQN}M1q$d8~F~$w;1 z0-I8hkd*G0O*e`H(%m8rO6Of0J-`3Gevt|-bEvCMyo#BV2Of+Iw<%gzLVd@hEToJYAge81Uid^n}dlEmEu*`;LdWYhc0_+s+#*RP?H4~I^sXb0fiFIf(E<$1jAAQyH}p`aoy?Ux2- zfwkUT*iwsn6T?lRyL+7vLuYgI6TtGLkc#LX+Tle)CwLwIoF(N&I;CfWSxKq9`^=;^eQ$E-yLw(HN=3f;ZiI%v>26 zF-gG6&-orb$Af8f$C}?b5=4auTku(u6oenK`!IJ!d|Pi%*k9=Lc_$)T&ssDnH(4u% z4?zgb?Kw7w86t$eopn;M_11?8E#mavlW6T)()6UDy2p(!uhM@ zPFMtlYHl%K`IeHd)>2w-<1}%UX;Mkm=Vh6@WMT7B`T}jB8~z9H?%n|c1UC(R!yGru zusc$gl3S?lhvS*5yvD)k)vFvzF*`01+Qr)@owI%&J~QtxrWFVAWnvU$#I5}YPo;Sw zyK|q3D%x(mOCvfc@ENyef#Y;jVCPR3=vX=MJEV3XL=Y4bz%Z{lb{68vtl>LuT@kJK3eMDp{03Zd3mg{5s~24P@qqvk?OwL9)teVNN96LLR; zP@f}Jb;4rrvgbN3Ki>RjoMv9(YQ<7>1)o?TFl2~ME$hK&pRiWnkC~pa-*iQ^nYq%t zEHgDK>i`SJ7^O359N^b}xi|N@WG3D{(AnzH?A8ZDed4sL3CF7(|Bs)jHKJ4t?t`* zk5b_)?)R}qC=fQ~ae9r1OCyF*rg=UbdGe8pQzf;pJd7F<3`Lavt8QU`Bqq+BBA}vN zf|)hB2drh}ei{4Py)7hZNby*79d1o#RYC-6SI<>c`jXf+5Q}%cz*tOpP%mSu* z!}F47^+qu{#5j*?qx=IHi9j_TT%?4~89wxLU|(rJ`Kw;`Q`$epxsa<0y9IW_Wu_@* z9fRrg$Q;H_KKeJ@NRO<4FoSTD%G%o6Z?9zh>aPH#-jaSQ#^_0Pc(P<*) z$2P8dJ_o1U1}&?0jOE9W_MX?1%SmgGhpno+R-DZAubMwr%)hY6>;)p^FLa$=D zcH{WAE7)5O3hc~DUt>Cqc(y)f({I$y#|oBHeve;nzj5|`D?rGn?lCd=s)4iVKc{(Yn%7K+!fp|t;td^ zx|lodK%?shYE2%db{vZk$`&+jK*~FPO(y3lV6f;88@_15^V>_z3y86W?_z8#lP}-DKl7;He{t;91CdN>*Hp)G(L@n+DB5vd zoO5_gKkwMK<={QD2?^AD{+NHFEn*cQYSXMT%XEsWYf;>=)UHPka19*h1IUVOP%*(5 zPsORrOl(C%?U*Cyj}M~mj3m*2Mly=xdmuA2Dt->KK-zdTgWNVyM)YJbJ2H|Z{2tlq}U)EJ7 zioWqc*DoqtHSUV>RWCodu3-G9DZ1)~xr>fwX9`e zK&@IiY{e@G*m70A=PuFUg&wJDIa3IOf(h03?c0n8`WJKi%=2t={-uUai~cN#!q`&b zw!#TKl)*|-E@>zVNAoK~cAnYAJ;BAKSRS;FGWp6uKd@<{)Oq6+u5MTUEvc?Ms%Su# zL1?*~?39GbzLX--KVU951@>=E|I8(2H0eX5Xgskq$fDmV&3EDL`_be)h&gO#fYo^h z*z7#cE7G7x4GkW<11vFcNc@(XO28r78y&u2)pz+!XQx$sVws5&m}J6Y4<_a61Vt{@ zA%+dcn>~bUFn?6OPK_gN+uH1jsYv^G-^i0~+as|vCc~V8xEkB~x>cOQlMR;7*j7Y` zJ@YcE_g**5?gA%{9&m=9e;3V1qE-+vJzD~p6I1K;iGDPd!1vY9`>mI_0EH0tzr9>s zJ?x_c?>dTb`<&Q;7Xzt55aprSHvl9#a8Q}Z=%Ej#^2qXWx^{6N4a;-q+H3ms93&>3 z)%YAaG)QU5IdWL}^EfW$nEuB5xMcO(yt&OI(G)#J+=asaGBS*Jx;a|>C1FR%4hD1!2LyAJbnR^OJV{oz3{mYT?><}2<(^nIP{{%3dUHUaco%J|8JLlk zR?Yxa3J(0V4Q;Hin}Q47tB{4##{B&GlP!9X2nk&+c(ZJ8HF^+>`v-T2?PZWKQ!AHa zFm^m1T?RE5fj(ziRmm<}QYJaQ{rgZBU*wwJ2t_ATGj$=CB%1lMlh)MOs9WaOwX-;R z|DWq3l+x3q6gyudg704}^A;3)<5N?&Zkj%SrWhC)P@^;?yA@z38p#^fpYOxBXZKHd zyl8v5kjn3CxUjZLGQy)RPWbBkM+7yd6TrfGG2^t`tK$=jNARMFKd(@vGvYa@g{eNb zOL^xqOe4l|W8VHT`SFvPT~eD@%df&pKrkb%)=l-2Zlwsx(JK_n`3n7=_6l!HG{34V3Gk@#?PP^3!XHug5I1yzzm1L=5b;3v0#YrYSVUk7Xa%*IV+lf zwA?niZ*$vdo{^&C62AgIP1@L|BN%>6<5f94)F2|4XkB=aZrHvr1T%k=$?vEZ{W z3XjEs*8dvL76dIf&fkR$17MmQB($&B;!~m%fn!2I)<0c#YO1U%<=MNrw^Qiw)V~^2 zzPR0yb;~ve&$#DjM(G1}yJlGXyn{|IW+@N}$Ny>YFTi3yM5j6oM+miw!}_#m-d9Ch ztJmT<9>rI{X0|%=Ed4PfQ38Z?7|ZQ$1CXU!jI)c@C!VnRog)SWV9b|s{?juYL2!3G z&vFS~zI+K0)|Q*xbgQCK6}T_SO4%)0bXjO$W2O?rqbG%}X9&abv7ParmnD{Y(z5aR z${)cr93UR6LEKJ z@adg8{wTOX!SJn}I3zk+tOH)&cpkwIg zBLPzQvrbv=jB;H&Woha82YR*W9xxhUg>Sjdd$FM#@VqYFed2{~wFSlkFaYE+l}JeF zBlN@y^JtKrlHKbGPK5UOXGC_&WDpatCelS3+udWn`0BQa$ON}CSdU4@CmaFC8_tvZ z^k4PKk@x>*_fr&N&Hom1q49Xn-vpzYZxxa9dE@_<5`t(e(FvZnaBl>BoaRn6h+?J~ zO~afEmXY7_IQgBq8=)tHFJdZ#i`v@ibY>x=XW8Y}6FBnmviB+14vxID0Q!>(SDxOW zqyxdW=ayYV8XvBg*SJES&2J=1+5h{PbSrqXBB!vhfB#QUPmh&-%r~@%c@RtDFlJBq zK_uMYqIl>mIh$D(lNwW(pH98c)-bWFM|dI3Li`9Lwn1;M;gviJf?gQ$cp2%HQw~ln z{leEwaPFGZHi&wwQV*(3ZGNjU4?HmH+q7#aQBqraBS0rv%+Hi{iU%0v&7UU)Ivqjdb6hSO%lnPtLD^xl+~DC0|#2{d|f`_g*4~R0M7qJ$mD2 zewvvmbxtMvr@dT_kO9(zON-5Sl`sRN+3jflQV~sPOC612aqE*GfwwgF-M6v)D_@y# z&VI`wJ+t`bq-=eU*|gDLY;G>t*x~A}EPw!L`c-TW(dmkQdkiXx{Ce!`RzK@bQRj74 z_EJvit-~35?dUrL)z#9ucjU~Ykg7oyX>5GF$D3T*l*ndYwjlhZ9Z9bIDazYCjHN8jJ_Pp*$f`@d|R!L&6rkdnWK3Az3R<7a6j57~&^P%S`| z;dQZDPz87@x_Du1_a)0Ne=$cfQYxMVE+h;K6kz7k)Ls;*$3z0dfXz zw3}_-Sy8e00Hhd8OSb21x7~rTOc-r$!AIg@pKzwT%%%0#9c0}VHr+=_U9`(g`hJhN z*nH!cLn0$D^0Z5;0PNa)^y9hUnkI-!}K`NYG&#(rGMb?|ww&*{H^qb_!^HqYaXU zaP#*;>I@Ly&WBmlQHwz9a;ATHvVBP^=wuLybyMowRp6>RHT$EClbO79DgM=I_nK^J z>}>%u?~T*{G6_`C?}4EinjG-x$hnLNuZqS1?)B1c!(!~QYGh}QxI0~j z;>l8HcW-rX;0e`-B3H7s?RSrWG@dn;V#rb|(O!OIQ$7}SD1H`Oqwx4($guD7zP5@6 z0)IA>?~#_>f_!xV2mh0?*vA24DB^9~bAjJksF#@z{z3pbt=H=h128t-K}B3CMV2r< z6q6qGy24Eo=>xq`2C49@($f1&lX_*^x@Cq~wLMZ;k8^H-=8AvMN(#V0dKTv6HKlJG zTBpBlRA&&JnPkZzARiVZOT~Z)>I2T|O{Dw#n|f`zBNh>(EIITqVsb@06;y;jqYHW) zPdCG^-aoIrXjmubdrj_ty*7?uxD>(Ui#)R##hFH=#%M}bdh>Y?Ji~*I*iG;7mJ~S% zfjQNo_1qFvh{N1w$HD9Gpx3Y(Jvxew_ZrC8k@7mK-4u*S`~hwNWOKmI(-b(*L5kGy za1W}J3CehLRYb_|#IgP#?DLls6lG4RQ^gG+#D~P8yC`a2Q4TFM;e>0_khXX{UW;lC zKmpQLS~4B{3a>m&YNvR2Sm8m+dtYSX7dnS`c`_ThvG1WwX#{>kCl|BvKsWGr$v=tgxxW0P%wdhGtfU|Ns{Dqymz3z^#hTGC zjaoliSlcpF%3pASkkD4*;w6A`s%RzU2pI#xyaRZVT5!Ml4=`}QT91nX!yPg_F%e!} z{Rk8h=-Jr^Hh7X0SdtVz4Q)i`JfL=`yVNf^7>?zO6L$z6r*08O3aMV5RECu?*-<<0 zHrDZIF`c5*t3Q>f)?3)PU=B-FV79)BfNJ(|r+EBL^}y35AZv|uHLr$H zhj~OES@h#KA9P~z(6Xy7cB-AK*;@DdEw&(TVAue$6o;(5c zb$BZ?++;X3ZQhHf6%|I!Wx_NN+!9m7#oC)a$JCpckZSF~ou#o+OyeVcZIj`{&!|bE zhXPg;U$*~?N9>gqrDA>TY;+zW0=tdS)~x-MnjxM>gS$k%Hov)aK5k7!eutI21b$$# zC6-=Ui{}QRDIzn-8byR&A}GtZ5g0eu;Mmgo;7!hv>B8o3!l4`*IPb3ySkr&y{>=e( zLq8UR`|n?Ofls)1gJFk(T z)g?7pMVI@E;6|L5`Mw6-Tsn&Qa8G2AHg<-*Hf3l2KmQI(>lJ-b8?JEM=v!_Xe! zVr|*;sbZ#~DMR7|FtbXg4DgvjiBx6rJUI}YF{^Lw)J&z>{@1D5t=Ck#MJIv^b$q`D zDd0dZ<8J_@68Bx`pN_Q5m#o`JW_8cp8!`EPHFAwzV-P-{)Z6I3Zb5=G*x zS%qYsk-ApXNxWI6K0OhjyT#vLSP1qpZpt3=fL&wI(PWexwPQTj>1g?Pom)t@5`=^x z4^H0#7ux0lYrqy?v|Y51p_;q(Q~ZsAU7kpvbvoN*CZBTy5ohevOiXo9(jsa?JySfZ9JNoTolmD6zznVl(zj2?`$fs=_GBDudnstB7`?UG&k7nP5Z0dP%lbg>EAIs@iDUZ0dG=PZRT zR1*En7sAIE&s#c!~n> zj~OyGd4XF`7r(r+G94$!yznr#dgO&S_R#R>He9fU!aIvY;$zggQ2z+JEBd!~AIaua z)mBW;2)VAf{59<`dE{JmWdvfK6dMzg!&lw!q-d}q6!Pyhm87^GOS^`RSrLWOo_G!~|@#Th*#W*B*x zEHS(h0ZzvW$ECr1imz&5u;Xd`6#q&rH7zZd|EKN}Ho6)$&|BH8T@Rn%?w2Hx9YM{= zB&A1eGsrt4PQ=G7{02{ag_$Lf0$xTBOqiP)CCDntfWIt-b0;{`u+goBpCy0qxex}r z+31Rjic$of%_JDiK-swQu$QW(-nOpgVUEZ!NCkR=ZpQq;`8J3IG#F3MezLmd#){%c zQ2rEovB@<^eWHRrpqBIbHLBkIg~z<{S#g*tdMUx#)*stKk?b3&Y|hY2|9+~|w6ZMJ z|LnjNn`VZGNz8JPoIIx2=#);_jSWnXDYn9XP!1}jJ-Pu~V!_r8vxyb671a0GPs%8k z3Bz+5a4=82jyrO`x?z)3H}!Vr7;_oY|BeVgsBre{m)kMJ zjnO&X|J~me;O}=-PTN)Ll?`tn`|UrGt3(ZD3%}5~)5s@*9x&14=Ibw}2`lYXU8W^E zuS22F!!zEpZ%#hNN8Yh{jfVDsZe_hIGpD(Qt2S{jOu?aNhoMMtH_xpC2ptgF&WLX> z`{+(uwn)T&YsI8|beWEwe{WcQ8$AIc0kvr0E!cG6+0SGLekd)H} z3ARmTr~wpXme=M^*HJ&aTfVWY13EqoNJmo61)4T{KP4MQfsrXGiuV9bfDHaL*&*mlBGa$8 zd#bFgyog4T1xg@hc_7?f*!8Gu0qZQf+|`-yiqN!`{bqpyzaZSt#5Io`ozQ|EDQ{zQ zzq#}4aP9^HaoCF}FbM}*k$nF}Fle>& z-hEXwebCPYMfRNo@3fRpD(kdNH@TPeO=6MWZ=d_@>I{EoVjzLVYx7gGr0||ZJ21#d z*F|^Qd{Rl;pwe79353ADc)xMH(B~{}bEo~ox5lhBZfY0yExRsm{?Et|r%p|%l6%F< zD3ivB-;08Q&$4RP3Nj@`XB}?n;!E_^ZqLXKJo27nlNZ>AX>%aPL4tAc2k}|70*6No zi&aIi3f4Zv;tQuQM4Vn>+$;Fj@(uP^RZv5|d{H3BHVnYK z`sNQJ#ryj8_m@^bdT$jmpy3Cran#t+>f5DV)Ogg|;UV^Ql*8v*`OBIuTn@fV5 zILPFSZCptw96|uD1#R}R^V0=pITQ?jft^nMmjQvDMaL=EanGq!Qhmq+gdX8Q=+U{> ze$8gZ&&J=k?F(HqR8^q%7oQUT7u85U?AZwd_$Z67ufG}AN6{l4!JhJwVwMYR4DED-M8*+>Bj zl`Rz!m$7?Uzt#~9K)@(?#;XFGSH9F2>(Q6}*zqP`QM1i(heGT}SxOQw=El$YH<>>@ zL$MRPf+u5Jp$uE7W8}wTuf!LMQ_w$;1sV8pS`e~6+ltMV-fk0luaFx2`ZH(TC)(L< zT_o!UD!aSb+GVk1YO3<9xld~`!79$Xz4mTUS*yVi? z{yS}#HT0Tjj&y+wWdZPun`1)>diFfmFp1d0nI#8i8$k;|gACN%+GI0A)QcseB;T6O z2xr#N;dqEjKaKL0!dfFlyLV5EUUqusPuaXWNf-CSeYG}#XCmIM$f~N&bQ*7HIqNW` z@8sh@4|`n&dRCK?laU}>TU#bTi2%z936hYQ=nNQy2oUXZgEwG#*c%z1v{6w}Cj4nt zU_cO@g~-Ove)xi3JO$WnnWx}-FGd~6eqquDO!E^>&q7>t=Qw>qA&eo}+sN%X3P$-u z+9(x{le6?|-9>K1qErv7PyCAVVo}VWd-lnNqrQ=yKj7admV?ckbjiLeLVfEY8sn`$ zX;ZuKcbUXkA@(dsaDtPu|M{oBdYQMR2oSKIIfOMhUI^OA4tl8^vsznegXv8G0^$XK zX$Le2fh?-B?GOo28Pr0L3-(q6++mmF4h=qMa?{KqQ}?{W@E|E4{hKCj4Y|lp8g8&M zX+J=WYv}m<2#vNC4Ei{Z6=A9fboUPFo>0HMYM0#Ri=(uP=@fc0F&- zH&(CyAXO|=+W}L_cz>)3dR?aF<<&>U0181AV#M}{7JB;!3=-|2FxYI=R(GRR;V#}} zDXx(HPLEsUnBF4c2H?X%b+b79zP=u2L?1;PNy{B(y*>Vx$)j1UaO85}VOf^yw%En2 z!=%nx;LMvJCE)!~$XX#5eWKS5M7pxnITQ z$d-Ce-YmzmD2krlLQ#bWtRoaJ?Q5*~jvql9)v1r&{`B9F@6fbzJW$mHehBnqO?bw; z9uXf6iJf4E0n53j;WQd9`Xhe)NC&OgHnQd@4)a$!26}Fg06-uReI-s05mI2f!l<2U z)&T!51cUBDJ^%fMYv$P6Ngq47I>V_cIlAyu2vpq?yQ-TteEs_&l1;<*L*FqK&*kQ# z#g29J`cJ?&WzsFa^{Kx_VoHe3sW;rPgmddIbqtzw{Y^NVVW{?&Dw__HB==wAcze28mZjDwCL5} zIJbxAU;UXIqi!!(93(WDbnq~Vl4jw74FbLXJ7|xHcspR|1kA1c7QbXT{CJICKSliu zHt&$NEJZBS?6Owjbvi`~tvdPNGU3+eUiR4C=INKs6)xPpyoLHomth_t#lYdbLPf=9$xJIGg8EhK$tGr zlbWD6zzOmC0?y^JJKe>T@R4%B@x(_avwTVOG)8T4dqWlb@wtvrR+*rpVEPgFxH?sFWB99x;lE9U@(M-kA!55efJ$1_K2F zP8USPkgG+1tydGKiZeWl@?0UvTuBZ27wOl6LhF)){mo3jfQ+4jDsU)X$!Pexcxm_P zgJash-G#sE90CEkrTT#mDbf@enp$Pjfe7dQ$;-t#hwAwPU;)nuaPKa}N$SJtpjt4DRX?YRF3lkU^ZYKm21peBBH;`-97umCfVATd$~6562V0jP{sIlWzm z%rNxo%D3O*(auaA7MPmI2#V5g!Lw`hoSd8!U3r3JcJmP+V}5+;08d1$8uSk@_iykp z>DKWH8@ahQ$sz4r3aaC&JLV^==-(fDvBm{pW&)D}mO1hFZdQd1d#@%>j;M%d{p2s!pf7T-CVK!oY?8QRP3ElqKVsCF7uyURTGLW1e?L zXg4p*c9)_4XSKC;`UVwaCr)qE*njsA`k&c0%<7zRi_BD6Og`G-OBIcs1W3hQHZ!M- zl#oLBC=d>(k@J`#M?Yio*qI7CT?}X&nyr8bFfYHpm$42dR)L@3C-@1P?~asttzANw zFPvjvAd-zex@|B%2d78)V+RhN_=Q0!T}f!Cj@fKVKW=Cgi^i(k;~)pYGY{zyElJck zAar0(7}76vCOEtOp2|n;#DP#Sg<@#K7CiVT2HI%aoCD^;u!i8^;KJx+GgcrHAn0d_ z$f$hq<7nDJAPKIuAEz&cZhQ{{X!|HXy5vmGR_t&E)X>Q~Kl@G>d|rSsJnnG1knG?D zf(K6DtKnuEy#3bzr<|&*0ioBp!khf|DM=z*Qi4^2flY?wI*uj~c^B7-^TB37d%=qWMT5^HLh zeTOy$|EAh2>#jN~<6QzVX~nNkf@`Wzvc^9>JN*!&%<%@vwPs%`W?fbH@7^BxTCpgU z&bf*&6p5{kSPCdPbf=FY4G-AC$$yb-LCj;={a_4D^lBe;6-1S?pg-n5DOT(GPpT{M zPHu=%MIVvM6M}69b!znbJ*KI<{Q5he*d2qKIhg3x`fiV$9}XmIy6EuS-}OfTW?~JF zZ0h>;$Lj+Sb2c0xj0D3x7oc6cA3F+t{wfIzH`r$$DC+1KIHMQ^T)TsLU8wHv?jYfp zk&)4DbYcMX30ly#)$1KeY~C^9hdg_C(0(ycWsV{eGU7eS@?xeqL4!c0qZ?;ZdK04w z#Ac5*Ghc5D#EZxOPC9o$FKAu-$y?#Hjntj_{}8Q1W=+Tk@c^-(Lz#=Gu}PJ|z=ze( zJFqS1f}$}bu9$bFGdM#o0kFd}x+=xUDt-``U$E$RFGSzLnsxLI^?aaU(lUAe11eB(m&a-?Ry zyzQXMZO8Czr918H`ML5`4`4=;fz;HO*gDDsE)E1Nf~fe6$U1jujc*7|y@4)V{dR5g6EEu##X3w?{#CKc7W<9?<5d5dCd+-SMZFfdSiJ3sF3x9wf{KtqHM zsd8_W=ul3_-iweQRgD!KfiC{);3hZjO#zn5TE``VDjf3R_(iUArk15co;Bxe2| zQwoS%!|?z&E?T*`mqO^W1&~AJk%cT@UE{KZyB-YVd0x!PvX8A?<7%I56vS~*I2!Z|(xG^|Gn1J9M#4{M|!~Y$DcljZMM0a{AQc8;6y5}6Iz9ndpt*qxd zcI{norh_h;A7im`mg2xld=nI!=Jd7Td=yt!+y(1HY5NyZ1`!(2K;>vNSMZR~S<)r8 z;gBN`s9&FZBMesBU%!T_mf9YP?1AE067ynYGE{7K`+Q)zeS=}pAH+8zTXWgKgg*a> z`6&;Riprg~V*6jPBn?Nb71)A+rh*eqfuAT|$XqlQR;yI%k2TM^u$dQv4_*;WXqWE& zq2A3Q-VEpGO*w`jrd`;5S^!xx*11AcbP4F!HtY6oyrPcFe`imZ1^ z05Ecs&ImvvcNzaC*k-~y)Hef}bFU{gR6pSiN>zF%e`eHJeal_bWRd-k2*clerp z*1xz`StNs&sQ98`%L>`VF2Hi|Xi}HEqrXT8nM1Ne39Rl=We^mDJ^}J~Zq%=S?%))H zTr8G@4yNC_`NseSq5n~BP7^!I=1Iio{>>YNP(sNpce)^edEN6pGFX)gjC}DS!bu_3^KuSeKK;2~F7e*GwC}`h z_aN}Q4sj4^4P~M$RDuzq)$xX`dOVl=$tL!x*!=7+*M$iKEoT6n)5I(h@@=!>Un+H{=#%z_L( zUl+dxePcL3tSj2{6Q13@u^DI4WqLi!JG(kFnrpeHnKDp@(DeKi|9VSH`C)!v7e9>Y&_81CkM&Bvq z-05Bz2?+lI#S%v^2$+c(xKNL{#z58N`NB0pyL=IH021OkTi>ICsb&H3uPubPh5qB_Y2yq%7f7EDu;~~T)a|@B$NCPZZnUOG zz450WE+uU!FZsxz-sh5OFqEkkA^C+(_n)_84Bx)X`zYNI%PzfODrA{rCf4;EttX*#7yA4Js+lt}1+8>txMIlyB^Dg+MhGTdB#V&Yc z1)?D1`_`a+obM|DBBt48!F;U$EC8_s*pJCHH5YG+ofY@=u!C#oCgC!n%-D+(waJff zcuhGJB}wiJBB=c;?Dqd(is7NNGj$a;4E3NsZ> z&ELYMaBvDA>y0?Lq8>TYgAP=!uWE6nz4DuS&06Q|!pfQudPb=S9lg&3@WM)0WoLJ| z&3&$wGsQP^&~?+*!OIAM;i{1UmE_b~s!dQ#&CQE|^ zJ5Rlk5mXfnDw~-1ly%e*1RtNOty#08it+<3%yOo=1B;xW6U$KB^P1Yed|ZmFGZmZ0 z#3}uqB+N>%0kzCp7BG5&sI}S_cRxs5lrEVkRIU1~o)EQMeA^Y9t0!piz*GoN4H@$# zlNuYbWXwzembezEPvy?9+8{CVkzOH*#Dn5t*?qDQiAYZb2*9coYWf^qQE5k^KcCM-M z0&WSUBm1=kR-;zzK_eBqg}IQP{zfOox{7fsHKXN&TcIsa`K600f@C(2K@T8qDH)HZ z3?4N~V?Yo%-r$@U-(zDIhMQQaBiCFJ6Glb_12bY;VoyONNoR9MB`U!F=-avGdql$3 zeBjo6`(1d4W@ZVOZdIeA6G>#D$483>m@3eZDuijFvZSlw%^R`*G$TIrHQo(%ruYRv zGhSWCFW&4we^3z^6V`Y8HK$aIhk8Pjtl7qHC^w6j0dtvbZsbCi&QT-sK-PBCoSF@xb=beLg-=ho6okfEvwqT#dTUF;$a>D_|v=-1z>| zr|Pz+_Zqn+ZDrz>LlQN(B&yBOCxOSvNdfdgKyS!Sv3)dKRn*Kg(d9JSuSL$(MiZ85 zU{G_Ywc}WZ;q~%QA`WyZKo(Jdl!;Oimn?RI?J$6Kv8VDWSetVYA3d=Kms)pkE{;>r zG%GPb3|GY$hH|NIYZ8}s_$Oz#B^)Zbdp|w#l-fg6#yJi_c)_wK$on?zH~7~)tAtFq zS&dy3_)$gktTV$VnEuWkR^(+IGVk{E2m8;9hu(c-EdYZ#*1sWCSkcR@fk?$qo1{*&o(=!EGRkH{#C_G1kQpT>Tk#xqgqRT3Pr ze7pSuHR5@6$?O~uUN&bCjt*X_j*^}}&Lz|lLykBtUIGD!f9fqZs2f2b9vN0KC&R%W z&EruQ9{QybV6SWUvP$qp8KJtF^yeV><}r0`1O{kqTkKq(16yg_M6sT>V2!nJCpog4 ze`s|ZM2QBfXN1*b<_M4nq#}S9izNKsh`np9bIl2l$K=vBhR4T|5&Q>o1G6<%DG}-x z#ejYmL}d|n8uwl89kG#c>JUPyQC>A_Q?fU%*h_;b!)kUnfDkqOwPt<@%~egD;UUH& z`5phASpHNK_wH92m_Rk?)uOLLR&Y7h*|$J>>!xYp;mj@<0o`8F)3mx(vlkHhZYM@9 zGjSsG9~mj>{!GZ(oDzcRT+|Ner6){7S&~vPoB^BHdEwKn1#By-Ef~2q$2?R>aGm2v z#gA&@FCi);mCd~5OBE4Tu_jTMV@CXv26LF^kkdBz3MUovCIJ*FoLzq4EI^}abf*QM z!lT;$2~LJYx#3|4shE){`)l1_s+=Fg*(q3G+gI2&bo|`893}az8K}wFzT$*Wk(MH%;hG$-^rZ0HQ$Bk1C~IQ*7{?jFu|SXEl{ zq8OoPWaf3|U0K+HCXbfcF#ne|6q$6TveQs^X1bj+=ZZX|W&iIx{^jCiJHT^tn!0*< zcG;j;7QzH&LZU2dhBk8ixNz=?NGr>O+)^zXWWq06y!qg)S!{|&$Zts>bkf}%pe4P3 zzXI=Ri>7#N!hhK+k#}H&&KRg!r(3yfg_KX4PybMU{n(fHVXj|{NSv$uBnRTmLp?C1 zrO70E^jHB%UPq*wm+G8+A;bk#opS(aX**foL*qFYl;+Tc0VeV;9>QPd0k~lw=wUV& z?GDA4UU<@Sc zEuW~@`-IIpgJ|nMONG!5+{Ks+#(fX6gmIUhClgUWA-!%{S|RcQ`Z3P0-|6z)@M0^q zQa`g@e2n1(b0465pZ~Pph~&Kt)}<@gx1VPQejg(v3E$F3;WK*aJ269*vY!`1R#d=L z0to%%$B%oNpg9z+&H!i{Rcpyfo6W`Gie`oV2jQ^EdJ6HqhN@C? ztpm*%>R0b9moj0or!%DF5Mn}#`?x6e@A0~te`DU~nnx{SEEsa#OiIq{1fhi$$)o7O zvDe6nR+(=_7jy!dfnR>gxr`J!y4ekebTT9kR071h?efJPLpHO$p}zO_%jDq~ilqXA z2t+$aEH}eYPk|ai5>zdnz9Mj%teWAO(w={v(@$DIx{`WZvW15}yeK7A2~?C0bCqFghdf&(q;nuoMMlj?AO zr)Wi+#C_0nlrBpj#ki)(74Z+FOhA5Pj7kc{rU&zCyTI^Kr*SQvWiYQR zOgcezKGK{^i3zGemj5xndfKcHG){r5%*`3tX~nQ}t6ykAH*xfTY|Ry(pE2w1`&6P> zFNo6o7Up`)GPjYCf5>G6emts4u423cBd#&Y3Blt0_quMA8#|b{90>ZDW0sjvf7D`9 zJN&w2{49VX&yi&DD=v3G<=w?*|9!aC(!R4=$_kT=lUWyspB2Yyrz=~EDL}Uvyn}gK zYSg4wm>yk1s|KZP-jcwZs-eRE8VA@cG6b-cg>5n5)uiJSR1wwyZM`pnX*s>#1q= z%>EyyM_`19(rupgn%o99Fxvz@s*>};GF3X(!odM_`bY&!5+WQ~GNz>wV+E)??fV{2 z-g>;n3B=0j#%*NghG{z0vYGg?61_5bP0CwzNGA=3Zur%w-vjqZ2`|h6_db@Aaj)6v zgg4zxHaXvWpqCt4=*Tq^^ez9Pnzik--0sk4Z%~w+a$4uZh#cirT^lfZ@%-C6plvb7 zs+W05^4!caMBAqL1Ozw=Xt>nvD?M-FeMMmUh(yJt`PJDWyo+&WcGj=e65LV>uQlPA z4d0K^QRf~Koh&f6;R_Q~3^+f`|8+FFJK7R@WWBimc0LQyX{ru^wDxnGN4@;Wl_g>7 zzN&=oEV4WdCw8+a#myVzNUX`CCvgB}V8>qugiA6`GB*Sdz@V^R_zPKpK5YV~%b#`8 z-30#lp$?xn2JdScv>Ymb4~PoX<;}kp3de1p9FJ)E-En+2I>V91Lgm_KubN{e*p z*CQR$+k0_q_UbDs)c#%p_IB#TvhVzO9Q%r+A*PxOvC>KaLNe}me)gG#$&T|Poa&2v za$_!n`2~_bVJOom9QRX1QQ(bs&29DjNPQCi37AqELYE-eA!diaA_Fh}Ftf748s@

Z{A1_uV7*n{^ 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 TjCk0Eg3oz%U9}PwtKk0vt}YDB From 6095356881752f2ec8ff70c09a27f387a311f4dc Mon Sep 17 00:00:00 2001 From: Alexander Smith Date: Tue, 25 Feb 2025 17:16:22 -0500 Subject: [PATCH 05/10] Adding documentation --- Docs/source/networks.rst | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/Docs/source/networks.rst b/Docs/source/networks.rst index 4411495b70..0b2eed6cff 100644 --- a/Docs/source/networks.rst +++ b/Docs/source/networks.rst @@ -145,21 +145,35 @@ burning. This network is managed by pynucastro. above). -nova networks -============= +The ``nova`` network: +===================== -The ``nova`` and ``nova2`` networks both are intended for modeling classical novae. +This networks, composed of 17 nuclei: $\isotm{H}{1,2}$, $\isotm{He}{3,4}$, $\isotm{Be}{7}$, $\isotm{B}{8}$, +$\isotm{C}{12,13}$, $\isotm{N}{13-15}$, $\isotm{O}{14-17}$, $\isotm{F}{17,18}$ is used to model the onset of +a classical novae thermonuclear runaway. The first set of nuclei, $\isotm{H}{1,2}$, $\isotm{He}{3,4}$ represent +the pp-chain sector of the reaction network, while the second set,of nuclei, $\isotm{Be}{7}$, and $\isotm{B}{8}$, describe +the involvement of the x-process. Finally, all the remaining nuclei, are active participants of +the CNO cycle with endpoints at $\isotm{F}{17}$ and $\isotm{F}{18}$. The triple-$\alpha$ reaction +$\alpha(\alpha\alpha,\gamma)\isotm{C}{12}$, serves as bridge between the nuclei of first and the last set. +The the cold-CNO chain of reactions of the CN-branch are: -* ``nova`` focuses just on CNO/hot-CNO: +* :math:`\isotm{C}{12}(p,\gamma)\isotm{N}{13}(\beta^{+}\nu_e)\isotm{C}{13}(p,\gamma)` - .. figure:: nova.png - :align: center +while the NO-branch chain of reactions is: -* ``nova2`` expands ``nova`` by adding the pp-chain nuclei: +* :math:`\isotm{N}{14}(p,\gamma)\isotm{O}{15}(\beta^{+})\isotm{N}{15}(p,\gamma)\isotm{O}{16}(p,\gamma)\isotm{F}{17}(\beta^{+}\nu_e)\isotm{O}{17}` - .. figure:: nova2.png - :align: center +where the isotopes $\isotm{N}{15}$ and $\isotm{O}{17}$ may decay back into $\isotm{C}{12}$ and $\isotm{N}{14}$ through +$\isotm{N}{15}(p,\alpha)\isotm{C}{12}$ and $\isotm{O}{17}(p,\alpha)\isotm{N}{14}$ respectively. + +.. figure:: nova.png + :align: center + + +Once the temperature treshold of $\gtrsim 10^8\,\mathrm{K}$, the fast $p$-captures, for example, +$\isotm{N}{13}(p,\gamma)\isotm{O}{14}$ are more likely than the $\beta^{+}$-decays $\isotm{N}{13}(\beta^{+}\nu_e)\isotm{C}{13}$ +reactions, this rates are also included in this network. He-burning networks From 3312a2141db546472548b9c7cc35b6c2595bffab Mon Sep 17 00:00:00 2001 From: Alexander Smith Date: Tue, 25 Feb 2025 18:22:14 -0500 Subject: [PATCH 06/10] codespell issues --- Docs/source/networks.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Docs/source/networks.rst b/Docs/source/networks.rst index 0b2eed6cff..56eb43d48f 100644 --- a/Docs/source/networks.rst +++ b/Docs/source/networks.rst @@ -171,7 +171,7 @@ $\isotm{N}{15}(p,\alpha)\isotm{C}{12}$ and $\isotm{O}{17}(p,\alpha)\isotm{N}{14} :align: center -Once the temperature treshold of $\gtrsim 10^8\,\mathrm{K}$, the fast $p$-captures, for example, +Once the temperature threshold of $\gtrsim 10^8\,\mathrm{K}$, the fast $p$-captures, for example, $\isotm{N}{13}(p,\gamma)\isotm{O}{14}$ are more likely than the $\beta^{+}$-decays $\isotm{N}{13}(\beta^{+}\nu_e)\isotm{C}{13}$ reactions, this rates are also included in this network. From 825bc5645afbfe306905307fb5f08b108f14c31d Mon Sep 17 00:00:00 2001 From: Alexander Smith Date: Wed, 26 Feb 2025 17:37:39 -0500 Subject: [PATCH 07/10] Fixing typos --- Docs/source/networks.rst | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Docs/source/networks.rst b/Docs/source/networks.rst index 2decf9d418..6bfc49f201 100644 --- a/Docs/source/networks.rst +++ b/Docs/source/networks.rst @@ -148,10 +148,10 @@ burning. This network is managed by pynucastro. The ``nova`` network: ===================== -This networks, composed of 17 nuclei: $\isotm{H}{1,2}$, $\isotm{He}{3,4}$, $\isotm{Be}{7}$, $\isotm{B}{8}$, -$\isotm{C}{12,13}$, $\isotm{N}{13-15}$, $\isotm{O}{14-17}$, $\isotm{F}{17,18}$ is used to model the onset of +This network is composed of 17 nuclei: $\isotm{H}{1,2}$, $\isotm{He}{3,4}$, $\isotm{Be}{7}$, $\isotm{B}{8}$, +$\isotm{C}{12,13}$, $\isotm{N}{13-15}$, $\isotm{O}{14-17}$, $\isotm{F}{17,18}$ is used to model the onset of a classical novae thermonuclear runaway. The first set of nuclei, $\isotm{H}{1,2}$, $\isotm{He}{3,4}$ represent -the pp-chain sector of the reaction network, while the second set,of nuclei, $\isotm{Be}{7}$, and $\isotm{B}{8}$, describe +the pp-chain sector of the reaction network, while the second set, of $\isotm{Be}{7}$, and $\isotm{B}{8}$, describe the involvement of the x-process. Finally, all the remaining nuclei, are active participants of the CNO cycle with endpoints at $\isotm{F}{17}$ and $\isotm{F}{18}$. The triple-$\alpha$ reaction $\alpha(\alpha\alpha,\gamma)\isotm{C}{12}$, serves as bridge between the nuclei of first and the last set. @@ -170,10 +170,9 @@ $\isotm{N}{15}(p,\alpha)\isotm{C}{12}$ and $\isotm{O}{17}(p,\alpha)\isotm{N}{14} .. figure:: nova.png :align: center - Once the temperature threshold of $\gtrsim 10^8\,\mathrm{K}$, the fast $p$-captures, for example, $\isotm{N}{13}(p,\gamma)\isotm{O}{14}$ are more likely than the $\beta^{+}$-decays $\isotm{N}{13}(\beta^{+}\nu_e)\isotm{C}{13}$ -reactions, this rates are also included in this network. +reactions, these rates are also included in this network. He-burning networks From 5b18ec16720e664d4a537c56b1d39c87b664ea6f Mon Sep 17 00:00:00 2001 From: Alexander Smith Date: Wed, 26 Feb 2025 18:28:08 -0500 Subject: [PATCH 08/10] Adding lfig. ink to network/ --- Docs/source/networks.rst | 2 +- Docs/source/nova.png | Bin 56059 -> 0 bytes 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 Docs/source/nova.png diff --git a/Docs/source/networks.rst b/Docs/source/networks.rst index 6bfc49f201..5f680befb0 100644 --- a/Docs/source/networks.rst +++ b/Docs/source/networks.rst @@ -167,7 +167,7 @@ while the NO-branch chain of reactions is: where the isotopes $\isotm{N}{15}$ and $\isotm{O}{17}$ may decay back into $\isotm{C}{12}$ and $\isotm{N}{14}$ through $\isotm{N}{15}(p,\alpha)\isotm{C}{12}$ and $\isotm{O}{17}(p,\alpha)\isotm{N}{14}$ respectively. -.. figure:: nova.png +.. figure:: ../../networks/nova/nova.png :align: center Once the temperature threshold of $\gtrsim 10^8\,\mathrm{K}$, the fast $p$-captures, for example, diff --git a/Docs/source/nova.png b/Docs/source/nova.png deleted file mode 100644 index d8e3139620bfaf7becd69c9306aba5b34ace956c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56059 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

gg^xNR7_vsaGQ`KK&(S6G6m|!OynYm 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 From dd1dfef43f5deb5e56e7fdd98da5f89ca1fea667 Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Wed, 26 Feb 2025 14:22:21 -0500 Subject: [PATCH 09/10] Document the build system (#1760) Co-authored-by: Alexander Smith <72695548+aisclark91@users.noreply.github.com> Co-authored-by: Brendan Boyd <42776109+biboyd@users.noreply.github.com> --- Docs/source/build_system.rst | 220 +++++++++++++++++++++++++++++++++++ Docs/source/index.rst | 1 + Docs/source/networks.rst | 4 + Docs/source/screening.rst | 2 + Docs/source/sdc.rst | 4 + 5 files changed, 231 insertions(+) create mode 100644 Docs/source/build_system.rst diff --git a/Docs/source/build_system.rst b/Docs/source/build_system.rst new file mode 100644 index 0000000000..3b957c3aba --- /dev/null +++ b/Docs/source/build_system.rst @@ -0,0 +1,220 @@ +************ +Build System +************ + +Microphysics leverages the AMReX build system. GNU make is the +primary build system, but CMake is partially supported. Here we focus +on the GNU make build system. + +.. tip:: + + All of the build variables supported by the AMReX build system can + be used with Microphysics, for example: + + * ``COMP`` : the compiler system to use + * ``USE_CUDA`` : build for NVIDIA GPUs with CUDA + * ``USE_HIP`` : build for AMD GPUs with HIP/ROCm + + See the `AMReX GNU Make Docs + `_ + +There are two main makefile stubs: + +.. index:: Make.Microphysics, Make.Microphysics_extern + +* ``Make.Microphysics`` : this is used by the unit tests within Microphysics and it + defines the variables needed by the AMReX build system, including specifying the + location of the files. It also defines the rules for some files that are created + at build time. + +* ``Make.Microphysics_extern`` : this is the core makefile stub for Microphysics + that interprets the build variables that enable / disable different functionality. + This is meant to be included into any application code's build system. + +additionally directories have their own ``Make.package`` files that specify +the files needed for the build and some rules for making intermediary files. + + +Environment variables +===================== + +The build system relies on some environment variables to find the source: + +.. index:: AMREX_HOME, MICROPHYSICS_HOME + +* ``AMREX_HOME`` : this should point to the top-level ``amrex/`` directory + +* ``MICROPHYSICS_HOME`` : this is needed by application codes, and + should point to the top level ``Microphysics/`` directory. For + building unit tests within the ``Microphysics/`` directory itself, + this does not need to be explicitly set. + + +Automatically generated files +============================= + +There are a few source files that are created automatically at +compile-time. These are placed in the +``tmp_build_dir/microphysics_sources/`` sub-directory under the +directory you run ``make`` (if building through an application code, +the sub-directory may have a different name). + +.. index:: network_properties.H, extern_parameters.H, AMReX_buildInfo.cpp + +The main files are: + +* ``network_properties.H`` : this defines the properties of the composition that + make up the network (and therefore, used by the equation of state and other + physics). + +* ``extern_parameters.H`` : this defines all of the runtime parameters that are + part of the build. At the moment, they are treated as global variables + (using managed memory on GPUs), but a ``struct`` that carries their values + is also available through ``extern_type.H``. + +* ``AMReX_buildInfo.cpp`` : this defines functions that return the git hashes, + compilers, compiler flags, and more meta-data about the build. This file + is automatically deleted once it is built to insure it is always up-to-date. + The functions it defines are used when writing the ``job_info`` file + in the plotfiles that some unit tests produce. + +Controlling choice of physics +============================= + +The choice of physics to include in an application is done at build time, and is +controlled by a number of make variables. + +.. tip:: + + You can query the value of any variable in the Microphysics build system by doing + `make print-` where `` is the name of the variable. + + For example, + + .. code:: bash + + make print-EOS_DIR + + will tell you what EOS is being used. + + +The following control whether certain physics modules are included in +the build process. Note: an EOS and network are always required. +These can be set to ``TRUE`` to enable and ``FALSE`` to disable specific features. + +* ``USE_CONDUCTIVITY`` : determines whether a conductivity routine + should be included in the list of build packages. If enabled, this + also defines the ``CONDUCTIVITY`` preprocessor variable. Default: + ``FALSE``. + +* ``USE_NEUTRINOS`` : determines whether a neutrino cooling term + should be applied in the reaction network energy generation + equation. See :ref:`neutrino_loss`. The default is set by each + individual network. + +* ``USE_NET_NET`` : determines whether the self-consistent NSE + infrastructure is included in the build. See + :ref:`self_consistent_nse`. No default is set. + +* ``USE_NSE_TABLE`` : determines whether the tabular NSE + infrastructure is included in the build. See :ref:`tabulated_nse`. + No default is set. + +* ``USE_RATES`` : for templated reaction networks (see + :ref:`sec:templated_rhs`) determines whether we include the + ``rates/`` set of reaction rates in the build system. Also defines + the ``RATES`` preprocessor variable. The default is set by each of + the templated networks separately. + +* ``USE_REACT`` : determines whether we need to include any of the + source related to reaction networks or integrators and sets the + ``REACTIONS`` preprocessor variable. Note: even if this is set to + ``TRUE``, the ``network_properties.H`` file is still generated. No + default is set. + +* ``USE_SCREENING`` : determines whether the screening routines are + included in the list of build packages. If enabled, this also + defines the ``SCREENING`` preprocessor variable which is used in + some networks to disable screening completely. Note: it is also + possible to set the screening routine to ``null`` which would have + the same effect (see :ref:`sec:screening`). The default is set by + each individual network. + + +The following control the choice of implementation for the different physics modules: + + +* ``CONDUCTIVITY_DIR`` : the name of the conductivity implementation to use, + relative to ``Microphysics/conductivity/``. + +* ``EOS_DIR`` : the name of the EOS to use, relative to ``Microphysics/EOS/``. + +* ``INTEGRATOR_DIR`` : the name of the integrator to use, relative to + ``Microphysics/integration/``. + +* ``NETWORK_DIR`` : the name of the network to use, relative to ``Microphysics/networks/``. + If ``general_null`` is chosen, then the inputs file is determined by + either ``GENERAL_NET_INPUTS`` or ``NETWORK_INPUTS`` (see :ref:`sec:networks:general_null`). + +* ``OPACITY_DIR`` : the name of the opacity implementation to use, relative + to ``Microphysics/opacity/``. + +* ``SCREEN_METHOD`` : the name of the screening implementation to use. The choices + are listed in :ref:`sec:screening`. + + +The following control the time-integration method used by the reaction +network integration: + +* ``USE_SIMPLIFIED_SDC`` : enable the simplified-SDC coupling of hydro and reactions. + See :ref:`sec:simplified_sdc`. + +* ``USE_TRUE_SDC`` : enable the true-SDC coupling of hydro and reactions. + See :ref:`sec:true_sdc`. + +.. note:: + + If neither of these are set to ``TRUE``, then Strang-splitting coupling + will be used. + + +Targets +======= + +For the unit tests, simply doing + +.. code:: bash + + make + +in the test directory will build the test. There are a few other targets defined. The most important +is ``clean``. Doing: + +.. code:: bash + + make clean + +will remove all the build temporary files (including the ``tmp_build_dir/``). + +.. important:: + + If you want to use a different EOS or reaction network (or any other physics), then you + should always do ``make clean`` first in the build directory. + +Some other targets include: + +* ``nettables`` : create the symlinks for any weak reaction rate tables that are part of the + network. + +* ``table`` : create a symlink for the ``helm_table.dat`` EOS table if the ``helmholtz`` EOS is used. + +* ``nsetable`` : create a symlink for the NSE table if ``USE_NSE_TABLE=TRUE`` is set. + +* ``build_status`` : report the current git versions of Microphysics and AMReX + +* ``test_extern_params`` : this will simply parse the runtime parameters and execute the + ``write_probin.py`` script that generates the headers and C++ files necessary to use + the parameters. These will be generated under ``tmp_build_dir/microphysics_sources/``. + +* ``net_prop_debug`` : this will simply create the ``network_properties.H`` file for the + current network and output it into ``tmp_build_dir/microphysics_sources/``. diff --git a/Docs/source/index.rst b/Docs/source/index.rst index 7589e79e7d..6306f9a70e 100644 --- a/Docs/source/index.rst +++ b/Docs/source/index.rst @@ -46,6 +46,7 @@ system. getting_started design data_structures + build_system rp_intro .. toctree:: diff --git a/Docs/source/networks.rst b/Docs/source/networks.rst index 5f680befb0..e314550057 100644 --- a/Docs/source/networks.rst +++ b/Docs/source/networks.rst @@ -1,3 +1,5 @@ +.. _sec:networks: + *************************** Available Reaction Networks *************************** @@ -25,6 +27,8 @@ Microphysics knows the properties of the fluid. `_ :cite:`pynucastro, pynucastro2` using the ``AmrexAstroCxxNetwork`` class. +.. _sec:networks:general_null: + ``general_null`` ================ diff --git a/Docs/source/screening.rst b/Docs/source/screening.rst index 5223bbbacb..3dfa86badd 100644 --- a/Docs/source/screening.rst +++ b/Docs/source/screening.rst @@ -1,3 +1,5 @@ +.. _sec:screening: + *************************** Screening of Reaction Rates *************************** diff --git a/Docs/source/sdc.rst b/Docs/source/sdc.rst index 2eed54cceb..0dae1af310 100644 --- a/Docs/source/sdc.rst +++ b/Docs/source/sdc.rst @@ -44,6 +44,8 @@ is the reaction source term. are supported by the same integrators, and both of these options will set the ``SDC`` preprocessor flag. +.. _sec:true_sdc: + "True" SDC ---------- @@ -86,6 +88,8 @@ This can be cast as an ODE system as: \frac{d\Uc}{dt} \approx \frac{\Uc^{m+1} - \Uc^m}{\delta t_m} = \Rbs{\Uc} + {\bf C} +.. _sec:simplified_sdc: + Simplified SDC -------------- From b53d1114e59bda8aaecbd035cbf88f518e192eb3 Mon Sep 17 00:00:00 2001 From: Alexander Smith Date: Wed, 26 Feb 2025 18:49:31 -0500 Subject: [PATCH 10/10] Fixing more typos --- Docs/source/networks.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Docs/source/networks.rst b/Docs/source/networks.rst index e314550057..64aab934ae 100644 --- a/Docs/source/networks.rst +++ b/Docs/source/networks.rst @@ -153,10 +153,10 @@ The ``nova`` network: ===================== This network is composed of 17 nuclei: $\isotm{H}{1,2}$, $\isotm{He}{3,4}$, $\isotm{Be}{7}$, $\isotm{B}{8}$, -$\isotm{C}{12,13}$, $\isotm{N}{13-15}$, $\isotm{O}{14-17}$, $\isotm{F}{17,18}$ is used to model the onset of +$\isotm{C}{12,13}$, $\isotm{N}{13-15}$, $\isotm{O}{14-17}$, $\isotm{F}{17,18}$ and is used to model the onset of a classical novae thermonuclear runaway. The first set of nuclei, $\isotm{H}{1,2}$, $\isotm{He}{3,4}$ represent the pp-chain sector of the reaction network, while the second set, of $\isotm{Be}{7}$, and $\isotm{B}{8}$, describe -the involvement of the x-process. Finally, all the remaining nuclei, are active participants of +the involvement of the x-process. Finally, all the remaining nuclei are active participants of the CNO cycle with endpoints at $\isotm{F}{17}$ and $\isotm{F}{18}$. The triple-$\alpha$ reaction $\alpha(\alpha\alpha,\gamma)\isotm{C}{12}$, serves as bridge between the nuclei of first and the last set. @@ -174,9 +174,9 @@ $\isotm{N}{15}(p,\alpha)\isotm{C}{12}$ and $\isotm{O}{17}(p,\alpha)\isotm{N}{14} .. figure:: ../../networks/nova/nova.png :align: center -Once the temperature threshold of $\gtrsim 10^8\,\mathrm{K}$, the fast $p$-captures, for example, -$\isotm{N}{13}(p,\gamma)\isotm{O}{14}$ are more likely than the $\beta^{+}$-decays $\isotm{N}{13}(\beta^{+}\nu_e)\isotm{C}{13}$ -reactions, these rates are also included in this network. +Once the temperature reaches a threshold of $\gtrsim 10^8\,\mathrm{K}$, the fast $p$-captures, for example, +$\isotm{N}{13}(p,\gamma)\isotm{O}{14}$, are more likely than the $\beta^{+}$-decays $\isotm{N}{13}(\beta^{+}\nu_e)\isotm{C}{13}$ +reactions. These rates are also included in this network. He-burning networks