From 83ab0e8c7a3a35163226d4097a6720030004f00e Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Sat, 30 May 2026 20:46:42 -0400 Subject: [PATCH 1/8] switch some NSE functions to __device__ this will make them work with upcoming changes to pynucastro for HIP --- nse_solver/nse_eqns.H | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nse_solver/nse_eqns.H b/nse_solver/nse_eqns.H index 3395cbd0b..90ac76fea 100644 --- a/nse_solver/nse_eqns.H +++ b/nse_solver/nse_eqns.H @@ -28,7 +28,7 @@ struct nse_solver_data template -AMREX_GPU_HOST_DEVICE AMREX_INLINE +AMREX_GPU_DEVICE AMREX_INLINE T get_T_independent_nse_state(const T& state) { // Computes (2J + 1) m^{5/2} (kB 1e9 / 2 π ħ^2)^{3/2} / ρ // a portion of the nse_state that is not dependent on Temperature. @@ -114,7 +114,7 @@ void compute_coulomb_contribution(amrex::Array1D& u_c, template -AMREX_GPU_HOST_DEVICE AMREX_INLINE +AMREX_GPU_DEVICE AMREX_INLINE void get_T_dependent_nse_state(nse_solver_data& state_data) { // It does two things: // 1. Applies T9^{3/2} to the input state, From daa7fcbdf96291092f561cbfcfa11908de83f081 Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Sun, 31 May 2026 09:45:51 -0400 Subject: [PATCH 2/8] update ase --- networks/he-burn/ase/Make.package | 4 +- networks/he-burn/ase/actual_network.H | 207 +- networks/he-burn/ase/actual_rhs.H | 778 +++---- networks/he-burn/ase/ase.png | Bin 145211 -> 145929 bytes networks/he-burn/ase/derived_rates.H | 1232 +++++++---- networks/he-burn/ase/interp_tools.H | 2 +- networks/he-burn/ase/partition_functions.H | 56 +- networks/he-burn/ase/pynucastro-info.txt | 2 +- networks/he-burn/ase/reaclib_rates.H | 1819 ++++++++++------- networks/he-burn/ase/table_rates.H | 12 +- .../he-burn/ase/temperature_table_rates.H | 3 +- 11 files changed, 2316 insertions(+), 1799 deletions(-) diff --git a/networks/he-burn/ase/Make.package b/networks/he-burn/ase/Make.package index fd942a5ce..35413fdcf 100644 --- a/networks/he-burn/ase/Make.package +++ b/networks/he-burn/ase/Make.package @@ -2,13 +2,15 @@ PYNUCASTRO_NETWORK = TRUE 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 += interp_tools.H CEXE_headers += partition_functions.H CEXE_headers += actual_rhs.H + CEXE_headers += rate_type.H CEXE_headers += reaclib_rates.H + CEXE_headers += approximate_rates.H + CEXE_headers += modified_rates.H CEXE_headers += table_rates.H CEXE_headers += temperature_table_rates.H CEXE_headers += derived_rates.H diff --git a/networks/he-burn/ase/actual_network.H b/networks/he-burn/ase/actual_network.H index 294c3966d..1e53daf84 100644 --- a/networks/he-burn/ase/actual_network.H +++ b/networks/he-burn/ase/actual_network.H @@ -1,18 +1,25 @@ #ifndef actual_network_H #define actual_network_H +#include #include #include #include #include +#include #include #include using namespace amrex::literals; -void actual_network_init(); + +inline +void actual_network_init() { + + +} constexpr std::string_view network_name = "pynucastro-cxx"; @@ -217,27 +224,27 @@ namespace Rates k_p_Al27_to_He4_Mg24_reaclib = 18, k_p_P31_to_He4_Si28_reaclib = 19, k_He4_He4_He4_to_C12_reaclib = 20, - k_C12_C12_to_n_Mg23_removed = 21, - k_O16_O16_to_n_S31_removed = 22, - k_C12_O16_to_n_Si27_removed = 23, - k_He4_S32_to_Ar36_removed = 24, - k_p_Cl35_to_Ar36_removed = 25, - k_p_Cl35_to_He4_S32_removed = 26, - k_He4_Ar36_to_Ca40_removed = 27, - k_p_K39_to_Ca40_removed = 28, - k_p_K39_to_He4_Ar36_removed = 29, - k_He4_Ca40_to_Ti44_removed = 30, - k_p_Sc43_to_Ti44_removed = 31, - k_p_Sc43_to_He4_Ca40_removed = 32, - k_He4_Ti44_to_Cr48_removed = 33, - k_He4_Ti44_to_p_V47_removed = 34, - k_p_V47_to_Cr48_removed = 35, - k_He4_Cr48_to_Fe52_removed = 36, - k_He4_Cr48_to_p_Mn51_removed = 37, - k_p_Mn51_to_Fe52_removed = 38, - k_He4_Fe52_to_Ni56_removed = 39, - k_He4_Fe52_to_p_Co55_removed = 40, - k_p_Co55_to_Ni56_removed = 41, + k_C12_C12_to_n_Mg23_reaclib = 21, + k_O16_O16_to_n_S31_reaclib = 22, + k_C12_O16_to_n_Si27_reaclib = 23, + k_He4_S32_to_Ar36_reaclib = 24, + k_p_Cl35_to_Ar36_reaclib = 25, + k_p_Cl35_to_He4_S32_reaclib = 26, + k_He4_Ar36_to_Ca40_reaclib = 27, + k_p_K39_to_Ca40_reaclib = 28, + k_p_K39_to_He4_Ar36_reaclib = 29, + k_He4_Ca40_to_Ti44_reaclib = 30, + k_p_Sc43_to_Ti44_reaclib = 31, + k_p_Sc43_to_He4_Ca40_reaclib = 32, + k_He4_Ti44_to_Cr48_reaclib = 33, + k_He4_Ti44_to_p_V47_reaclib = 34, + k_p_V47_to_Cr48_reaclib = 35, + k_He4_Cr48_to_Fe52_reaclib = 36, + k_He4_Cr48_to_p_Mn51_reaclib = 37, + k_p_Mn51_to_Fe52_reaclib = 38, + k_He4_Fe52_to_Ni56_reaclib = 39, + k_He4_Fe52_to_p_Co55_reaclib = 40, + k_p_Co55_to_Ni56_reaclib = 41, k_S32_He4_to_Ar36_approx = 42, k_Ar36_to_S32_He4_approx = 43, k_Ar36_He4_to_Ca40_approx = 44, @@ -276,25 +283,59 @@ namespace Rates k_Mg24_to_C12_C12_derived = 77, k_S32_to_O16_O16_derived = 78, k_Si28_to_C12_O16_derived = 79, - k_He4_S32_to_p_Cl35_removed = 80, - k_Ar36_to_He4_S32_removed = 81, - k_Ar36_to_p_Cl35_removed = 82, - k_He4_Ar36_to_p_K39_removed = 83, - k_Ca40_to_He4_Ar36_removed = 84, - k_Ca40_to_p_K39_removed = 85, - k_He4_Ca40_to_p_Sc43_removed = 86, - k_Ti44_to_He4_Ca40_removed = 87, - k_Ti44_to_p_Sc43_removed = 88, - k_Cr48_to_He4_Ti44_removed = 89, - k_Cr48_to_p_V47_removed = 90, - k_p_V47_to_He4_Ti44_removed = 91, - k_Fe52_to_He4_Cr48_removed = 92, - k_Fe52_to_p_Mn51_removed = 93, - k_p_Mn51_to_He4_Cr48_removed = 94, - k_Ni56_to_He4_Fe52_removed = 95, - k_Ni56_to_p_Co55_removed = 96, - k_p_Co55_to_He4_Fe52_removed = 97, - NumRates = k_p_Co55_to_He4_Fe52_removed + k_He4_S32_to_p_Cl35_derived = 80, + k_Ar36_to_He4_S32_derived = 81, + k_Ar36_to_p_Cl35_derived = 82, + k_He4_Ar36_to_p_K39_derived = 83, + k_Ca40_to_He4_Ar36_derived = 84, + k_Ca40_to_p_K39_derived = 85, + k_He4_Ca40_to_p_Sc43_derived = 86, + k_Ti44_to_He4_Ca40_derived = 87, + k_Ti44_to_p_Sc43_derived = 88, + k_Cr48_to_He4_Ti44_derived = 89, + k_Cr48_to_p_V47_derived = 90, + k_p_V47_to_He4_Ti44_derived = 91, + k_Fe52_to_He4_Cr48_derived = 92, + k_Fe52_to_p_Mn51_derived = 93, + k_p_Mn51_to_He4_Cr48_derived = 94, + k_Ni56_to_He4_Fe52_derived = 95, + k_Ni56_to_p_Co55_derived = 96, + k_p_Co55_to_He4_Fe52_derived = 97, + NumRates = k_p_Co55_to_He4_Fe52_derived + }; + + enum ScreenPairs : + std::uint8_t + { + k_p_C12 = 1, + k_He4_O16 = 2, + k_p_K39 = 3, + k_He4_Ca40 = 4, + k_He4_Ar36 = 5, + k_p_Sc43 = 6, + k_He4_C12 = 7, + k_He4_Ti44 = 8, + k_He4_Mg24 = 9, + k_C12_O16 = 10, + k_p_V47 = 11, + k_He4_Cr48 = 12, + k_C12_C12 = 13, + k_p_Co55 = 14, + k_He4_Ne20 = 15, + k_p_Al27 = 16, + k_p_Mn51 = 17, + k_p_Na23 = 18, + k_He4_Fe52 = 19, + k_He4_S32 = 20, + k_p_P31 = 21, + k_He4_He4 = 22, + k_p_O16 = 23, + k_He4_Si28 = 24, + k_p_Cl35 = 25, + k_O16_O16 = 26, + k_He4_Be8 = 27, + k_He4_N13 = 28, + NumScreenPairs = k_He4_N13 }; // rate names -- note: the rates are 1-based, not zero-based, so we pad @@ -323,27 +364,27 @@ namespace Rates "p_Al27_to_He4_Mg24_reaclib", // 18, "p_P31_to_He4_Si28_reaclib", // 19, "He4_He4_He4_to_C12_reaclib", // 20, - "C12_C12_to_n_Mg23_removed", // 21, - "O16_O16_to_n_S31_removed", // 22, - "C12_O16_to_n_Si27_removed", // 23, - "He4_S32_to_Ar36_removed", // 24, - "p_Cl35_to_Ar36_removed", // 25, - "p_Cl35_to_He4_S32_removed", // 26, - "He4_Ar36_to_Ca40_removed", // 27, - "p_K39_to_Ca40_removed", // 28, - "p_K39_to_He4_Ar36_removed", // 29, - "He4_Ca40_to_Ti44_removed", // 30, - "p_Sc43_to_Ti44_removed", // 31, - "p_Sc43_to_He4_Ca40_removed", // 32, - "He4_Ti44_to_Cr48_removed", // 33, - "He4_Ti44_to_p_V47_removed", // 34, - "p_V47_to_Cr48_removed", // 35, - "He4_Cr48_to_Fe52_removed", // 36, - "He4_Cr48_to_p_Mn51_removed", // 37, - "p_Mn51_to_Fe52_removed", // 38, - "He4_Fe52_to_Ni56_removed", // 39, - "He4_Fe52_to_p_Co55_removed", // 40, - "p_Co55_to_Ni56_removed", // 41, + "C12_C12_to_n_Mg23_reaclib", // 21, + "O16_O16_to_n_S31_reaclib", // 22, + "C12_O16_to_n_Si27_reaclib", // 23, + "He4_S32_to_Ar36_reaclib", // 24, + "p_Cl35_to_Ar36_reaclib", // 25, + "p_Cl35_to_He4_S32_reaclib", // 26, + "He4_Ar36_to_Ca40_reaclib", // 27, + "p_K39_to_Ca40_reaclib", // 28, + "p_K39_to_He4_Ar36_reaclib", // 29, + "He4_Ca40_to_Ti44_reaclib", // 30, + "p_Sc43_to_Ti44_reaclib", // 31, + "p_Sc43_to_He4_Ca40_reaclib", // 32, + "He4_Ti44_to_Cr48_reaclib", // 33, + "He4_Ti44_to_p_V47_reaclib", // 34, + "p_V47_to_Cr48_reaclib", // 35, + "He4_Cr48_to_Fe52_reaclib", // 36, + "He4_Cr48_to_p_Mn51_reaclib", // 37, + "p_Mn51_to_Fe52_reaclib", // 38, + "He4_Fe52_to_Ni56_reaclib", // 39, + "He4_Fe52_to_p_Co55_reaclib", // 40, + "p_Co55_to_Ni56_reaclib", // 41, "S32_He4_to_Ar36_approx", // 42, "Ar36_to_S32_He4_approx", // 43, "Ar36_He4_to_Ca40_approx", // 44, @@ -382,26 +423,32 @@ namespace Rates "Mg24_to_C12_C12_derived", // 77, "S32_to_O16_O16_derived", // 78, "Si28_to_C12_O16_derived", // 79, - "He4_S32_to_p_Cl35_removed", // 80, - "Ar36_to_He4_S32_removed", // 81, - "Ar36_to_p_Cl35_removed", // 82, - "He4_Ar36_to_p_K39_removed", // 83, - "Ca40_to_He4_Ar36_removed", // 84, - "Ca40_to_p_K39_removed", // 85, - "He4_Ca40_to_p_Sc43_removed", // 86, - "Ti44_to_He4_Ca40_removed", // 87, - "Ti44_to_p_Sc43_removed", // 88, - "Cr48_to_He4_Ti44_removed", // 89, - "Cr48_to_p_V47_removed", // 90, - "p_V47_to_He4_Ti44_removed", // 91, - "Fe52_to_He4_Cr48_removed", // 92, - "Fe52_to_p_Mn51_removed", // 93, - "p_Mn51_to_He4_Cr48_removed", // 94, - "Ni56_to_He4_Fe52_removed", // 95, - "Ni56_to_p_Co55_removed", // 96, - "p_Co55_to_He4_Fe52_removed" // 97, + "He4_S32_to_p_Cl35_derived", // 80, + "Ar36_to_He4_S32_derived", // 81, + "Ar36_to_p_Cl35_derived", // 82, + "He4_Ar36_to_p_K39_derived", // 83, + "Ca40_to_He4_Ar36_derived", // 84, + "Ca40_to_p_K39_derived", // 85, + "He4_Ca40_to_p_Sc43_derived", // 86, + "Ti44_to_He4_Ca40_derived", // 87, + "Ti44_to_p_Sc43_derived", // 88, + "Cr48_to_He4_Ti44_derived", // 89, + "Cr48_to_p_V47_derived", // 90, + "p_V47_to_He4_Ti44_derived", // 91, + "Fe52_to_He4_Cr48_derived", // 92, + "Fe52_to_p_Mn51_derived", // 93, + "p_Mn51_to_He4_Cr48_derived", // 94, + "Ni56_to_He4_Fe52_derived", // 95, + "Ni56_to_p_Co55_derived", // 96, + "p_Co55_to_He4_Fe52_derived" // 97, }; + template + AMREX_GPU_DEVICE AMREX_INLINE + constexpr amrex::Real get_p_random() { + return 0.0_rt; + } + } #ifdef NSE_NET diff --git a/networks/he-burn/ase/actual_rhs.H b/networks/he-burn/ase/actual_rhs.H index f3ace33af..26ed1ae93 100644 --- a/networks/he-burn/ase/actual_rhs.H +++ b/networks/he-burn/ase/actual_rhs.H @@ -1,5 +1,5 @@ -#ifndef actual_rhs_H -#define actual_rhs_H +#ifndef ACTUAL_RHS_H +#define ACTUAL_RHS_H #include #include @@ -15,7 +15,10 @@ #ifdef NEUTRINOS #include #endif +#include #include +#include +#include #include #include #include @@ -28,7 +31,6 @@ using namespace Rates; using namespace rate_tables; - template AMREX_GPU_HOST_DEVICE AMREX_INLINE void ener_gener_rate(T const& dydt, amrex::Real& enuc) @@ -49,17 +51,14 @@ void ener_gener_rate(T const& dydt, amrex::Real& enuc) } +#ifdef SCREENING template AMREX_GPU_HOST_DEVICE AMREX_INLINE -void evaluate_rates(const burn_t& state, - const amrex::Array1D& Y, - T& rate_eval) { +void evaluate_screening(const burn_t& state, + const amrex::Array1D& Y, + T& rate_eval) { - // here Y is consistent with state.xn - - [[maybe_unused]] amrex::Real rhoy = state.rho * state.y_e; - - // Calculate Reaclib rates + // Evaluate screening terms using number_t = std::conditional_t; number_t temp = state.T; @@ -68,652 +67,358 @@ void evaluate_rates(const burn_t& state, autodiff::seed(temp); } -#ifdef SCREENING plasma_state_t pstate{}; fill_plasma_state(pstate, temp, state.rho, Y); -#endif - - const tf_t tfactors = evaluate_tfactors(state.T); - - fill_reaclib_rates(tfactors, rate_eval); - - temp_tabular::fill_rates(tfactors, rate_eval); - - // Calculate Derived Rates. This should go last but before approx rates. - fill_derived_rates(tfactors, rate_eval); - - if (disable_p_C12_to_N13_reaclib) { - rate_eval.screened_rates(k_p_C12_to_N13_reaclib) = 0.0; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C12_to_N13_reaclib) = 0.0; - } - rate_eval.screened_rates(k_N13_to_p_C12_derived) = 0.0; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived) = 0.0; - } - } - - if (disable_He4_N13_to_p_O16_reaclib) { - rate_eval.screened_rates(k_He4_N13_to_p_O16_reaclib) = 0.0; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16_reaclib) = 0.0; - } - rate_eval.screened_rates(k_p_O16_to_He4_N13_derived) = 0.0; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_derived) = 0.0; - } - } - - -#ifdef SCREENING - // Evaluate screening factors - - amrex::Real ratraw, dratraw_dT; - amrex::Real scor, dscor_dt; - [[maybe_unused]] amrex::Real scor2, dscor2_dt; + amrex::Real log_scor, dlog_scor_dT; { 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_reaclib); - rate_eval.screened_rates(k_p_C12_to_N13_reaclib) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_C12_to_N13_reaclib); - rate_eval.dscreened_rates_dT(k_p_C12_to_N13_reaclib) = ratraw * dscor_dt + dratraw_dT * scor; + actual_log_screen(pstate, scn_fac, log_scor, dlog_scor_dT); + rate_eval.log_screen(k_p_C12) = log_scor; + if constexpr (do_T_derivatives) { + rate_eval.dlog_screen_dT(k_p_C12) = dlog_scor_dT; + } } - { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 6.0_rt, 12.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 8.0_rt, 16.0_rt); static_assert(scn_fac.z1 == 2.0_rt); - actual_screen(pstate, scn_fac, scor, dscor_dt); + actual_log_screen(pstate, scn_fac, log_scor, dlog_scor_dT); + rate_eval.log_screen(k_He4_O16) = log_scor; + if constexpr (do_T_derivatives) { + rate_eval.dlog_screen_dT(k_He4_O16) = dlog_scor_dT; + } } - ratraw = rate_eval.screened_rates(k_He4_C12_to_O16_reaclib); - rate_eval.screened_rates(k_He4_C12_to_O16_reaclib) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_C12_to_O16_reaclib); - rate_eval.dscreened_rates_dT(k_He4_C12_to_O16_reaclib) = ratraw * dscor_dt + dratraw_dT * scor; + { + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 19.0_rt, 39.0_rt); + static_assert(scn_fac.z1 == 1.0_rt); + actual_log_screen(pstate, scn_fac, log_scor, dlog_scor_dT); + rate_eval.log_screen(k_p_K39) = log_scor; + if constexpr (do_T_derivatives) { + rate_eval.dlog_screen_dT(k_p_K39) = dlog_scor_dT; + } } - { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 8.0_rt, 16.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 20.0_rt, 40.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_O16_to_Ne20_reaclib); - rate_eval.screened_rates(k_He4_O16_to_Ne20_reaclib) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20_reaclib); - rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20_reaclib) = ratraw * dscor_dt + dratraw_dT * scor; + actual_log_screen(pstate, scn_fac, log_scor, dlog_scor_dT); + rate_eval.log_screen(k_He4_Ca40) = log_scor; + if constexpr (do_T_derivatives) { + rate_eval.dlog_screen_dT(k_He4_Ca40) = dlog_scor_dT; + } } - { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 10.0_rt, 20.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 18.0_rt, 36.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_Ne20_to_Mg24_reaclib); - rate_eval.screened_rates(k_He4_Ne20_to_Mg24_reaclib) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24_reaclib); - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24_reaclib) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_He4_Ne20_to_p_Na23_derived); - rate_eval.screened_rates(k_He4_Ne20_to_p_Na23_derived) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ne20_to_p_Na23_derived); - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_p_Na23_derived) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_He4_Ne20_to_C12_C12_derived); - rate_eval.screened_rates(k_He4_Ne20_to_C12_C12_derived) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ne20_to_C12_C12_derived); - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_C12_C12_derived) = ratraw * dscor_dt + dratraw_dT * scor; + actual_log_screen(pstate, scn_fac, log_scor, dlog_scor_dT); + rate_eval.log_screen(k_He4_Ar36) = log_scor; + if constexpr (do_T_derivatives) { + rate_eval.dlog_screen_dT(k_He4_Ar36) = dlog_scor_dT; + } } - { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 11.0_rt, 23.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 21.0_rt, 43.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_Na23_to_Mg24_reaclib); - rate_eval.screened_rates(k_p_Na23_to_Mg24_reaclib) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24_reaclib); - rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24_reaclib) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_p_Na23_to_He4_Ne20_reaclib); - rate_eval.screened_rates(k_p_Na23_to_He4_Ne20_reaclib) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20_reaclib); - rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20_reaclib) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_p_Na23_to_C12_C12_derived); - rate_eval.screened_rates(k_p_Na23_to_C12_C12_derived) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Na23_to_C12_C12_derived); - rate_eval.dscreened_rates_dT(k_p_Na23_to_C12_C12_derived) = ratraw * dscor_dt + dratraw_dT * scor; + actual_log_screen(pstate, scn_fac, log_scor, dlog_scor_dT); + rate_eval.log_screen(k_p_Sc43) = log_scor; + if constexpr (do_T_derivatives) { + rate_eval.dlog_screen_dT(k_p_Sc43) = dlog_scor_dT; + } } - { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 12.0_rt, 24.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 6.0_rt, 12.0_rt); static_assert(scn_fac.z1 == 2.0_rt); - actual_screen(pstate, scn_fac, scor, dscor_dt); - } - - ratraw = rate_eval.screened_rates(k_He4_Mg24_to_Si28_reaclib); - rate_eval.screened_rates(k_He4_Mg24_to_Si28_reaclib) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Mg24_to_Si28_reaclib); - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_Si28_reaclib) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_He4_Mg24_to_p_Al27_derived); - rate_eval.screened_rates(k_He4_Mg24_to_p_Al27_derived) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27_derived); - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27_derived) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_He4_Mg24_to_C12_O16_derived); - rate_eval.screened_rates(k_He4_Mg24_to_C12_O16_derived) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Mg24_to_C12_O16_derived); - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_C12_O16_derived) = ratraw * dscor_dt + dratraw_dT * scor; - } - - - { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 13.0_rt, 27.0_rt); - static_assert(scn_fac.z1 == 1.0_rt); - actual_screen(pstate, scn_fac, scor, dscor_dt); - } - - ratraw = rate_eval.screened_rates(k_p_Al27_to_Si28_reaclib); - rate_eval.screened_rates(k_p_Al27_to_Si28_reaclib) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28_reaclib); - rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28_reaclib) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_p_Al27_to_He4_Mg24_reaclib); - rate_eval.screened_rates(k_p_Al27_to_He4_Mg24_reaclib) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24_reaclib); - rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24_reaclib) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_p_Al27_to_C12_O16_derived); - rate_eval.screened_rates(k_p_Al27_to_C12_O16_derived) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Al27_to_C12_O16_derived); - rate_eval.dscreened_rates_dT(k_p_Al27_to_C12_O16_derived) = ratraw * dscor_dt + dratraw_dT * scor; + actual_log_screen(pstate, scn_fac, log_scor, dlog_scor_dT); + rate_eval.log_screen(k_He4_C12) = log_scor; + if constexpr (do_T_derivatives) { + rate_eval.dlog_screen_dT(k_He4_C12) = dlog_scor_dT; + } } - { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 14.0_rt, 28.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 22.0_rt, 44.0_rt); static_assert(scn_fac.z1 == 2.0_rt); - actual_screen(pstate, scn_fac, scor, dscor_dt); - } - - ratraw = rate_eval.screened_rates(k_He4_Si28_to_S32_reaclib); - rate_eval.screened_rates(k_He4_Si28_to_S32_reaclib) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Si28_to_S32_reaclib); - rate_eval.dscreened_rates_dT(k_He4_Si28_to_S32_reaclib) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_He4_Si28_to_p_P31_derived); - rate_eval.screened_rates(k_He4_Si28_to_p_P31_derived) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31_derived); - rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31_derived) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_He4_Si28_to_O16_O16_derived); - rate_eval.screened_rates(k_He4_Si28_to_O16_O16_derived) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Si28_to_O16_O16_derived); - rate_eval.dscreened_rates_dT(k_He4_Si28_to_O16_O16_derived) = ratraw * dscor_dt + dratraw_dT * scor; + actual_log_screen(pstate, scn_fac, log_scor, dlog_scor_dT); + rate_eval.log_screen(k_He4_Ti44) = log_scor; + if constexpr (do_T_derivatives) { + rate_eval.dlog_screen_dT(k_He4_Ti44) = dlog_scor_dT; + } } - { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 15.0_rt, 31.0_rt); - static_assert(scn_fac.z1 == 1.0_rt); - actual_screen(pstate, scn_fac, scor, dscor_dt); - } - - ratraw = rate_eval.screened_rates(k_p_P31_to_S32_reaclib); - rate_eval.screened_rates(k_p_P31_to_S32_reaclib) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_P31_to_S32_reaclib); - rate_eval.dscreened_rates_dT(k_p_P31_to_S32_reaclib) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_p_P31_to_He4_Si28_reaclib); - rate_eval.screened_rates(k_p_P31_to_He4_Si28_reaclib) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28_reaclib); - rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28_reaclib) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_p_P31_to_O16_O16_derived); - rate_eval.screened_rates(k_p_P31_to_O16_O16_derived) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_P31_to_O16_O16_derived); - rate_eval.dscreened_rates_dT(k_p_P31_to_O16_O16_derived) = ratraw * dscor_dt + dratraw_dT * scor; + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 12.0_rt, 24.0_rt); + static_assert(scn_fac.z1 == 2.0_rt); + actual_log_screen(pstate, scn_fac, log_scor, dlog_scor_dT); + rate_eval.log_screen(k_He4_Mg24) = log_scor; + if constexpr (do_T_derivatives) { + rate_eval.dlog_screen_dT(k_He4_Mg24) = dlog_scor_dT; + } } - { - constexpr auto scn_fac = scrn::calculate_screen_factor(6.0_rt, 12.0_rt, 6.0_rt, 12.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(6.0_rt, 12.0_rt, 8.0_rt, 16.0_rt); static_assert(scn_fac.z1 == 6.0_rt); - actual_screen(pstate, scn_fac, scor, dscor_dt); - } - - ratraw = rate_eval.screened_rates(k_C12_C12_to_p_Na23_reaclib); - rate_eval.screened_rates(k_C12_C12_to_p_Na23_reaclib) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23_reaclib); - rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23_reaclib) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_C12_C12_to_He4_Ne20_reaclib); - rate_eval.screened_rates(k_C12_C12_to_He4_Ne20_reaclib) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20_reaclib); - rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20_reaclib) = ratraw * dscor_dt + dratraw_dT * scor; + actual_log_screen(pstate, scn_fac, log_scor, dlog_scor_dT); + rate_eval.log_screen(k_C12_O16) = log_scor; + if constexpr (do_T_derivatives) { + rate_eval.dlog_screen_dT(k_C12_O16) = dlog_scor_dT; + } } - ratraw = rate_eval.screened_rates(k_C12_C12_to_Mg24_modified); - rate_eval.screened_rates(k_C12_C12_to_Mg24_modified) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_C12_C12_to_Mg24_modified); - rate_eval.dscreened_rates_dT(k_C12_C12_to_Mg24_modified) = ratraw * dscor_dt + dratraw_dT * scor; + { + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 23.0_rt, 47.0_rt); + static_assert(scn_fac.z1 == 1.0_rt); + actual_log_screen(pstate, scn_fac, log_scor, dlog_scor_dT); + rate_eval.log_screen(k_p_V47) = log_scor; + if constexpr (do_T_derivatives) { + rate_eval.dlog_screen_dT(k_p_V47) = dlog_scor_dT; + } } - { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 7.0_rt, 13.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 24.0_rt, 48.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_reaclib); - rate_eval.screened_rates(k_He4_N13_to_p_O16_reaclib) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16_reaclib); - rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16_reaclib) = ratraw * dscor_dt + dratraw_dT * scor; + actual_log_screen(pstate, scn_fac, log_scor, dlog_scor_dT); + rate_eval.log_screen(k_He4_Cr48) = log_scor; + if constexpr (do_T_derivatives) { + rate_eval.dlog_screen_dT(k_He4_Cr48) = dlog_scor_dT; + } } - { - constexpr auto scn_fac = scrn::calculate_screen_factor(6.0_rt, 12.0_rt, 8.0_rt, 16.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(6.0_rt, 12.0_rt, 6.0_rt, 12.0_rt); static_assert(scn_fac.z1 == 6.0_rt); - actual_screen(pstate, scn_fac, scor, dscor_dt); - } - - ratraw = rate_eval.screened_rates(k_C12_O16_to_p_Al27_reaclib); - rate_eval.screened_rates(k_C12_O16_to_p_Al27_reaclib) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_C12_O16_to_p_Al27_reaclib); - rate_eval.dscreened_rates_dT(k_C12_O16_to_p_Al27_reaclib) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_C12_O16_to_He4_Mg24_reaclib); - rate_eval.screened_rates(k_C12_O16_to_He4_Mg24_reaclib) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_C12_O16_to_He4_Mg24_reaclib); - rate_eval.dscreened_rates_dT(k_C12_O16_to_He4_Mg24_reaclib) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_C12_O16_to_Si28_modified); - rate_eval.screened_rates(k_C12_O16_to_Si28_modified) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_C12_O16_to_Si28_modified); - rate_eval.dscreened_rates_dT(k_C12_O16_to_Si28_modified) = ratraw * dscor_dt + dratraw_dT * scor; + actual_log_screen(pstate, scn_fac, log_scor, dlog_scor_dT); + rate_eval.log_screen(k_C12_C12) = log_scor; + if constexpr (do_T_derivatives) { + rate_eval.dlog_screen_dT(k_C12_C12) = dlog_scor_dT; + } } - { - constexpr auto scn_fac = scrn::calculate_screen_factor(8.0_rt, 16.0_rt, 8.0_rt, 16.0_rt); - static_assert(scn_fac.z1 == 8.0_rt); - actual_screen(pstate, scn_fac, scor, dscor_dt); - } - - ratraw = rate_eval.screened_rates(k_O16_O16_to_p_P31_reaclib); - rate_eval.screened_rates(k_O16_O16_to_p_P31_reaclib) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_O16_O16_to_p_P31_reaclib); - rate_eval.dscreened_rates_dT(k_O16_O16_to_p_P31_reaclib) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_O16_O16_to_He4_Si28_reaclib); - rate_eval.screened_rates(k_O16_O16_to_He4_Si28_reaclib) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_O16_O16_to_He4_Si28_reaclib); - rate_eval.dscreened_rates_dT(k_O16_O16_to_He4_Si28_reaclib) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_O16_O16_to_S32_modified); - rate_eval.screened_rates(k_O16_O16_to_S32_modified) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_O16_O16_to_S32_modified); - rate_eval.dscreened_rates_dT(k_O16_O16_to_S32_modified) = ratraw * dscor_dt + dratraw_dT * scor; + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 27.0_rt, 55.0_rt); + static_assert(scn_fac.z1 == 1.0_rt); + actual_log_screen(pstate, scn_fac, log_scor, dlog_scor_dT); + rate_eval.log_screen(k_p_Co55) = log_scor; + if constexpr (do_T_derivatives) { + rate_eval.dlog_screen_dT(k_p_Co55) = dlog_scor_dT; + } } - { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 2.0_rt, 4.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 10.0_rt, 20.0_rt); static_assert(scn_fac.z1 == 2.0_rt); - actual_screen(pstate, scn_fac, scor, dscor_dt); + actual_log_screen(pstate, scn_fac, log_scor, dlog_scor_dT); + rate_eval.log_screen(k_He4_Ne20) = log_scor; + if constexpr (do_T_derivatives) { + rate_eval.dlog_screen_dT(k_He4_Ne20) = dlog_scor_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); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 13.0_rt, 27.0_rt); + static_assert(scn_fac.z1 == 1.0_rt); + actual_log_screen(pstate, scn_fac, log_scor, dlog_scor_dT); + rate_eval.log_screen(k_p_Al27) = log_scor; + if constexpr (do_T_derivatives) { + rate_eval.dlog_screen_dT(k_p_Al27) = dlog_scor_dT; + } } - ratraw = rate_eval.screened_rates(k_He4_He4_He4_to_C12_reaclib); - rate_eval.screened_rates(k_He4_He4_He4_to_C12_reaclib) *= scor * scor2; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib); - rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = ratraw * (scor * dscor2_dt + dscor_dt * scor2) + dratraw_dT * scor * scor2; + { + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 25.0_rt, 51.0_rt); + static_assert(scn_fac.z1 == 1.0_rt); + actual_log_screen(pstate, scn_fac, log_scor, dlog_scor_dT); + rate_eval.log_screen(k_p_Mn51) = log_scor; + if constexpr (do_T_derivatives) { + rate_eval.dlog_screen_dT(k_p_Mn51) = dlog_scor_dT; + } } - { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 8.0_rt, 16.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 11.0_rt, 23.0_rt); static_assert(scn_fac.z1 == 1.0_rt); - actual_screen(pstate, scn_fac, scor, dscor_dt); + actual_log_screen(pstate, scn_fac, log_scor, dlog_scor_dT); + rate_eval.log_screen(k_p_Na23) = log_scor; + if constexpr (do_T_derivatives) { + rate_eval.dlog_screen_dT(k_p_Na23) = dlog_scor_dT; + } } - ratraw = rate_eval.screened_rates(k_p_O16_to_He4_N13_derived); - rate_eval.screened_rates(k_p_O16_to_He4_N13_derived) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_derived); - rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_derived) = ratraw * dscor_dt + dratraw_dT * scor; + { + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 26.0_rt, 52.0_rt); + static_assert(scn_fac.z1 == 2.0_rt); + actual_log_screen(pstate, scn_fac, log_scor, dlog_scor_dT); + rate_eval.log_screen(k_He4_Fe52) = log_scor; + if constexpr (do_T_derivatives) { + rate_eval.dlog_screen_dT(k_He4_Fe52) = dlog_scor_dT; + } } - { constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 16.0_rt, 32.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_S32_to_Ar36_removed); - rate_eval.screened_rates(k_He4_S32_to_Ar36_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_removed); - rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_removed) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_He4_S32_to_p_Cl35_removed); - rate_eval.screened_rates(k_He4_S32_to_p_Cl35_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_removed); - rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_removed) = ratraw * dscor_dt + dratraw_dT * scor; + actual_log_screen(pstate, scn_fac, log_scor, dlog_scor_dT); + rate_eval.log_screen(k_He4_S32) = log_scor; + if constexpr (do_T_derivatives) { + rate_eval.dlog_screen_dT(k_He4_S32) = dlog_scor_dT; + } } - { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 17.0_rt, 35.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 15.0_rt, 31.0_rt); static_assert(scn_fac.z1 == 1.0_rt); - actual_screen(pstate, scn_fac, scor, dscor_dt); - } - - ratraw = rate_eval.screened_rates(k_p_Cl35_to_Ar36_removed); - rate_eval.screened_rates(k_p_Cl35_to_Ar36_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_removed); - rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_removed) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_removed); - rate_eval.screened_rates(k_p_Cl35_to_He4_S32_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_removed); - rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_removed) = ratraw * dscor_dt + dratraw_dT * scor; + actual_log_screen(pstate, scn_fac, log_scor, dlog_scor_dT); + rate_eval.log_screen(k_p_P31) = log_scor; + if constexpr (do_T_derivatives) { + rate_eval.dlog_screen_dT(k_p_P31) = dlog_scor_dT; + } } - { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 18.0_rt, 36.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 2.0_rt, 4.0_rt); static_assert(scn_fac.z1 == 2.0_rt); - actual_screen(pstate, scn_fac, scor, dscor_dt); - } - - ratraw = rate_eval.screened_rates(k_He4_Ar36_to_Ca40_removed); - rate_eval.screened_rates(k_He4_Ar36_to_Ca40_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_removed); - rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_removed) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_He4_Ar36_to_p_K39_removed); - rate_eval.screened_rates(k_He4_Ar36_to_p_K39_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_removed); - rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_removed) = ratraw * dscor_dt + dratraw_dT * scor; + actual_log_screen(pstate, scn_fac, log_scor, dlog_scor_dT); + rate_eval.log_screen(k_He4_He4) = log_scor; + if constexpr (do_T_derivatives) { + rate_eval.dlog_screen_dT(k_He4_He4) = dlog_scor_dT; + } } - { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 19.0_rt, 39.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 8.0_rt, 16.0_rt); static_assert(scn_fac.z1 == 1.0_rt); - actual_screen(pstate, scn_fac, scor, dscor_dt); - } - - ratraw = rate_eval.screened_rates(k_p_K39_to_Ca40_removed); - rate_eval.screened_rates(k_p_K39_to_Ca40_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_removed); - rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_removed) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_removed); - rate_eval.screened_rates(k_p_K39_to_He4_Ar36_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_removed); - rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_removed) = ratraw * dscor_dt + dratraw_dT * scor; + actual_log_screen(pstate, scn_fac, log_scor, dlog_scor_dT); + rate_eval.log_screen(k_p_O16) = log_scor; + if constexpr (do_T_derivatives) { + rate_eval.dlog_screen_dT(k_p_O16) = dlog_scor_dT; + } } - { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 20.0_rt, 40.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 14.0_rt, 28.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_Ca40_to_Ti44_removed); - rate_eval.screened_rates(k_He4_Ca40_to_Ti44_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_removed); - rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_removed) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_removed); - rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_removed); - rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_removed) = ratraw * dscor_dt + dratraw_dT * scor; + actual_log_screen(pstate, scn_fac, log_scor, dlog_scor_dT); + rate_eval.log_screen(k_He4_Si28) = log_scor; + if constexpr (do_T_derivatives) { + rate_eval.dlog_screen_dT(k_He4_Si28) = dlog_scor_dT; + } } - { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 21.0_rt, 43.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 17.0_rt, 35.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_Sc43_to_Ti44_removed); - rate_eval.screened_rates(k_p_Sc43_to_Ti44_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_removed); - rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_removed) = ratraw * dscor_dt + dratraw_dT * scor; + actual_log_screen(pstate, scn_fac, log_scor, dlog_scor_dT); + rate_eval.log_screen(k_p_Cl35) = log_scor; + if constexpr (do_T_derivatives) { + rate_eval.dlog_screen_dT(k_p_Cl35) = dlog_scor_dT; + } } - ratraw = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_removed); - rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_removed); - rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_removed) = ratraw * dscor_dt + dratraw_dT * scor; + { + constexpr auto scn_fac = scrn::calculate_screen_factor(8.0_rt, 16.0_rt, 8.0_rt, 16.0_rt); + static_assert(scn_fac.z1 == 8.0_rt); + actual_log_screen(pstate, scn_fac, log_scor, dlog_scor_dT); + rate_eval.log_screen(k_O16_O16) = log_scor; + if constexpr (do_T_derivatives) { + rate_eval.dlog_screen_dT(k_O16_O16) = dlog_scor_dT; + } } - { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 22.0_rt, 44.0_rt); + constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 4.0_rt, 8.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_Ti44_to_Cr48_removed); - rate_eval.screened_rates(k_He4_Ti44_to_Cr48_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_removed); - rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_removed) = ratraw * dscor_dt + dratraw_dT * scor; - } - - ratraw = rate_eval.screened_rates(k_He4_Ti44_to_p_V47_removed); - rate_eval.screened_rates(k_He4_Ti44_to_p_V47_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_removed); - rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_removed) = ratraw * dscor_dt + dratraw_dT * scor; + actual_log_screen(pstate, scn_fac, log_scor, dlog_scor_dT); + rate_eval.log_screen(k_He4_Be8) = log_scor; + if constexpr (do_T_derivatives) { + rate_eval.dlog_screen_dT(k_He4_Be8) = dlog_scor_dT; + } } - { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 23.0_rt, 47.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_V47_to_Cr48_removed); - rate_eval.screened_rates(k_p_V47_to_Cr48_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_removed); - rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_removed) = 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_log_screen(pstate, scn_fac, log_scor, dlog_scor_dT); + rate_eval.log_screen(k_He4_N13) = log_scor; + if constexpr (do_T_derivatives) { + rate_eval.dlog_screen_dT(k_He4_N13) = dlog_scor_dT; + } } - ratraw = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_removed); - rate_eval.screened_rates(k_p_V47_to_He4_Ti44_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_removed); - rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_removed) = ratraw * dscor_dt + dratraw_dT * scor; - } +} +#endif - { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 24.0_rt, 48.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_Cr48_to_Fe52_removed); - rate_eval.screened_rates(k_He4_Cr48_to_Fe52_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Cr48_to_Fe52_removed); - rate_eval.dscreened_rates_dT(k_He4_Cr48_to_Fe52_removed) = ratraw * dscor_dt + dratraw_dT * scor; - } +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void evaluate_rates(const burn_t& state, + const amrex::Array1D& Y, + T& rate_eval) { - ratraw = rate_eval.screened_rates(k_He4_Cr48_to_p_Mn51_removed); - rate_eval.screened_rates(k_He4_Cr48_to_p_Mn51_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Cr48_to_p_Mn51_removed); - rate_eval.dscreened_rates_dT(k_He4_Cr48_to_p_Mn51_removed) = ratraw * dscor_dt + dratraw_dT * scor; - } + // here Y is consistent with state.xn + [[maybe_unused]] amrex::Real rhoy = state.rho * state.y_e; - { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 25.0_rt, 51.0_rt); - static_assert(scn_fac.z1 == 1.0_rt); - actual_screen(pstate, scn_fac, scor, dscor_dt); - } + const tf_t tfactors = evaluate_tfactors(state.T); - ratraw = rate_eval.screened_rates(k_p_Mn51_to_Fe52_removed); - rate_eval.screened_rates(k_p_Mn51_to_Fe52_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_removed); - rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_removed) = ratraw * dscor_dt + dratraw_dT * scor; - } + // Precompute screening terms - ratraw = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_removed); - rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_removed); - rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_removed) = ratraw * dscor_dt + dratraw_dT * scor; - } +#ifdef SCREENING + evaluate_screening(state, Y, rate_eval); +#endif + // Fill in different rates - { - constexpr auto scn_fac = scrn::calculate_screen_factor(2.0_rt, 4.0_rt, 26.0_rt, 52.0_rt); - static_assert(scn_fac.z1 == 2.0_rt); - actual_screen(pstate, scn_fac, scor, dscor_dt); - } + fill_reaclib_rates(tfactors, rate_eval); - ratraw = rate_eval.screened_rates(k_He4_Fe52_to_Ni56_removed); - rate_eval.screened_rates(k_He4_Fe52_to_Ni56_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Fe52_to_Ni56_removed); - rate_eval.dscreened_rates_dT(k_He4_Fe52_to_Ni56_removed) = ratraw * dscor_dt + dratraw_dT * scor; - } + temp_tabular::fill_rates(tfactors, rate_eval); - ratraw = rate_eval.screened_rates(k_He4_Fe52_to_p_Co55_removed); - rate_eval.screened_rates(k_He4_Fe52_to_p_Co55_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_Co55_removed); - rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_Co55_removed) = ratraw * dscor_dt + dratraw_dT * scor; - } + // fill modified rates next -- these can have ReacLib or + // TemperatureTabular/StarLib rates as the original rate + modified_rates::fill_rates(tfactors, rate_eval); + // Calculate Derived Rates next. This should go last but before + // approx rates, since those may have ReacLibRate, + // TemperatureTabularRate / StarLibRate, or DerivedRate as the + // underlying rate. - { - constexpr auto scn_fac = scrn::calculate_screen_factor(1.0_rt, 1.0_rt, 27.0_rt, 55.0_rt); - static_assert(scn_fac.z1 == 1.0_rt); - actual_screen(pstate, scn_fac, scor, dscor_dt); - } + fill_derived_rates(tfactors, rate_eval); - ratraw = rate_eval.screened_rates(k_p_Co55_to_Ni56_removed); - rate_eval.screened_rates(k_p_Co55_to_Ni56_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_removed); - rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_removed) = ratraw * dscor_dt + dratraw_dT * scor; + if (disable_p_C12_to_N13_reaclib) { + rate_eval.screened_rates(k_p_C12_to_N13_reaclib) = 0.0; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_C12_to_N13_reaclib) = 0.0; + } + rate_eval.screened_rates(k_N13_to_p_C12_derived) = 0.0; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived) = 0.0; + } } - ratraw = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_removed); - rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_removed) *= scor; - if constexpr (std::is_same_v) { - dratraw_dT = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_removed); - rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_removed) = ratraw * dscor_dt + dratraw_dT * scor; + if (disable_He4_N13_to_p_O16_reaclib) { + rate_eval.screened_rates(k_He4_N13_to_p_O16_reaclib) = 0.0; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16_reaclib) = 0.0; + } + rate_eval.screened_rates(k_p_O16_to_He4_N13_derived) = 0.0; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_derived) = 0.0; + } } -#endif // Fill approximate rates fill_approx_rates(tfactors, state.rho, Y, rate_eval); - // Calculate tabular rates + // Calculate tabular weak rates [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; @@ -742,15 +447,17 @@ void evaluate_rates(const burn_t& state, #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) { + 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 /// + using namespace modified_rates; + using namespace temp_tabular; // initialize ydot_nuc to 0 @@ -760,12 +467,13 @@ void get_ydot_weak(const burn_t& state, rate_t rate_eval; - [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; + constexpr int do_T_derivatives = 0; + [[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 + // Compute all weak rates and get ydot_weak ydot_nuc(H1) = 0.0_rt; diff --git a/networks/he-burn/ase/ase.png b/networks/he-burn/ase/ase.png index 7e49601d77cb28a0d90961efbee8ea8702ef4e99..c6725af3bd44b5d1b10accd73ee79a3822554630 100644 GIT binary patch literal 145929 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%0DTI0&XpaXp2b782GNp$jB!P*H>W>kp>+jrh7c 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

bQ&c(ROT@Sfj{72&pPD?=2 z{w^cqI>ZYFWo1WEYDyZY&2}KW72-cIZ%@jVKrJQDX~7_RcCxcBkTD&i?}ooSlov~8 z3;GzEV7nSr<+kHmeSCZxXC1}DNr(%6{CH4XU!Pu9rhQ7*|7FFRb}le=XX=!8PdQm! zsVRRfub{BFUh=RtF8J-`$3!+KPKxIH_z;0>gP65ESVJCCGMrn@syutxp2*qR*#*>g z!0m>&l>#?5To6}LmLoV|`XxrBx5ObGsqtQwlXLa#K=uWwK6vo9W5LVod0^nmW`;M@ zB^OQ(4xiSGQYk{7J8tg4p4kH-VX1u1{RUJ&dW&pMRettUwrYPX4-2aK!NI{O`^lSK z-Q8*L-`_+gp|OEP-+n^S>iKZLzDy6e^y`si)(Ig50w0%No@-*_3t9GmBAPY2bHs`FG?BDuz4Wkw@YyI3_vIabxwG!5Ao zf?K+hg5KVC$<4`et1C4Bo=D4YBpiAekMi0nxxm}7bPg;3X|UdKRzyStDHSCvy&gwW z08r;Iz0ljb0%4{IdL`-8Cz+PGOIjdpi58{1mkv83IK{;JHXWcq$!@Z-H01&n;(X&a zHk}fC`MuA?ilsm}Hv{K~JnMMTp|4on9u9Z>zKr0{OMlv**s)|M&*CCZ+Wo)DNA4s#yq!Qakv3@9l~7ib$lgo2gr_ z33$swR07^gY5p7YJ0TAbHT>@8D1N1hyu3U@R1K(yq~a40O%_&eTSx^VAm>}a9;o@M zi~=wN)n!;jyCoy@1fu;Nh_L(<)lW&I1uddomL}gkc|v#zR;CLo&bNGt73<2>5(=Q@ zuM-Oo3&RxKO&~e-!-o%ak{)I3Q>~smxzL2euNEP04i4F)XOue^M(a<@^BXnaG&ID( zs+|ZR8~B;i>V&j>jE2S-s-1rR{++;nv| z#bAXFL{HGlX&d_ZI4mS2390A|h=42g7FxwaZT=0&eF4Cd1IqgXLtsKI$be9eFl_W?%nDKF=zHTD8V?s@#lsy=^X7#HC zV8w-swM1O`s;+!HSoLjP-7Hu+GXtvn66;}a01o*M(|4f)svMkW*mV3f2ggQdG@qg0 z*|TR+mi@xeLZhOCQ3 zy^3~`gYX320b@y1H?y;r_1jH@ReDBztfXzIM6^sGwS7l`tf_Zeyj5SH& zHjS-{_9nl^hs2qJ*gucit_SEbm$t?1hQ-Ea`uQD>{{U5aGDgwcuwD_y4j9NCl<*3d z003+>zX%BE0^{9UT%K&Ju`-7!iA-7m^Sp%+gXHMse=iNBx~}5V($W^cm;j!DRkJ0` zGCdug8(lx_W9#@Fa%Oux;3V%Ac;=mU7f2mluTIJ3fxr`D6VQZ5zy>r7JDFM@nm4>; zJxoEN22dNmZ|2v;hHIH(J4lXXdu(rTA&E2>dIfLx;O}Y7tW*%wrKOPgEg8}iJhwq! zEey6+z;c#OnUhM8#Kt>zE>Tg;|bJLr=b zLor_zjf+9pg*#k8*6)RZfk7THjh<#_e^*hVs~CQ6A&UQA6&|vcbo|M@*PCHY1?k9=?L!yu09kzarQLW&l7hx&nO2mTM| z`Ma`FfR8UNHk?9mHKeB{P+nO_RgjXBB3MQ#Mpy-QMFt@`8{m1(s?M$+jPP=C(l+z% z+B0fu>aB5Pn<2=fZoqN~y2gc-mDOc7zsG)l=rW9}DR{4Dp=E4q45&dM$WYqnNE?jl zPj{aX;z$Gj=I58%MVH?zv<|__ufj!>2dp8-tTK-})k{o6qH{G{SN9@px z{7q`AJlsMT$hMTDs})tRUVRGjbQzY}6!qMUO#vf;KX<09T|l581QfsL&ll36E^KA` z(fgnaEHy(2+H$prGXCHs=r(=bmWX0a`X zeF`*=SHFDz{8>dwDFEhJo!NSlVPRn=FsnoWHef&Kdn6s!7?oD6Np-=fUpsRnZpm41 z`Q8+GGh|n94{fCR%-^0gDP?MACSW&yo$->(ZP-}=cuP%R{|)R%fNYGsuPJG7l;9UsaaLx^mC^e*t|0pDO?W literal 145211 zcmb5WbzIeL_ccg^ba$(WlyrBCAgMIcos!axG^j{Phopd{Af1YoAl;!75=xh|&wW47 zZ{C^roj=Bpea`vTb?v>^UTf_Wt?^I^51Ser2?+`BzOuX)5)%465)yJ376$y!Q8CUN z_(Rk~LC-_m#oEK$?5P!!nwf{Iql<^5ojIeI)l+vn7iT^$9&RpS4n|uK4_9~5d-t6F z=N()wPi^jX8hQ@HQEs>@>$@W%5tt!PzGucmOt%YW8JzU@yb93yc^A5vl;7K!y+iZ0~=2#CMKlWQbLRE($dm8 zIy;dC1qCe@>hG&7DPdC6&@iPAA|v@rGQ4~Dj$1&0Zu^~@J!PZ}ympKD#w(TE(~g3w zs;Z_I7O3R0>+12h*;248D=U)*H*)Q$Y4I_?fB#-xUCp>8U=gRvBIoBPMv9G&6g;@m zH9Jeq!oq?$4_-GnVYK|uot<#4Qnc7!l*In9%1X{@$74Nj7cIE<+1Xjfm!ERAN;_6u zJAV8zv$9gywXukk&674Xq=CaxMruk;?VnxN>{6Tk&qFnv@8-tE#>RHt_)Iqc!5y== zx0f)s*PuT=GxH`RBa-&phrOZbINY9F6Fi%Hma=&o%d_U! z_weYMDAgt+CJsG4^_iZVOS~U+hve6#F{+= zqx|vj-}AnD^(wcmjXpj;UUbg}9-FI|S7c@;jjWv9r|?x)cmf(48o^~{Y!g#c1w};) zKis^$yb$k6O{EA83yVgQ!mg{YXS#P!JwR%EXJ%-T&qljgwe!_o?Sb(8WHU;P zZ{NN(x&Oe2-7q#fnwy=w67FCLfBO)SL@7+_9lS4&A zL8gox6CH*H8y+6s-`|(EwPpSCrVj*E*+BCJ4oWF#@sScmd0VoNJ4CO$sIlF3O1eSUTKd0bq0P7cF|9ICY9 zVirqFOGbEJt)fa#nvA&MK@*XYDagyC!p>27@E|!mJK^isuW(c=tB8RC9Q?`p(WyjLkXA$YMKM318AB|37$^ zyfe?|GKE~|z4jLI3=Iv#4qbR}l42j6{m5B^jeXNOc5uVIKY^}kukB(0wGr9Y(NSJj z7KNIcT5{E}3)cW^l9#AIN+bEiM|mw~?i3fyZyL@Vy> zt|jyB+vp4dheR2fnRv6#($YvKe!m1xPfsc97Cxbh-~hi=4~oIV>qNBmT>b4C-6AZXG(%@EJKeIn~&IWApLx z`R8ce+yh^}$eWw5Ch4l62xX&jB+mG~O&%Y;V^a5qEBz zVOriZNmYm!Vq#(qU0s_|uc4u#8uMQ4(~Aq5I^)o5!p^LJDp6OH3@hnsV$kJH$WU?Q z7UzeXr-M(fWnXg>B+oUvtPKe*@hea21ntb$C$atd zs47h|pn1$(RUUG10=P(sTs57xxBor4!rVxFKhW+=kep!(L6c1hHh%?SaQy;3jNx+Ny)sRfyRF;a=4p} zjm;gz0u{vkLP|A+W=HDZplek|Z7#6QA;t zqf%r0QKm~{zmGP1Qm`5*^tJiKtH|S z0~Q*%7zim=c6OQ+A5KnAVb^6OBH2S}=48{q*H;CCGRdi_QH6ztn$ZG_r6naD(Ij^i zITzt~4HFYd`-48d)O$|^n^KH|JiNTj;S*5R3W#0A3v}4rmOGHc3_l$yDJY;n%oe}T zLUfc{T51PZ^y0;fq|8h)wi>L~|NAaRLQpYrcf~{~A@B>%U8U$@2kf=~Z5!j8+xtFv zuN@x4MoAy73%{V?>RO@{{kJsYXtcf76M7;q%)H!O(}`Le8ft3Sqpfe6@gnphLD%B5 zb8|`p--j}VK3zEyTJloCMTnHWT*mEYWMb-M>}|ip`{>c5CbzY|lD?gvKReF;{D8On ztV7`~sj6c5me%O9#8NJYAycHavi|9%;)r8=ru&cK`16xF%m2xnyLN1BY>+mk;_mNM zwVi)nR)}LEhV(~MU(wJ8naqE`6H}v9r-0s1yn`E8^89B3&nF~~yLUTBr2dL;x%K0~ zo)-4rolom&d-jI~GEM)jW1rlT65B7~`2Y&yn@@SOl~q+~kD`q|4AYF7T+Jrd5-0#= zJj@amV5z~u#@5i&6K1LDNA>jdERZDn+6}kCL>%1*hhc==golS$K(EV{ib$K5=v}O` zXx{(AuoM2j*C*|H8mxV{8g$rt@8tONvefK(Lbhl-`<}@YyQD3gn5$-P&I~oDkK=l= z)lbvdSi<^X&x*_BBUY)7C`*lBh2ubXgCKSUip@wiUG1rplaunphxE0lC%jPD2R?tM zu00hI5wS#7Vrq(iF1=Av+DpjS(GQW($z|gS&(Bz4xW(X7=o>-}w zpem6wTT@dL8A>nY#l`!|${ILPuV24D?Pj>n6;K2mbK3s*Lh48ainpzcOaHjKlv9!< zBAoSFyg2nZUdVk-m5ai+b1GmhTiV`;pfKrxD_&V%4la6-njqW;p*B{abg)x9lF(Ec z9j?JT!FK-9q95N?n6_GvgI`FfoG&ZKck3=J{SjLN#5_$;lrAG-?#GX`ZEbBgogJ7p zH8gVhZq~LR+#n$6kE7!2u&xF06O35wX_dQx4&2<_mJfVx+S}wOXJnKeoWzi^6A}@H zKuV&ZG>yZ(Z(u+TPYQSTyN^WbrC5j}!69k=x$>1nJ%fl=o zLC0q^%&(WZmIbL8aDYZ1isE~@lsGyit4-oASQ!$((+SXctSw(?CdO!&j!EkVpnXy zl9$7{nRIMy4C?dw^K-`3!Q`BrM1T*8C0U3?mDkivK8G#jQh8%CL*Sl`bhDJ|nt?@E4GH|~p9v*riu-HL00TmUM-bbIB;k~4fAH@+Erp0?t(4GO> z6KiXh?;|-b6T)jZAosp`L;K~8NbS;|w?)9-Nl{G=QGI>AtGBn1JuM2+{EdIwwD|(8 z2-#b=Z_99{mIriEMRsP1c`vW8qj^a61a-yW8Lkew1$JzlS zDYmAGNdjQV{Q7#b^2e2-v9UO9SI34&BJ$!Bh0xb6b%i$f^+V?eInBPNrlJD(&ySHQ z!uhq;Rc?n#4*$b3CF)tAz?-QC@&5EsxzP*zv&>^S!H_J#~u6C6BJRmI3Cq{a>l*xQx^O#Z=I5&8Y~>woc= z#Qld46DGs>QU`nATMfGY`L1@@>6)3by zNfDJNJLvkE|K&kHM1GgwUMnU8Lyp;r6)zJZ);T9LocYA;WOt#uwpLC>CC2xnSS@qE zW$6kZu?lvXb*7ytj*B0upqqNDp3`@){W8>H>Rl&1-R-HWy~caMa^&ZCNmn^uY6C=A zzHaG%TUvU9o}L~WZzKgxEL_|Phu`L%q3F*O68ZoId&KtrvlJN-?PKAi=Ta zot!HBuDGS77!duao7>p4hsw%W_V)I5J;(F|(}!C6`lZ>0)H`B@QaWs85Ch^85&{i| z`ud#<3&t*EO|`Y-rtDNKC;?J$uj1ot+DW(6? z=#Ip*Sm6A(peh#b@jmsi*=PeC2|#^<73=JLyDF^Le5IzJzPs6Tdmk{X{hK?<%7C2U zKD?Ier%Y%xgOtCUQ8aTr;O>A$d~y4M>()eR;9Oi{Vw6gete2M{q>V&%sVkjd79xZI zc;GqoJZWs9OqFJ&+)wL#mwIhVsn{KK2_Wxu^KDMG^$_*tN&DY#&xRMK_AQI0+^~^g z_YlP7SG%sr$}1|aLK&ED@xB)>%LF|pw60-kX_WD}ThNl39`DRR{qFl#uKR7Syu3X5 z<;#NXk6Ve6kr-JsZ(k;d^kH1ZscUHw3p&lBWfVhf@cb-X`uOY*x8JcNG#u8WD7i;R zM`^rPpQ}v<<$=EesD^?xzp!BD;4tUHq-bn0(fuWz4~`qw(<6V>@b#-!<^7dT=n%tI zikN4b7fuL_aRnbD5mHl^39RVo=%A&mMnXGKxm}~QE&(7Z>4J}H^VwgF3w$c96qShI zzn_MOhv$}+skBN63sXY>t9&0HuHfonp{gJT4UI(*B-h$n5(rN~02qNO;cbX@93Fls zFE76gl^@8Xf2je=+q>l3h=w-O4AIm$&^;LEAI_GDz5U?zPe+Hn#a3w4A`e#f?TQ#k|TGa9UhL@# zs;8SXAvyK*^{qlNh3!boPfkS8V(aYum?HmZe?J&H3*gQmWiu36gI-GBzWa*wS@ zD|&U+91R`auAYjR7$u_^)5uDB*QWLGBSlz16s{ulcqpi-0`Dv2WMz|ba;iLc${v;P z58O=b7#}Br;=yg=yLlT~cvdf;TdDvS19>!FZf$*R%BZ+S_ry$*rPA_8)50>{Urch0fm#2)eL>f}4v0C&ouw z`t0oN@m80Az7K8dVm-WnUq(}NEI9BNoNr)oup7G9dmoP`4V#{BV4DPjr2u3hsI&lX%BG5{bf0)i>RpBJmUy9t=|K1hy&G>D{~ zd{YU?he9hd{%P#|PqINdW7mD95GqLAPP6<7_$872H5GbE=)CPKALHD(A@l6nS@7cr z@E8~ur%6I!!^pJD9p*JPQ9245N^DxXxDedAb0b#DOnL9$Yqie)0$NVk@0bJ8%>(wS_&#pd}QOpIpc5fZ!pqAtNfR3;Bjfo87JQWaY6S&qamSMn>*`~e zc9J}vb7pU?ayg=vSMXS;bE+3@m?!ZMvAb-;3% znVBIAX2yT{qM9|+C{9m+sLaqdwTE76T=1ul{s^G7jq^n;f}r#K^AvVnlm&&H*w|P^ z*U}b=ptKqq1TTLN-rKriVNCL(IehigfU8si>`P(y?{UKcR#sL(vO`*Z?wdaeU=Q-9 zLEB}s23ra@4-eJjb{1mjEMcQv1x8gE)T?mjOa1x6hv;NJy}VODtI3wa%El(^>dFn= z=r_r8;8aD|exLaxIFzmXcL8N%GWZiVG&Cp%w5~;DI~2F?orLt^%3Urd#>UDyIdLX1 zNa1@tF@$rlKduN43k&m&i!>) z^!1%%aZC)h=j*ct@r#{W-^PHWtw*m?Qp}+5KON7xF05bb>OyJp`X%e=$U#d>JMrM2 zA3ax`ewsG3Zmz;D#aNB6M?uMyL(Dt|^2Bvmy$f@t(DMSuVW_+3FZo1{brWb21T#>QRFX*W*K&FH5yQ{n*H^&BdD8z~@Lr;- zmns}}rD*OeiVEpd$_ed;rwNq|3m;$c;X`}?U58sFRGC~D)S1~gIz#$OFhit+UE0nt zBqb&HkB%Y$+FB34i3WCkXReU|$R}5K_ipI3G2(9U3fg1%<@h%FtsVnxqOTqTxQB*` zxdzQR2suDYgQDX*QA+e$Yqb zbGDKCEy&x$!}gIL%Rgy|+e-(_FiFoa?#pZHS6=)DCd~3tM%d`%7ai*gJQ#oT-UF9+ zd5{fQ*TW2?5JAfRU)tixY5|G+pV6koIoKZ)1JLKP!5BA^$^h(jxQL zbz`-zPU=8Z&e(ueZRZcS4xyEPp+p?Mmy1E(S3{5fUhK9H`52}B7G8coV_L)N z+N@wA7>oWvHo94m$v#6&WBhA^Snus7O z$Q(k6>PCqgjJ%tJ^G<+)g@rcl_cLyujZl}qu=Een=TZ;YB{?co&Fp%k>f@;@D$c4K z1fn9y7-)w_asFIE0yzDi8PeJk6$?BQd)3GMz%&)$(@s_k+ohy{P&Me8wxf-l> zJ6w?{se=M~L4ACYw5cti4*?0<6-FTWoYSzu6i}G2{tL=l^|c#vZ3M9A>*`30ii(hs zo;-QtIP)I8rlv+1NIyM}*CvvCmX6KblNSIs5c-R1IxjltZCFsn+}vtRsE*dNC()z2 zd8XyP;lbEu^g&TDv#{XHO}t(xC-OU&?kkE-HsL!D+{?_!2+e1$kJl!6`hixZNXr5x ze10TuB-}qrO;vRu(eEGRzl$u7E%I)HV$DEKSiJO?GW z&9DF98{pEX_7&Hkes~@o-AVDpKLiS7S>p*O`Nq$mCD)CzrLxB5gx@%SmDt(o#*PVa z(v{e4N;|yu8JPJZj!$#^+Pb>-=UF0w7*6f3lkwjMo*&)w;ZwI?WqL$!8Xb>D=o@3* z<|X}h!}aaM;CxZ!&(sDQV-qob_(Kf8Ua274gvsxikL4>!pM>|9SGASZjDSQ2(yFb4 z15I^&o5eV)+IUI1y@Jd`vKZ`b4dcbQ;z+OO;l^H^Pt#FUto~BDISS%@bgr5I)QkOi z(z?1vC@QRg?2S>y%9a@p!9Bkw-`TMK7NI~bF%c1}N~cJ($Vb9@Q`4%79GskZljPmp zC8ebyjg3OAG1QM=XE0sxWv?9g0MVsrXmBre5JBjhUmX9MZg8SG-d&ihx-Ca=GhI1d znetBna13%57B?Z2g6b$e&dY2y)Nf zo>$orwh2&NKoe}qzsi&4oo}Js6e!p`Y13gt@8;eTy(zKpBM$HZq`9!8Xl~(?zVUz6 z{%|)uwebP_%I=M3b4$Ug{K5h%H7%m`!~I%E%j4JFPTY=k6h9{YCb0I<>7{{bl>^zaUqYn_gGqwmzE@pDVgctczh!Rg zv-RFJ0P2K5^nj+dy1&v*eX+B%vkxRG5e_-WXd2p>f}08EwU?9Bmc79kGhv=KYlP9e zU-g4)Zl<4qbbZbsz+o4gp3dlA{6ze4__3>7ZA4}&o%lyOQ!A%pzTwt{cPTU$(ID0V zVbj-4bAraj#dSrVNrMke(sZ*YySar$@|!mm^#}=b%W?7gT<#~E{14~>CRW>koVYmI zgGwmoil7l7Y7J(h0^Ga=*I#`2pk{SW}vcx_2vQCSy)_*FC3!K zSBzuPMgVC%jmH85#3WeQ&!0aZZjIPp22vA1&ZbdyRq~d&$;ZbRzw||}6XbZ)0ICr{ zs-Yu49IzJU6qfd`pl1aDXs>sTj){qiR90U8ZEoP|%V``=r|~UfK&_2fIuQE2e0*j$ zHg6yGX8cp+L*0_uQiKiNY3_UWHZ4p(r*^}Xk4d)5&#V@%7Fg+Cn5VvejE`08jy^=t z=Y5t#Q?VogtRoR9V$znDw?M=Wah6$!M!f0o^~KoYB0fOCi@kORVEC(RYLJoE8}Bl* z|2kS0*m$~ZZG-MD=Fl{!-`TxLP46}7+SnNSvL3x+NVRkKC6m-FH!f;OHHo)9I(7Q? z?ITW&!`k`j-acaFclc>rTfujSz4qPSM>K|URt%{LB$T()hXOf~*pvu4keiRM8_<1H zR#s(w5OBgkNFH>AilM%dFhaw2bQR`EOV8}+T_7KRH@Sc4795ns9@-_oyyaY8V{XR0 zy0XHviYY2bOh_m#pX7|o>6-fb^=e-{4MGUt`SlAJCZuS26bA^pkdWc3T^LNE6pP1QLfyV>sAE2pxiZ=95ch z|G{VRLjK43I@7o-SUsL3MJFyCxsKB{Xna4c{~M>C7s&L*QPY zjTBw}hW0 zTc%FkEYBx@_9&jUj3l>SyK&#%y6X|n_CL%29Vv(cQ!g`pOZ?gyq-;FqrhCAIg3fbg z{Sd+Xj)?!kH8M87aOxf#!*jX%asL#v8GrD^pSjb#hLDyv?(p!iW)~ZY@zyQNiWb+A z<((Z|!Az%7=J#N0kX2K|v;LA6@~HfA$lwNCZ9Z_XLN1H6`$pd0-eE@;ANdUSBBU8R zI>Rs#y_nhHYtGZ7sV8|l_V0Rl`1rsm^Q+|0Mtm9ek$I;C6oTvPYXl|kEBhWeKp;(G zee;Woi!r4BUh)AG6$K~qRMW#jgVsByneOS(p}CV2p1b=WWL&B1}?J zPpaI3yn9;JN&z%)@4`ZWe5lyr<>EaqE<`U&NI?;$mMJL1mcq==jsrKM)ws4*b}faRGAAc-WChZo)!!7 zev!Z=uV#5KQf)g2=d=3%y*fdC_*zvET9bE;!Ir8}@enl0yf#UsMKlOrKXQU3IfBgP zNJvNuxF*zozLx?jZ%@w~6={DtjG$|L+`Xd3ZNwGO1`r|^6)ngh&D&%@izE%+i8Q0U z+za~4S5o=K^#(pZOZ&(;`e{?zlf=#tx2`A2|I)w0b{RCLFC z_?V2bzLa>Qi~RW`ISP#-5%H!Bedf{G8+>#UH3Q!mvdJSqjRFt7Ai>m>xPc08l@b>c z=JI^}8M31RwkkOp&w|&SxUu=md*+F*F1q12Jn4Aq5o*Si7m}L3$h@g@KjnuOoPg{?vvUf&9&00PJw)f3#|<&!R=mKE_HE z(l<)~N_B?TM}OKpvK8~S9~$%U%v8w(;=RN^L!Ie@oHX9PENBmRvu1F zJ|PvA$oEwO2f;c@GwjwmpkwC&xTJgl|#{YCYW+>XzlfgL;c-@NHNFQZY%Ds;=3keM?6$y2EQ!_e5;2fDlb?Kh{wiN(p0!L~QJ-^N zWoXA!Fjh7<^JZ78G11Ce43>+o&$MA;Gm?h(x46P_kpX2+xo2)SbDtvlglhhhBLGM@ z4LvXDuBEHls2vGcDC z4_Xd<2o*j6}%Y28OfV#S6YOet+imh@XzsE+k%mt9zm--)x9Q8mMt zp`nAX5ALmisfV_9dR@j)C_6hFfwi0$ngzCMT0edqApVQ|97qzd9zxfsBykKJzp0Ch z6xbC|fj0 zTQRjEPrW~Z_1(}|8Qneq(sQ^tnUK3SZ9p&9fgO@yQ!NkAMrQTDh>J%p3$oQ z@z{KS|6udIid!|m(t|-3@#|BIpFc;raP2t&$Q;1Vq%5rL^V0Oj@FR1cFO|1wQMPC= zD!q|^CBf}iMq#af6q;D@s|4qDij|tO_{*>_nN}qn4x!4dkM{U@Ryw-pkn_eRc!VU; z#%+!bZWypmzVrWHUzuW9DH<^m1GJEOnuz8jIeYx1a zK(5UAlDp1nbjuNGNcYhEgg5;c`eeBtE!&$TI~#Gyo0;HcP>bbi*;Hv)*9-N(LZXoG zKeJeQZ&zJYi`3koCp!^CgGV;4`yxR_lSa_zSts)q-y0EOQGzxZ85tk&3xQ=<>GqD6!N|%nIGW%P)I;)BbWGKHrue?r)d4aN~FLSg3Hi2%7Lb_cffuJq(Ob&`E|FH)6^Sk7n%yKSHa(rH!DR_wOiZkxKLg9C&Hvd% zjHjQUAL6u@FYI6a*X(^F%&)eltiW}gYR%YE^w1@f(jA|GsbN@elPGSeji`E=`fV;` zk`i0{?)ZF_!qiE|mVA8R6b$SEyvz7~rwG{O~q?DcNkAme>g@kL3+;k0z+WYXLCTG<`6n2sti{jPU&_CsMp08!I|X(!o-Mq3#<2pT5{$4=hl#+; z(%TzL5l`Ly^(!&L!Z`9)F1XlkXQ`bbB_%~MereOc zSlDGF2LM*Pp6;6!^Z_y5349b5NF4|xAUAGUcsLrO_Yg>^t>vTlSw_}sx5E9eWB!DZ zIf8a+=|l8d$}`qYTa5V5_IJ-X1W_tz3HRuOFW$;`&V2F7x2)Bew@QBcmUwDUC%;W? zd@CX!Ny_Gei{Q62!|%Hfk4|6m;VcNz5r^TmSx&SHY#7VfeBb#}ENgTzP=c?jW+ z_M(;9B3Yf+f--qOi4TDe_QEIM$MNW`_<)?&ev9<+H;d=*7^To3gOnxN!m0=Wir1*@Ifa8 z=WT7W2MdJ)di@rz7kO-Gc@(F0&*{xTHQ`WMiO31(=3HvSk-xd_PpThrn&3&Ik{6v_ zH}XGC+V3WPMQ(41g@*~0!OmhU4Jfd39g8P+C~zKpAEljsf<8ysH*yK5M(MrWD7%?i;LKg^0juT*o_#3=n*Yco(; zVkcTS?5UZ z!2_JO%ij;6@|wZJ7#JQ_G&j%h{Me0(f>P}`!;7%l!=Br!Ir#Gjfu@!>HWXMC&Jj}s zum^j=!bJo522G~Iy8XB6go(x;K zSMcWL1MdQEE;Q)sz>g0zAh=)KA|lWcCUOw@z&$Br;b&w-3m@%Rqq5oH%cJ;@JDxjo z-oC7>(c5{|*Ft1=BP`aGg#*9qmyuh}lUtL15%zjPl*D9eYhG$M-%)to*rBqj*O*Uv zM)dRha}n)U?mMG2$!*Tdf0}M4_|-^K?5)$uw8-LO%7Jcd!TPnmrG294bsBR#!~v|AloXoUPsY45_+x~q4dk%1%Qd(^Ye zwrW8dx|P&oJIh6m?#+VDflnpUvAK;{<&~}IUCgc3{sFi0%`X)XsWiXxzs@-)-jG$3 z>5gRYd(xHAk@5B_eWNCeaOEi)#YoZ0a%UK9AL_@Bz$_x{fxy;B!P?zYK@U9%DDixA zdkReqwP3$xIo)+#T{2JQ{3%rv1{=5iss8LF>SHMoN?ocG10SOW1m^QI zFKU9>L|dEWok?p9tcaQVEngUrfSm`j89EZJ$Wt^J*VsDt4KIUj1qUAsuCg~r_=*r) z5{H6IhvM3T5(9>2l)>x}5O7sJ3)3tJSq@ehXmYS3FZ%6CC>OP!jAqx&G`ZdE>h8un z&S1fYgx-I&J#_$<=5BCjAb~EEl#vkw&iCi?`7(2(5dhqvWrn7U0~9ov)LI7Oe)8GQ z?n28aw&WJj=D-+w8%SM*k@QF<{`lC-sMVJY{A%FXrF}dHz!k&~%_?3nHTQsKT(@fj zVj#lANVKpA#)#$Edu`G%C;{^R+eH(&A@GzD%w-M|bYcQqBRxMqzb%OP zxCk^0H39WwMzn&xJsS)4OMFr}rahymv1$W|4I544q)mFMyC;Dx*^&rBo< z3U(tOlKAg|n_GT&JB5>;wEe?*#PRA6)t?IQ@jCNAmM){dWa^1=2%UK-dAcy6pSH1X zRTub3pmD|5?6x!Mqg887vf17Y^Rn3Z+uuF>lKRnnIv2lIXOHsBt+{-N8ZF)VJZ$2W zGgme3Y;lJ2<@6v;5YOjFmbZqsb{P06*S5ZuQ%jv*bbtFs2Bdul{ImY`tr71(y?MlH zQVJN-0-{I^9a;n3)<5i?6Z}z94Zh=3pc7nDmVcw4pm1gK$b8~)WAI~73D=DDOh)r! z0&=d*$lK-29ei|WJxT-|F|u(5sgcVMLpn*WQ^8_~L?e^%H}dY(4KQ4GK_8Kvk`e)z zaZ^GfKtl#lEn*4{NMxX2J}R2&NJimcYV%#bMt-$<+%(8`AwLF z0@H%73*;0)|4{Q~jg9Ged3iOov`}jF#7zx<(vOdhY5->4cC6coVQF6-%el#6l?bPV_qP*4fM!ASAjqcby9 z9OMry>Z2iZfF{$iLA`t7nGfD)I93Qq+xFAU`i6!UFr@&rC=YnVU=RW)M4J1jC3DV5 z6wHDlhO@S|%9!$7T3Q_5jBw)u<5Qn-(}RgTmIwy=AY|+vPYw=35)%nPJply+!DLT` zr@;9DH}eFXdsG^T0`~>_m(~*@QiaaBxlGHZlQ11N1z1`GN2QaP5HQ0svaw+U3y+v6 zQc&p4WmkZz0jx0*J$=IRvT6LqD<}=X6bMv=!|%X2;cAb6Y7zCQW2E|brZf%(fnZ+w zQT=e(lP;m0Czy<{Q z%&@z^)03#EqczbJXjwr}Sf}{DvYq)C{U#=526F6!5R0L%%l%#-;qRZ2Q=8ge_{%!* z7TyCbpwM}t^2C95M5nG{C3-0#zwiTkF)hBNUMnr`6*29XKXnO39dgx!F5ExV#%Er` zu;{aAA~7*BN&4CG+jyn9tVl-W^l|esA69C>1hMU1kJiooynSE2j{Tg1amw#YhoM=f z;(p8>4Dh^z(-26-Vw3&{MOu&ubHV5Z`Bf2+1vpwkn_B^!xQ)#ZWOM`LnP!ALUtcAV z0-8m@G%yb^I_Ml_MhWI}#NZ~7^1$4Ns}n30T4#HbLTDc(hqP#gU?NYQv(VO zn1MgJ{iVhRtfQ==f*^bji9gz9D1w6vR4+|1!&X#qz#w9HL`3J*6a|o;psFyq9!)LG zG{ZClOzA~;nvBcmm6TwCJA|4<2Ni~R$EK&B!?Y@5%=Fzme2@(x3kHK@4>U(pJG+@Z z7d5#05y^{+N%@<3gVclItA@b^U%I84nP~VNcuSc<3xuxPUfm1sRt9|*iWH1zs$Mlh zk~ayu@(laZK(V}G7lYja%Q z_Giz2ct$(oYczScA?#`R%LSV&NYg;og#G+!YdLr4X06&db!2}Ye~(wGQS^heBH{Ev z8eQzqU`ovWfJ<0Wu;R?oBrcpz)!%$;Lxm}ULAm$WJT+K2q`hA!y(|}Cwo&WcQsd(m z=viQ`xzL)MNx1WlR$9iepwCNpT+s38tJ9K2e_~Y2H;b!=` z_3isHOIS?s_^$;F()qV~Y6(TxLTu&L7e8;*sT8_4RCiEhPIi8}xWn=7dPyM z{0I=>Ao;*N6FT_R@T0`bHRZR)5TJ7-B|=08KE0sv{M&fLM$ZGFA~0BMhs*FP@0~e zHU-y~Z`R)T@5N(}VGI#s9|p9!E2g+LMFP(GotN4wPtfQUG(n#X%gUmI$^fGZ(Dkl- z{~iev#`ZVF@HM;(&m&O{1_EIQ@_uWQ=6|Q~DG5KQMDN9Z-G6W&=iHP zrl8Lrj{7$-`>_Id_=gx9%jhYd#<=mkMFX0Y`r^uXhexaf#~r1Wdwc}dn#CgZXn-4+ zONiXGQjXgHY<7=s2+0}Wuft4i^IJAmIf)4iiU;eNt+wY?$&L7ih!;ro&;MRrim%khoac@4~je!$ z@%J|CQNZujv~QU^8jA6O%u;pA=3yc2yt?>&-rq0d(lkn!HjB-HC+cWG!U>f&?q3&` zgJ-kL=uM5yny6l;Aam6c=zs&pTmn}SZKaEb2l~Az?gKh z;LU&-en9{wV6GTe+0&X3me`Gr4M4?HNjR^qEiG*=O9_gs6%q;SJ+~hV3kxqJ<{@D? z0JK`3LP=E}xZ4_weuQ-4u?Z96LFb2dCFc|9TQGP3z;$mB#;qd2o$*F8fEvjpQ*+;p-6 z?gqddTj?h8jQfMp>BUUr5vy7r zpyF4%n`8V%^_OT&YH+(v)yG7PDlf=_(q9z(Nn<|aJ(`}J85Z)ETkdPXfBoZg5 zd1_#Ih>0Zjax7>`5hqzSLFi#lZ)q1ZQb*sY>7}Q>xT**#Hnj=HkgeaA`wZ89!$pe; z2@{H)$Z?7kCfUuXmb=ULUlWXyX~KO~!*dN?_XzkJZU|T8MO%@?KS<@ugL9E1Hyscw-Y3bO-B?7tDJlm=1hi~Q>n2tk{cfIqEdYiV+KeZb6=GMGp*^VyK zPG^csgqoz853?{ixly-GGB9mM>=hloZ_ICPq~yzeWoHFT7LU|4#evy%8qE$W&bZ%p zKN)O*onie;tw8#}KZ2+@RQ$T~RqSJ>f3$CZGimvV(l{6RZQ8o?b!W&pe#lqqU%v(Q zemhl*o3lM0!IFJdC8ozQ6!n6VLOmtXkCgZu-> z9*oviOa48XsC?NgAqC`Y7EW6oz3r40=dSOJU&rw7;ysdXB-0*2(={_Bxz2RQyQiM> zR`*FCNzo9e&-sAcEB?mdLGzWw1Du)wUt!i5S*MGjvAZJ^&$6o)E|#k?a{s3^^u5^V?J#jWX|22zSQ#~!^sLGGTW}yH6)2ge22lEI~HJd zm21EmyG@%vCnmzeqF5z(9>WC!BIu2$;8%drt_r4^IaT==FJEdtc~V8r7#Yg7qQUYq z53yq%=h`eRoShSZK==rLs?&wNK%sTVi)g^bh(RzAcOy5l0vlbiq^m-=0yf12fmvt* z4i5_Feh-Pd>J~K?v=0b(I`AjJ=1LX1`-RKJu>u@M zBn%-!h2|@~R^^9zO1B@wbn`)fuekYW3{b#kgQ}&iT_5vxa$@3Vz`ZRoK|m&8U+RI` zxhR+i!xxzg%y-+GxC=!NOuo3!m?51juotwx&5mtj4?6FwgHbw|0R>Ss3g&H8%8|G_ zUH>!s9?q0oXy@;FAsWc4LNk%N5ZT}VG*S8^q3Dt+`K^G>BxSd|Rk#%HG08@H_|ZnC zi#9f${aqSTJyB;C$2#i!k*v4k$RU7UioHG1o*@%o&A`wladJyU#zY=o>KOW}T_spG z^*3ku*F$k8G!+LJvBsd0qrg4Q-ocKM^|j#qENZZ?JfQl9?OspOEH9Gu>s{2{0IbxR???B9H%GkfpoPX*?B420J+a) z++4`jEU2G6xS`kP{~_{kb=%HDi|&tOm|n$i=_rOx17BC;wmv{4e$YemQZO^aj1oK> zpl$mP?8$(|5MkP{Z!IXWP+nbGK$J(_DwAHAPlYe`C^M_)Ap(cn{_$}iOnpZB?}Dq! z)4;6o?OThp-y3obcw0=oyjocj;^~~K@a0C|hqKC0{x6>1I;sk-`~IduQt3uTN?KA{ zB^0Ct0qG9u?v^eU=>|bsknRSR?rxDTK|u1i&V9b`d;hv)+%e=_*=O&y=9=@feo5(p z3Yg>Q>EQ6E495!Q^9bRFNg>rQAz|`86EY(qypa$~^dOPlmDAEn8F=9eQ3&Yl?u{#L z^nwy&4;heDL3;Gc=KOZx9_-x9-U?0wN8|J`|!^(XXRAMO+?i?xy zPd7x+riD&D=j<%DZZ8`u+~W8}OkY(?DO+E|X;ZDHK|R6nP3FAb-#g~w=n-z<4RLyV z^PeKDn*6p$7qdb!6%`&N)$xI3SZuadT_1K(%T5P|>K0QOP-9-T4#tXaprK`Sbdf~} z6yE4=h@s2Hc%f!x%blIO{(jx*d46w5t>U(^)C*Lft9uj$li|Y)Gq3aeJKqIQVQF zSeQ`}UBE3*ubaNtBfMhu4tRQ>KcgU-x_d0GIu|Vs?Owd#dG(3E1r0;C#8LjS%96oR zu&%voB+3iCjO{rYWxwacz8_{9rk5TQQHglsNH3UkbpJ>$-7bGM7dg0}+SA(>E0-^; zsECl8tD%g_c7ZnIE@=d!kp~kTT!GASKMiocA#_5-ED~|tuFqCGNb9>FD`KA-vk2Z3W69Al7PUv#Ov4NWfxtB&x+x*7=oqN=V=parhf8bp@M4(dtJR0*bko8Gs(II)IX4wB9U+n3E! z0aEwxfWaI1RPcF+Cnhi;&S+3YMM4sU0LQ?q?go+c5GzNX1+eo2Dx|y8Vl?=Q_GCy! zTNn;56b1RErL-m{060jUCB3O)K&1fm2qHk%ah|?gmvQ*d3uFfP z@zAwH5rPS6*bdUU{=PoMkR3711$D%OOrHTa>hS8pe|f-wJAe@pC(d0?5oXCJIo;>% z&(a8WIB4Z*D^FbCGCS~5y)|Pe)<90?5b;4rIYg{TbQyeVXI#E;ztVr7x1TdcjEZ7x zGCDa)CiMs6msw7WgkpG>``<;a@my8sC>6X<)C$o1YC>Q2nYv}xC2!G)1>0`LCG*V! z@2~6nM6H!UZn=Y>;fsME4Jo-E9@qm@Sll$pq| zJ*969rXHMPwxFalW?C+q72vIINP4q8pUCIN$$IB8yE9gGVb`NcuQY4784(=0SPPFX z%ec7AvR$Q?i~eZ`jWT2Nc)qrIEA#!yw;6XIsG=%1WOIv3#~k&aL`))02B#oaUW{Xc4?{wPgf#1QIHUD z6vzqv=M#kj5#&X&>>V?hH{nt7FF^{S9VAgkox@5PXu&TUw*iY$O4;pVw+0yr0sn#E zD8eZN*ey2AN^?nX1OP2tDgqH>17AX0@Akq4J~t^4-Y^Mhfz;L>fZov%qL?Q1T9hC1 z_!M5=-Ud)XfQZ+Z%x5WimBMF93LSJ5q%KwU;PfKE>FR#sE{Fs2hKAMt?dMfXG3)VH;%I-d!4Oz$#aB4xE-EF-kLHG z!fVKvf%Y5~GYS#QIvuvIq&{K6^!S**KSEL7%L}EU`vbQJDy4``h5NGvyT>)Q_>;AeBcbMVba^Q#*mc}h0vxyWk={E5EO zpt!HTM|VX!)9QQlnOF7c-Q9DxogWSUCc4Opdt6Q_q2-JXrL=>zkNt(RZkuXzfEk3i zD3C89#Pzvt=99Ckfus52^q`;@pLNTH;@E5NomsRRO?^Uf72=?u^4K7lSJM`|UaX9A zTb>}0sHy6koenAU-LpA(Of;)0%^179F`NT0vb6DMpH=SLAWK3_5=L@mRaH`+4JU=M zS#VYY5P*r1Tsd%OrSpoFf`g>iWtS3WQ7BYYDR*j^NFyLtfT=ZGy1yD7-G(DU&<(ym z;Piwdh#U}1rn2{34QlQR!h13}m6($9?EVJ{#@M#8F{i0rW#S+hzpX;BqzC35!J;f& z3maP6Zh{jUuJoj?-s-2?0#Me{+l>DF`JcxNVSWaaBU?)T;d78<5w|(0hi-1idX3t8 z(7}N($pC`LK*b518w8F+FnpOn2k>}xYY#%i%wV4eKa2VM*T(RF3U&DwN(YF%^z|9Y zt$>|TQd0|tUaS~uqE7Dz=Kmi%sJ>#FAl}SKv5ikPwDO9|H&GpJjTyTFMWp;eA07A#+J1O!^e*m`mZvET z=Qk0GsjBgz(pIol%LlipR|86mZf|>BfWy#y!8Ldvr+9_Q@sXJ_$EqnN{d%+SecI-@ zeoWque=E<_;e$DHetql=WzLiaHv{gVwH}Jhx~DkLgNizgLES67zl8l^VP67`4iCo6 zFZV_`zuRvA*;&|gL_J|l)3h#QCVJ`YrME5_%CW^zqr~}w>R3=X8Y}AKt5(zBnLTgQ zEZ+vV4C+RI`G}8-v|(eJ6l>{&IcjgrUIF5TuUH0FkSsc#7L`}EJ$s&zpgDC;b`Z0r z54zt;$b6(QUg^Z(CJkrFKlSexyFW@B>c+j?Gy;T?`kb*lJz^*XHNC+XLvPW>rHEWM989Vfhp z2xSxD;p8#1D|+M&ZiPGK!Tw=kw_tMP?4e3P0ww{Fv9kc?$Sc37qGsHkU0+WLbtsLR z{qprxv$rtZLZHTDIgwFP7u>c40a~ZQ#lL4&KDoTk!`L))bE`e4{lV2&`{wUsZ3xrBi44}!)*u7l_FLsS=*sS%@*ru{*w8?V zhq0e;6pRw!&;dx{h`uvAztt3yqoZRLp9)MbQqyEk*nX}bm0N;?(D>U69{!vkXYMEf zB|$@J!>WAVb*9z*Cbfj+ooeoG&|DzckX_COTVtO%w(?~9^>E?ZO!6*kycHvSWRoNH zKzSd>&bjp*xC`Of?{db^NTxkADJb`U({(HtmKvH?Q*+ZgH zF!f_d;H0C{>`aOU5z$hZb@{ReZ$ClFAL`VC3DOYflfcrkmO6W}nk>XKAN5v-vh5 zgXvT}{Xn^-nU+}f*N#YGsr@Nu!`&6-10MXgOxM_Hpz5>!7h!#+q++MfL09F3J~Tx5Sl$I~t#^ zlU7O6Ha%!2A2gsQ6%sL8U185I^vgXdvU{c!iD99xc5)p~rSXe8+}!g@TxK;aJNrHW zDD`(|sz#i&CcqibF0&AtNs1F%uFN{eH!S>`Q@;3Un_-(XiH=K=oN3=0iYyGk|^y%wAx(=b4%U^)>U` zH^Q6q$(H}V6+5mt{{QnVCw?Zb5m;8NQJ}9XcqNl=PR6E`xV+&%NxyQ(!ZtA^l9qB- zO3;0qKRS0Ur?&Y`)BM5+Zc$D^nT;tH$~+CGm66C39^Qo?!T~wsO-Ta{+BWS0^pisI zQq!%&dwSnX^Lt_vM(yu?A(wrv&L2Xuh(=`^WZ0X^btW`jFvz`LyERY7K=1!iEudrT z#!N}U}H`$ot{jC7a!f%h`))4CFDCk9Uandx#SoUFJ;o@EL~Bo{nco#(rqfBfnk!^H@W)G zV6OLr4%Fb(yq77N^V5SqJ%< ziAH=}To$B8aXb75*E=A0Zf#Z6jAs=P6y7C@)G-s9nw5Zrps{PCKWO*MeC_Q);xC=_E5iejrBVft*;NjzHradX;28pJ9i zZozc$L@SE^{nYmEt0y|}a)22Je4YNg@#Lbs0&fGE-QWzqK1psuDSZ2NrZav{WJusM+ArT zK#JprKJZ(??b`!vA3qSv?lUrW>su?DGENYQ{ujQxvMb{yvhNY=9{AiO)a8QR>Le_1 zS!*Y3W9>!pRi=|l(&~!^MnTv3*(j%3`Nl5iVMx=L_u3lB$p*LAwu5VGIG(KNrMF%* zs2TZ$?!P0NeT^H{vVNU+uiBAiiEq&>t;g(B$m+0Y+H=kl3o;JA?Z=JS!_+PV| zFZZe|Sg?H~wF6>|1SE<-8C^)pmy6D+g`q1X3C$i=_~J08W^s0{f9orsGa`6uBv*OxdJ&QFQ>u@csOJ7<)4A&?PRVtY>`GVQZ0;l zG&RlcR~F_40vW4(O!NSI_XQ5A39{Y=L9oaj6r_PmBoW>z6U~G#J=H?f?Duk-X7dK~4oG8WnGJR1{u3hYrFssH(PQ z8^%wo|38ug2;~rcFb9{Xxi$~XH$jQwHIEDp#X=Y`0GRu}w@Q5{$_#AZ|KWX$U%EPU z+8K~bTUr4^*_11#m=*!E3D35Jj}=($$@v~EY!GFkbmGH1pBsc!kN@7w-TyuUe#Rhz zC#3x9RlwYwc3_p~SGZ*TAQMC0I3FKR3MEY;(+m~RVnMPG>;_Mzl#>%LWDt?El=6Eh z-nIRo%PFx8gqV!qdTlp*pP%Nx-xLXcR$ey3gXJ5oiBCn;VG{O9pnB!31SR!3>(Bv> zYfVLaebPM*VIJ~ye16nw?u8GdvW;jw!Wg+Qr*7{``bf55k4MAMIv(a}vY5LR`G4_z6)-j+f;}1wmNY zAS8yQ6~3IfV+dqp6br( zuP9k%R$7H~sT_&2lq80Q)OeJFr=BCN-Msh;zdKH!u9dxPTi-Z&*GO+4_--$0?p3zV zFt%3up8Z%tO-{nyx>9PqkEJ1Qa2J5Na)2>vbfSNq( z_R)gH!kQ*MI~4IAQB3?^yXhGtWSH@QCn7a9^)?});ZXJdKz1H8Hi&)9EG*oibj}1P zCnsR$lyY!*1k-h+A*-eG&rMA<2x%R3P`qTkaGN`wAY!IjFavE5n%LjJO#?};(fkm` zH&Ia<1XL6%KdUmAo@Ag2f{T@Wjc;D(ZdGnBdR<+eMzvK^n;{^jNLbYnm^g&96uN%g zi4zUSy}8GU$;pPlUv^yQ-3gNfD;8ydCm4#r!2+34Jkp-NK3w2I3Hn?LBJ}#|Qi^?` zjUp;z;2vT4%8R}knsRsl$A`)LN* zRq<6-O$|L06DCy3JR5IoAjLw@$w`2aQo%BcH}U^R<`V6&)?QtTu8Ksz{{5CXbSHu$ zC1Mwu=ipBzItFXN!#Gy^hpYVfxxelgH41bL!`WLK{bD%ZcU$tjUcPoMw*EFtt{eLm z)90#Bg*D|Yq}QB==+v)co~q*?g+)raIUQnKB@toBT^|%n3H_?CxcOZ9`)yD~g36Hg z5)z#_lhrhoS4Hh1Yg8AL)4lJt)&2RCh>;F5`i!mq-~>hem?Bo%elK@;LDgfQRsGz^ z^K+B%HC4?m4%2vMbL-Z9j;jDhi?7y^A$5GskLWDjalF#r}J_%tv}T;83(*-BrAmpuF4@9CKt zaJ9n12lBD-wuuQ+DghhbGvfh`SN{Q#MFKsPPVG($Z#%Vw1V2QYP5}842!QhW+12W$ z+Wuf}0~zWsT&l-YTz|1@Nl8hU>;$DLQots9pGW01{O2K-{3znP1a{WQSGTL-fP>w7 zt7R9gsa&|=j~Zho#PtWi9E=?dm3+^B^mYDYkOEZLyBCVqX2REcGc4K#oapn4EUK79 zjv`c)Av8WbxQyYd0yV3XmT%7383=Y)IF{r3A#bn|=*$yX&NXH$!TKpoy5eOhnXPwB zd$eu?Ds4oduYxZUZMdSu_HF!JY`ROIj`bybc^P7@{2@|jWC>YIF>S>pi=eN%Zm6cF z^q%i41^7B5M%PycS=Nz}cENEsP#;`l+7**Ozx;keH7KE!PO3!X=xUyV3)NOZ4}~@* z>Qgtii2d4KNpCeTH?66ai=Y&xNtcWPm-%9sw#aqym22k>a;nE2$c_me1{IBWkg;g( z8{G(e`@nF$HdDHGKxQdxms^c{H0LEVccKKt3h_L%m79;H5~Z)&x<*hkY&0UUCfm>- ze_+E27`PHTb)UUPXM1bh{vkD9;xn>W0VnJ=L&#uUy&#j1nW)zo5piywt&$ z{8@UjmY#j2u}q5Gdq?-iNGisToSGU}Pp`wb8R(7D|WFJMwb^1b02_^g6lxnB?j>&NSg3Qsp}GW`Cy%V*I9$%Kc%t;W!OWp1H@7P@K)Ald z1Y{vQuyj=M5gE9>WXsV&%pzaP{(RRzI3pme663 zD9_lOg~VPfjqqNlIZ_a4U%q%|C1Buq@T5=k(!JZ^V9F}Bpgt-j)@S(k?3d~KrAdYc z3D(nRdBqcNQ+gfz68dcdk5%%AbiM6PC9&#x=J2}c%-ArB1_Rs0M>w8J#q`np)X#~U`rekehL+WoYI*dWebbDSyQns1*%m5B z-`QNX;2XJBQ&vNO&E3rY;*rKhjyy!R9}tEqKf)i@`99FwD`%8aF8Q7o@r#4MVy?)& zAKQmdf$|LwNiJ}T=Tvf%M({B*fb$)Ew8P!O9m@zJIJhFEEqrw5~L`e=td$Uyw)U9e04YoC?!Hew_6TSo}rV69C{EGg?P$y zN<)BNltq{6Sy=fCKU=?ITAGRq>OU|S{aW8Ht&M8BI) zR7*hYNtFKKAs zP~%}1g)Msv6Yn{VtqfCnDzWd8P!>;_+A$xti#OK=B#A95p~B2YXvphq{yE=e8LyA7Bu*KVtJVe)fpWC% z(u<{Q$KqsWOLdkZd~ES6sorI-hb|grTFUd+K?5h=ySkVme1D4R(bU6i7@lrF@y6gmV)#1%!HQ!VEkFve3Miqx@mruQ_+(mc#|5ni6 zcA}O1A|hug9PudVOMeQ+rcsf$XEr+0+*xvxU(};rwzCg*EvMAAN1jZDJ{&E1_WR_V zFjoZ(@Dg|#Rm@T;l3`f!mLv|GD}hSPyvY((a7~SkkKbdJyEqci-T0Bd0FR>bJ0N8% zfB-F7^u7RWt1~mWDyK^};Lbs;A3;$6VVocx#!ZP(v|(heQEQh)D?^Y5Xi*pyYOkIn zn9#s{OO_y^rNsxe5t<6qIR#a2TvUiWBix6Y?L}F&UjM#Lyi<-54K5cOh3X3Oo}Dm{ ziyXN&2Xs3(;D-_J3ydnsEl?p5EPu@|%P5o6z&(=J5aE>uROZ{aPB2hGtccocx$%Ku z@C5U&x~eKHf_Soe4#qP8G;z;N!QPg;(8|N;k?NG_wb8BrvDmrx%x~kAvs!Te&bTBl zK-qnHpH#{qObe;B#G4i~K_v3_?1zhd((zjdHGyQeZxX&9?0t}f)OBDG3xV)&sg*N2 z+HNvMn|AQ*l;Q2n3+vX7YlkzbG(U~d{=Co~o07>rOpG2>qCuM;Qo!+7b6uI3?qtF? zikTlC?lYrDv>J!Vl(P|4Cn?E-me#Q&grTqRm+W>hEOZdqmp0K>t`~;em6W#Y?{2SX zxYJIg{*$)+W)Wd47|rQR3~6v^y)u63cHPJc=idAN^#r?n@@PL0eG)CVNY@DgAk&J>#Q|jPq=R&}p5fC?-*~!MFSwr?VPVznY}Hl9+oubI5)@ zzn6kC*S1jJmC2UKXnRkmd%G)!$M$T6@H^VGO z^T0ud19g*hn88cX_rxxCc!-IK$-87Ryc_fP)6K&oB0Atri6SIIf?^v7hFq!Qz6<8u zkuN|?TkyT{Rw6dxEee1?-5JB204xSzD@YV_E>t!IEgQj~fD|wArMP8rjT~X7>;+z2 z=@b!3@lzg7PELpbjxiU}46$$Ybavhalo1WhOm*<75Ckb^ZCkn!=TEJ#{!4S)ybP=B@6#-d|d6-|u9G! z$)x3%vt%%d;ww_2dK$w=)w|wCk!Lq`|Mp6TEp2Cgt?yFNO=_Uz!*@w()$iX9*pIvW zL`k~(k1s=}^qRa$gFfbZzo5IE^UgzKx3zQbMyJ*MU^}ZHd~H4DR0lSFl!=b+O2fR@ zAALw~2AYcPuS@-s&Q4SDmddBiXr=M>Z@9$6ZnMYTo^H%GHr??VK5aD?n@D~%AMOY?9z8)55(4+a%!%)_7Xp^n z0?Te~U0d9Nf7R84g>k3_6FpkvXD^m?*!h8mY`Cr@IdejaEUcFi5lOo1dC?>bC*sea zKfGSqcu|t~p>Q5&<_g_wH?`uQHBTDb7{HE`&8_wLTR3b;9sx=mf+WSoHDu0xPBceD zO+7R;q+dCX38ugQQd^FWJ!#%AU`s)F`sezK)*&D=Z|-dy7->xc)nMMK}n+(dn@CuA2e;_qtbU)=mYcl_|0wh7xb^#chZ5ti^_R~>Qj zS&x9*zYC)0>;)JpQU(^a;?3TsI6j`vOx0b|t$oH`WNbWWEwA&IqWUtj^gV*mhbsov4F`y*S$~r+0US|<}iA5w1TZG(rc;RN=ZRvg7veFwkfdJq2= zU^>z6>le<-=D*VB|22hr$8i1K1&Rlc{2wh!`}_x!ncR=i_%uAvsi+HvtX%T~F%?SP zaEqFrA|XABBjnT-51@En$<5Br+Ap`GtEzA7P8(rCo)8~K0`S~Yum^M3LLo*; zMHTg%U;${vLoBuMPOc(067_%9f$bCk)O1Z617^Z&Em8`cEG4Wu?NUc8D8M5%Q(8fZ z1#SpWVZJRcxB(#G4(oJsm50WLV5X`>oEx{ykcB$e%D`a>H;ewN%dl-S{t zg&mox@DJY(mxsPG@q|av(msz2$2T6_z@2c9OD{emvu}G61zUt(J8WlDBEq<{zu$Fq zx%|?dAVLSCru+{nuQ$a>ET0Q`+Fr$)iyU2OxILbcC}oy#?r;^FEvxxgw9uXf%%j0Y z?e4I^f(`Qozihwvc91t6aX<@k{uddKlq&`ahb1#B$y#IjP2qacct!&K`m)9w zWOsvxT=Wn!)_mrzr^4QrO2&vfzr=PJ{oT+}mC9s)!g0QAzRR@q8^AR zeP$D3K(1PSP2uO_Qe3rpU*l*MZ)Ba;$)tAnpnlsdr>uAS zS+Qu@j3^U{@tfClEsr_;`a4K9z2FgV2(n%~9`t0(%0Kw6$?zP?odMfQKOL z!(bNh4N;U|V4w?8JUCpF=T`18q!w!2HeMsRk0NR>nWDg zpB1XE>}q|nuf4DJOnb*49lKWqAjEA%CpkZ<0jcPbSBq*FV&`RXljqqrR#!~R>IG6KhRh1qCqI=S+j*m-#OEd|X`S3pWi$}rP2 zh&jL-tv^RchjWgD7A7-`mJnEYmiy|S*g{!sa6JMg2rRvc6I%bmyu5C65Gs0p!){Q( z#yh%WC^8ZZ@@i{0O5NA?_QW2ZR>0P%2e3m4R__Rj)1MN8K?`Po zUEZhjX2)SvF!u$;#nQT_stO%2iO$Yd!)UHfG5sJ2!y5!y`z(8IW#_LFY$kBE``Zmd zL=9>&j5{q&F@bAuG!2E(^~;OIUrn@xDz5U!JhviyVRCk2_%QzFit2JRp#tcHXfYk# zV3@i5GlDvG(SD`DL!TJB>#96H5-iUoK0!EJBh<5e(7g^aN|FefVL|ErP!U0m8|PL* zi^+(Cjo*p~-@6s`UZ(-EVt1E}n&@(rm1OPMn z_o}rV+8t#NjK-VUS($XPY7N6fqdh9GQ)_#$ZV9MYq} za&AfgnR8DGS>okOc&5vhO9XKdaD0B-1*>D+7cegd|JLSlr~o&&KM)Uq2QQ??3t9Qo%W*OU>l4%@FZU0x1ing|$UFqC!TPi{wTxrPR)c;qX?{fj(3(DMS%~@+VAAMyjx1`Nzbr$}{l1P@22q0Fe-mt%B zIaKZ*3deVO`0MQ1&lfw*F61=W1s)CPuy4!kYe$IVMBB&NhL@sM<%B7N-XXHeMII@! z1?WCui(zjRbSbS_E$+M(Y96PUgnTH@+{uGKL zwXFrk1v1vSpyKd*bQ{2aY%x$%e9(mflL2k9)03G0AsAuvoOF#B`7LNRo+~Q$fU7== zgWA-@WEmEoZn~l%a9Qw=G$*ead{1D+q21y$pD)%7MJxk4T+k|C-cIgv@iHlGAN&Q#FB3Qow>(F9Ir)=M0Ys zgsy>pEL}CVc@M$c*;}*k+)kep!o6teWzT{BGz_;{!R71%wfFr&&*Jj% znfa8axtYA8%cqBw7p2CAYdv~P%-$5AoNf8v---x4&2iCh3aS2@`7#}|{P@#^OZcNe zND64qDpJdKRp;(6r-{=(jgWZP#oA$aaB1nbKB{x@hsJBV=D9Lzfoua;5m8G~XhDs; zZ$N`RTBmb!TjJi3*4&oei}Zyzd(-UB8m=c=)XcpjQ?wTQ(W|VqT^Mxz3`3Z*6=ggY zbehIZ1hQiBE`nvoWC2!{JhodxKJPx-jLz5?QQ}ytbeJjg$yPYoxbp7OQqe#TQ8`n= zkow85s_*Dr2B)Rk|JY807YH6gyIC_QQhc+=WIQR*Ix~iLqtk+Mqg_sH+W28w-N~fp zMr&P6z35A;Dd53M;>>aOsDGkG=QYX2Ua@&pY{^NIX!cNHi-m-kec@2KVORc9-tuZz z)2z78eih@-A16gs@?>ZwxNvhSG$`vU=+^s^aw;+lvkp&Af&pp*#3K(y(>iDuU?XN$ z^+XwZ!bJ`k?%*oB!oGm@;Xtqbo!xZ3dug$qYY&C+4I360AQSIagodud4hT8Y9^VS5N0sY z#Vv!?A?MFbNC!Nv%DOhGuT5N4-n_XbmO-GRGS3U5spF`hM~??CzS$e`$<@Sj#s&H|M3O*tlrK*9D|QO z`8|n#HO?}KWa>{_jN9p!1#>%P>&mGquZCm)!HZ-1#Qo2n(>_H?t}YF6UG(}D4L*V+ zyit1Bt`sSx&4G#wk8hPf59ZS{UHP6XaB#lJzg-!%NuV>myFtHIpX?Fv%wiUmBFFAw zJsq`PcxutL){mhxMo#BeNAut|GW5yvzjLR|WG4!=Wz5)vLEX#iXEX=jHu@!0K>tay zNA|6CCkz*xW(0afnYa&=2wP=|rm7QD;l&S|({IzFza|R^LhOpcix;=R z1C7|dB^pip7`hbH^HbOiVtBaHwXwr{{SbiVjzH15$LGAXpICk$q(TsiLc_OwH|wY;Vu{>cGPfI01-rk&j;_g@nko5QW0f1f=lyy-_#beam(Tx!u^z>=|P$ zh3JCP3pu&KmyA3f$~H*gP%t+)CqHQD25KQV2(L;NxE_Fm76_(KG?PzkUkBKPaiBo_^lYr~Ep$5+V@^(f^2%-oHf-sUNw=!~ z-zfweD2>LrHWZD=>Q~@$?qM6Ry&s(+CARUBSKMmwo|BVYE34p%{)?1iXz*oU`;va2 z87WieUfc2(ugC_GbgJR;%{H0EUhFNB1J{qXCFCWc-Z zO1rE@-0|{XK<|PEg)Xko1a>jNd+C0J!Lj27^Eimh!HV|Y4R1{tv((?+XnObj!Be21 zfjBPwaQgc7Yn{Ie7_6pVu$UVn1cMvd6yWQEx$^#tWiIfPAUL;h`tv)BpzDVkRuFYe zy724Q9v}*YuBUqrY_PgQQlK0FYdK`iwD@4R2?F{GkmI6g5yAx|2G5&7%?gG#W@o`V z^;cxGq>N19;5t>)!CxhSXu+~wA+QoUO@wmsLfMgN;W1>mhKQ~L0YBoQB{dV(jEe}vXw0Qe9F>FE)lhNO`Xj zJ-C`KZ|hx_c~V`U?x=NQco3C0(am(dYIHp&vwNf zsSdA^EEJkchdlKR3c3fZWkrQ;b_oWxhXxyeOWxWt-~Up@?v(o!Wqh4c>HecV!qf4+4`u6rXF_(_<$?ofFBopH zgPvYxS_2F0*bVAA_`L*T??Jc(21meZlHMnRjjaIBgh>s^N&3fb=LloU&!4hzfNWKp z7d8Y(4ac+=;S|d+VA5CVQWdW>Ds^ zjsO}GAz>v^5!THAy~EN>IdvFEF*jtkc?=T8Biik~C_w-s`B1lc>Ne!-)*A&&m#f;b zMgD9e?_9cxbF3x!XZw+iepzW{oju$%qPo55xo=W7#|oRgPMFLL`h{;gViHEOelag| zDPqSLsjk*yHm)8lN9vR<9kgM|6z*E<(nbb`To&aMLb&9X|~E*#s^wyaKZ{n=-Z zGFBmXRjP7yO0Drm)yKO0#P+(&4)+Q?`%vxpZLmOgnzMM3*OO-(KR*M|}O ztgvRnGmpOu^2~_X2W**84r7Xwh0Gkkd7kg!^)MwBq*YA+gj_$7g^a|`J0>#^D}O}fzH!Eko<`B9IZt9^X>wr zY*no*Ux}$8KwX@Ofu3P%;ug;Qm%9admhB8#EBp`N9U1hlt!9KJ*mHf6d+$>7tzBG= ztxcQGHs?6!nFr0&wCUXwyKhqlpAt8iI_4KTG4rgfTkOOg=~TlTXp3c~)*!dV_S4N> zSgX-=*_R<Zgl(wP(t07gUF;A8fcI}N;!b7%LK{G-wn%`e*flw zd;htjK?n4o2-ID4bRbz3KO@kip}pK{j>3S@5Nw5`;MG<9Z6`0^pGgrOj9484tVqNn zWDp)@`e$3jVF?xNpj}3`yiE={;)#vF_4D)d_E+c5p_2DCG;sF?Hk3lc!x2$tyWJVS zV(q$-jYEtM*scbe_e%bh;qd|NTfj4C8Vzh{xX8!e0|wI>grSu+HL=CTTa+V;aDokB zECZ&OP~{30d)R>pTk;-lI2&17;(!+)p>f}B<*Ks8Xa{pCtX-~kKVk%9PLxd&KRLwz z;UcE3qC`bPtgUEjo&;Vbr16#XZf>T9w-5LScC5weF>;JeUHXWH%V|u1Gs=%tT7+wL z@4B4UoUvEUyEK@{rZ8G#TO>ZVunOtt=81jzkpXA@qJx{6p6Oc&1yjl1_FJPC)O`*5 zDARPu0mo$W^5@uictJpv1S=7g4>A{Cr;jFZUBLhZ83cP=4Akpncj_M(i##mVo?*L( zqpAI8HWPWuVY`}5w3uH>^w+dz58JB)Yn5klkrM(j^SYKd=&F~#ZvWQoIuTZypYb=V z0X;5bNBT`H?#X@R33eR+`;EiTt!mc84-8gFD>_}Gs;7)y8q_+TjC^h}>d7Kw=cw+$ zy*csGMo(WNR3(_6q4kgp+sBCx_`Fz?cK7gW>gbv01Pgt6+Tiac*Yb)o%YkRa7{SLtAfO@8&TFZY zSK(}AXs8du3;5`|e^VpY^&m(|ktRy955j=pK?j6iSM7wsbso(v0whFp42^Jjcs|~T zB*_xBRo|NnI_O-;ao)jPW(77S*Sv|MNg9|~J9Gn%<5N@9-?duCuxEP-c7YhHw!Q@Y zM_|#*XrlgVy8h)G`hSp?gPRv7Hj#aTtW8h6jgG{qvFB)){oFEt> zp63iNLEjwNZ-E`y<_9Mq1zu}Y^e8reZH^u)+eQPmpie-s181SpdT^KFJt%o$#%OMx zd+Kwb+w-titK6_FoFu{lGNmsr7Q0SHEV){1MN~R}uVfIBEnj{#yUj%7j;8xXKz}gT zi|uNX|I%mOUX{0|L#?%E)sboWjE=6&lGU`e-@ooqrt?o1Qu<68#D+ zt3=8`c>=UmeOnCG^ES-azEosZaz5CHgh!7eEw`_4`DuRKe&CK~|03S@`*aM;jSGhy zu4nq8eZ?*QMyavx#5K{bq1fX%1MJ7zR@f1!ZTx;+JQ6soA>SpyKQg-RKV{ES%O*+;1qA@;Y6ADeT!_V3Z zzZo>E+O5D>=uO$f57ccth49WN(=8v$RLCOx%E)-t7_eXSnlX0r@}F<-HKEm=6Pl!U zd~EG9C9*!kH)C=v^7Rx)=I_o(A$Q{aC%-(T|3iTL4_O_12L%pMuEV1 zZXl>>6;i*z2?`^EZnis9R{V%DHEgOVC8YplAy`r{a@O-oO7L`abWAf+fGsUeb@Nvs zT3$|$N;CbUliTq+UD@>xzLUACbgu@QKV|^o`>HLHVjSu^XUrEL1>>~BU)%1sX84MP zouAk|w~}--I3!Lz8>M%1F~EMne{39Z{qZ?#ar;j&Iu}(;W{pz47iuF|Y-yxz@_%Gi zB82J?s*%1z98eN#vq)W)(S448xfbW^XPlAAMt|3@X;+2xM(cbyR`a_D4)f|j0CO2u zAxU6H;uc-u2&?kwGd)J zxw&odtB2<(vLA@XIJiIFH^Z`}J_!hAb8`+^V=qtMsCYlIhUe}oV{ z+N^quKxE-D{5whjPH6yobpPdXhQTToxVUK97PdPPJx)6cNU~M&jN~^)>y3TAV zM{v5TO1Hd;GO9$P4(~uEbyg&q(|YS-_cwvUw@vtTbI&`>f)X+tq<9(sw(1d)>6_?( z{$V{R5Wl(>ff*T~{*<50mWi{&>#I^ljQ<1Y{QU(}hoqPe$4W7~ltPhKngMx7%fMlc z7+rr#6Nbyq_|w6zWTe2dfD*e zZi!~Xr1!J#s2;Bfs>3ql8Qh0_AL5Uh;G?0|yuOTd zCEPfwYKgnX+=UEcZC#R&^+x6mvde>MCj_7+q@xYU!R8|0o&fkS-TgNO+)eKv{HSed ze#!XE$43mJvQ9D?o^r4LA5G^S&-K5)aoI8>dq+g}$R^3kOhO2ez4s=B?5K>akgSxw zXZXm@%-(yGJ%9J-obx;Xp1$92J$iY)U-xxi*Ykqf42aBv?^H3a6-vC{n0CeUl2PnJ zAp#I%MC~ZIFDuxT1t}0JPb)JsQQ6qo%)U>_KYvc@wmlgJt-7(ixG}(x{Zd&;4wdnd zUed?T;H-fY#4}<Gsg=QMccDf5A=SJ{K1fzYKqZ*3~)~ zrJ2sUp?+i*nzY+V)Wn-dFQ0&i0XTF}&_LlkGp(eD$dr^w)3eKC@tZ>WlNb6Gvb8;nIDMH6oqpdBd!@ zS?`3_bybfq&lk~j2ixW|U5sy|FOiKo{sU7VBj$=y95O%pVq)$P&W6I#A8W(&QBvE8 z8qe$I!-yqpoXYm0>fw)v*x0j1=K{9=^e6)N`BkFDl7DAnzIm9e{y}m(cnaQT{c&Sj zp{DJX^I3s-CdH}fcvPsEoVc}}xjhDl@YG9or;ACsZdR~yCmEj)6-kz3hBr{{y12j@ zOJ^0W)D42b#n`JCOuvSz=ZGE&@8>j#qHKyCMJwl3_w!VAGT{k~2u#E`;G+hKK-Bs)N$>A^ zbN^0}eJw~F8e(~q6;fef)Or_@l`~h)<|2xORmd@G5u+m+1_+7aPfzYndu?zcIQb5| zB!H|5&vguW`DL#)P`%*g!yqtpv7-RCEI20{6DmW(AYMz4IPV0MQxVux|tImvLz<4OXs2C8s`B%H{Z4w<*AH@&LtyX(? zn&xr$23aphL17NEZMCT8SSj&HbFyzuTEY!4*LO(s^~82p+iUl7cGSM;Wh2nl%r|}J z{OZbFZdN=`Z&ON|=r5$b?Xp#U$A`xeSIdKNr`(Q*Vt33x#$+kdf3CY`dIh1Dq+Nb=Bx4M@-!ryF8s5bqeK{c> zTKr*+713Np#ZwQ~yLg6-t zT^T=nk&|#r!1QfpCgLz2Fx|_o*jQO1D?34gmMC-hCvlsC;`fO;0ub=bit~_8jO_LP zX+-+JtM1+J9gD}E0mr+qUWwvWemwSkx9Q+9opsW;X!>zE#yzuKFQD<-g{o`jgi5~j zEc0K)JnL-J2H_lGfq8RBe0B04Z^}Z|m_D_a&H0sXvrk@dqU#eF7>JV2)EC|O(R)YS z`B2HGfTve3vg{Zk#MZ|kEqW0(^tDNvkp2X+Kr$ zOjy5Z3u~_H+Mm6pUSN+zOAz#VE?X6*Y(>l*UekWGo7}G-+$P`Hq8&rziz^mu9ScFb(~3Pjcm57yWFe~8Lcu9QkJ z+)}0AyOMik+lMij`9s)s)YgN8F3_gs-okSU)75@9go`+4Tx)c<4ab=i)<3v@8(i?%!jX@vl|dRh?qw7EjbP1|G2Pa znQ{}u>ATU8DLp4r8$?-rud^R(FFI(1ot5g}m!YS&Upb<*3cxzl4yI0vbnAP}ipF3K zO%(TheMt&-Jpj+QoV2*Xhsw*_o3cmT#@=2Yih?q;RJ7avz_8y2%`DjD39(~eqvUzs zGGHsG2;YLHqR5*jhlhtqzRy<;HWO#mhZ-8hz$NIvg%#J%L@^Itn@vp*Uz?ipKFDb{ zdZSy2sBzt(s8p(kX%{wXlecV{$RgVBQV^4qW5LNwp*bs#X;qMtlAQs-De!Q@SE@R61(8E zSX^}5^~Fu8*NgD0jXKe#HoZKVrag=p>#_;Ru9W<$7c~Wqx5Q@V>zUU6tR5)f9JWo* zNWSagXT6hCdXwTR`IYIc%0QVTl0m&A@t(v8Kp!ZpJJTFQy&wjq|zQt-Q`Vr>s8rL z^Hiq#zy1X?UH7UChKzS=vRU_MtkrFu#T!TU8Sy;K{yVG8U;eZt8}^bd&=h2uzM_RB zl|e&NjE*ofHWF1C837JVba2!Gqs7do7YI~y^RiagXrhdY!~mwC{bV5tfB(6;xi@f0 zSm35Y{5ACN@nCwHq#SZQ?QO4V+~@H;1WW;$6%}NBl;s&Bv~U1SAj%UtG5Xrf3~8#% z%7085V}uPC7QpqgpzFLP)Dd7?a?4bm02p|mF17Dnuy->ATy`=XWc*~g16Jju4Zi2O z23f`MaN7ksd(0C7`kzJ$@cgT(sX>&7olS*5|KAwlzUX0lYyP+)N=8sKmI=7alwD~p zrMH;=Rc#Hg7Hw?`a$K}0oLmf%<_d^DKCfBm%GqvdkNMe(u69Ocdo`ebkiQo*WnQ#) zx$|^{IVel#oxiRA8#OvZ9KtZp26m~?oS$~GwPv|ry4o8}gl4mg+Ga~~2_GdTbnZ3H zyYDWiA3e$*Fxm>r8}+_&{XTB7$vrkzIP~mY zNa&Vv)H^D*^NQn$(s!&fU?@}Zipewu1X`HskQWKx4>xeH(q7o8h(_<|_;T=(^tjbz`%1*27jvs_?Uer9B;Wb!K z%@N#e^bm4hzkcPClDj;LV=gHv>9+grdH=GfE3ua^0$>6EDNR@-Yyv4PGcV7wwSvne zySkbZF0U*rJb5DY%&aWR<0{gy$Izv2sx02!*@+t3Lg|Ru)M2}K4=ygc;T1$r4?eh$ z)$bv+WCb-?loL?`9yTR$54aFG7;VMU+u4zfA?ovDw&|M z6>@OUSD5X~1vp+{@gshkOGrpSyA9Q$dyj{HA4oCq8vrS$U4iJ^b3Ob=XDu3IL+Meeilx@V3N8MxDlwnjg19e~^$b;^NU>dl%~$Q%eVH`|;tc z{uAq8KG-5A-uL3!)TFH~vLclpmp0e7Z18JQeWc`huPJ3tzn5xjqkp>nemCXM4_?Wm zU)%ccnJteF=bTh%uiVZ!!u8INKCG_<`FE$IaeJRn*j2Ld+-$cx>&-)aX>ZPdBu->C z_ARn7+#ZIY37fK2@o)E@B_25wl+aGEo8N1$xIt7ZyV`&M2Fh5fXX2dkbcKm@)3R}z z_wA#hBMhe>o$P;d*Wc8>Px}@La1)5Fy^D#-F}-dmQ-W!>G%P!odpdY@O;(UJGW=PH+ar3bnrt;)R~|K(NU@!Wq6 zhQ7!nPnZeZ+#bLtU5;};Djp6Kkj$dlBR(@=BWqCA3)U+0sBVU~NI!XUlgZc#=2Gx> z7Q1cfj;~MwWS9^XVL98bC2)6Y8+ZoqefI%x0U#)N_S4|%#Z2yz(;WJpmW_B~Y00J# zNAnbIH3Lk^!0^Gu3<`J}kqJI05dT1j3zXaju7|BJjI^eyw6P00P;Jj%)7NZz;==>9?b5l>(!bsV#! z=uf;I+Kz{&N@6HYJn{1vx2eUWZq}c?CaR#$ufP48bxb{_F>ciG6Cs*>L`EELdKt`A&x(jVar;a*k%( z`-IyZRmWH|0~3*51+`_g7Mq2^p?_8?CWJbdJQg-FXxP`!^@Xv~J!}!0-^0Rrlomg4 zQ=;TOM1NtQ{-v%~ye~7bw)ao4+Y)1^aB@-b+hvANX+s&0{KEL`x*P){n#A|wRElny z(nl+8`Bn&2zr^@M=`x#`8&@o#B(Z>n?v5g?pB^P2WH!L34VNQCKOlau+6A4lhC_#Y z)tBcNZb)FSQ#B3j5*lS=w%ouUY%^AZ0cuBCZ`QCC+()7Ce)OeZwgWxUI#%d56V< z7KsKw5-#rUkZq1G_S|v%z8->{oOO7A8S%_kCJ-85j?vyOe%VPr*ZzWV{zKkzl!8s8 zu2v}4)v<)Zq#O1p&aEPHoZZe6OW}hvv+v5`Md4daiyDgfTJ_~<@}=R;X16?EYu!1j zJ7Zu8Jpmc#LOnI0oy*^hx#Hgo{R=iL{41jBP6eBtZH@UDZl4IOge$_}YFF%tqhCis zeGAw1wR;uDVv2DKHmoM&Op`QE$x$BJv@}1MGm%Vj#Q}9&OYg0xykr}e&_GnH8=3TM z>>p;D7rU#rKsPAFmuSIT{4%@nkvVrc@3%J#xLDF99kv|7 z(_f^6;y%mTb{z(y^@%43%-NXUv@^M%HL|w5wp5UK-S$^lQxgxhDP+_l#m9z!J0e=( zJRqsd*d+McXeZ!%1?ETh7riFhBc)iFai9C|k^Y2u;SQR6Dj&HO+VBI$KMzbF2R{0~ z@TD;F$xMU>MmcIYK_*Sz923>|P7%#?*$5RVjC>3iA#ju_e^#-xu}M2P>?ZOZg9-;o zAIzu_Dvq2F5I#pT&C9%y=#xiB$xlzra#F=$24Ax@G(9UY1KJT3?R&&eBR=QzmjK_3&s`ix|bfidA zD%EDExaorn&Qtm8yoSj$hCe++U|ihZtvZN5+rX>0P}ksh-SYG+T1nF0?lZ?FvXH5d z{h|Kxk?SB=R{FpXEpd-+G4a#}Ec{NpEYq;wX<;6FTt9lDm5K*EZK<3(p8NM{>aqz@ z^RV!!$hd~I^_0bJXdcx1O1#sPu;EbtuufHmdDnDOPkhQ|kFWIs4M!q9o`~Vo;Jb#t zL6yBZ(s{#orUz-g=_lVb_9WxCKYbllNFZ>;HuKUhDdYvSVy3L!xGJJ8-cKyaNkkAk z=+KokqQo&dQBSAFwoK8^qBGcAy;7+mzS1@U&+EACkj{&O z-Cm*uLiBf)FhuN(eRC=9Go$;jM`r#dJbdblyM4V=d9u9HkbLdR)_<~>jYYIHp{?Qh zQY!#|ZD&sNSz5oF^HgRL=cy(77(u+jmCrinNVgXnmfOpKpvRH^zC}3cJ6=@M8Osx_ zc}BWxTZ6{M6s&*e6% zZ`$t8EG~f&0S()k<_aY^P_xc6g*ur6jWK-!m57BBWlec z=_s={yH4R7T>7?JQJ&ZC#@|0-p)kCTATpBa*=EzeO^G36C04t;n1<%Dm{Xs-x%%dV z&f7||zIH%?TGr17F6n8#7fp52p9?w@OUiY)I+q*BYUesHQG-+YF^j_3sn2bAsz~Nm7&;HCgRKYVXLQ5+w1vnnV0UX6W9R( znvYAKP<;4rjWC4A7jnWkV0CL@jmi0;qsh1!YO1aGd}qP{GcJCy+hXFU7OBkxl}_k) zV&9E4o!5u_cfS5)C{oCdu}pW0PEYo2VPqnH%`Tv-<^qGcI&tU5v9t7Dt%ho}Yq272>Mf_v?k?cw>k9P_zalb;NJ zC7xRJXzgF^Wn$K`O;g(99&zYf1T>x<4G}EdvikuW`8gJNeN~Ob226dbPINvYvEgh$ zr4_kX;q-z-{8oJAhlsRRzL|;hK%oPdSA%1zC+0_%Ot@6;v9t~8^*H`X!h{re=(f42 z&(YkI_k~?T2s*1icraGkc$GfF|4LUbL4I%HQN``vz}T>wZ-IN(W=MY{( z)`LTpV#Ln5D$>sY8|4y(pTT?icu733P)~d$IagSq4YWOm-hA>bf?3h$^6;;PE$z9x zn?KKMalSnGkM)m?gg_Mp{2RbQ1HAsvZO7iMNY*4&LFj&+JN3YjIip5dSzdnhGv{dR zOz?j<-;#EBZ;7(9$cZHTBH|HVOdGshe!rT>u>+Nh7n+$Yrg2|EG7sk@J&HQJeQOK36r%FE zB}3?2CGlWlAIUYx$(3ZhK!z`aYkNmCM{^mb*D|t-{BasV#T(t$Ro8QtS)yFk`>ZIM zv0Ykqbm-00ErvekcwY%zB`iNW-fAZ$zWV(nVG3jV{cf(xVu{#~xnu3)tgU#fn6>Qy z;hI_Aiw9;bt&?-ts&UN4KiTPVV|)XYI1!JwIAR!R5*slbRnxGG5*V7>oQ=k=!ci>{ z9zo+@M@^k3r`#?RkE{s_>pj&s@{AiRd&+LXA`p*w8B)4we;7YJ|R9lB*R8~=O zhtKJ?^mC>6sj0TShF)N#S5xbA#HnZl1rgqL&2seFvwEyiCtP*k;zckX+?yzFE9!Sxajw)Krg$OmlxtLk+YDoU|%^n6FwO--Ymq_ z^SdJWJCU1o<7xEvsH6$nrpNLWdcJ_JkK-A8MQS}}lqw-XL@?4q7v}lFh^a`oJrWcC zYOk$sT-6`bcnwj#JJG+eTT=e6u-P>|`~lNPFDXRri5it>Ial1Xr67>td~^9Q*Su@3#g1Pg4XaZu3}(GDBwz4TDg`9~H{uV%{01I{H8c zo_=0Z*3ZW?e5${uDsanR`clqG8e?4;Ug&r4W7jOu&|2NSa@nGY9-{JI3K!PDV6-C` z!Dyx0GI2Fx{!w{gnqFS;Tv*#Mz*92ITXFrXv&d&I3;@6Z`_)OpD5DdoVGHeIcN4#bpn6sKM(=ob>KO6rR z{AbifJtbJEZ)1d~7azFadANy77(h+sb&j5i zTS#8q>CCGmaEy)eCh5l8SKvd;=0|{^S@Qin& z<6vQFDfq8}chm?=QVXx^x@N>VT|#_(W=;;)-d>h>V{|YuXsc>!9Al#$w3~yP=~ZqeAu( zFOUPOaO|_dC3~N!K2?Jdxtw;8Yc~B3Z`9SqNDY+WnQ-=9bz(YK31uq|u~=nIPl8kTbCD%hE0n)=RZOlkg5lwOTIhQJOjmLHu?y ziRiI3cQQAByYEezS%&JZN5Xlm1ik*~$5@D`N5!M|s3$V{3Vu{Uh03-2cqmpObp<_E zHL!(h3XKosvE>x;UGIn*{5Ge2DG6F^5%F$U zdT}A`@y`AMv7^v!zkY9VA3ZPu-=d(v2Hr))Rw;-cJN3tO3oo|8b_aIz^4us{kOKkm zi5OC_6S#N#=52CvJ+7@V|<)~0|R#Z_5h6D!OG2J@ny$2D~5P2jcjp#vw z?m_=>bo^G3A%_O;0;J)lTe<5fq>2O}kbq2n49o&NvQ=_a6jD-BP&LVXeY@}S^OJzq z13ftvqmp{My1T$!<2Rs1Zu?{-$TITtJ0r_`kRvX5DopHtiEF^_*~!@%!sciXyce~c zT96S9$h1dA1Sd5%Hnx>iDgM8vNkJZQ?v0_dUmMb6W&(czVfS7a`@5nqN?zkYV`-Ug z*NdyE0v(M1n2k?Afl*?2eF@ED^Hq2`ol3A zu6SRnE`x6ExMlyqFAq;=TR^Qq=lT_EUS(ii*tQ@=FJsOvxS)1NbG}`qU{|^IHk0(^ zZO|C~tNmyQ!MVU$AC#m{6BwM3`EB8REP2-4dR%HMjhm;_LP}4YpxVp@^+odj+YZM( zi|yPaA>w>e^Dn%=*%qefEsaQ+xL>j;65AH4@*G|uN(%zsEBTwPa`Z6>?_1wZ1~~_Oiy@~8O<^)b8=W?Ziu5LJ7bBG{KSXIOCmhAe+-u^!FQlz5F4e+f|1j}opHuT^;rRT&DZ?ztn4o zjmb+kr?D?=zCdlt%J|@D*D<(DG$T@~+FyY1C%A|dygtQDP_k}bDB4@BQyje>mq{d1 zi79XSc>|mb{yP#8Ig&G>52}f8{2<=+@sprSO+|kY5lj$;`qR`uqH$?QF2+wilC<>n z#AMN`jyVMsm)Yi=;I*5W>C|;UF9A-SsRSE9& z=$3ba#D3dR>byNgwJCiPoxru-UNb1BJ~|e7W;eKVxjro>HM;bhs_5WEYxAC<-$TNZ z5A!+IgmY`}G#$2g)ywY~6>aKT^DxvqE+%Pu$qP58I^}%Bf+2q!JPRRx-TwpdzTUg}E9#7c+la_C36hk(yLl7GZ8F+V~%mXauuKMhR z`2_`ljj?p3jt8ao@(q2)loRx9MU+;i$uhlRr&yYiGy4KcogK z;1yKqCXRP3a`W>8fg{r<^%Ii6@UNn+-1!W8Uj(`g^m6fxVcFQQK6I@7ud{i-YsE)KM1!y)^fTQ8pE8c&TeN?4%^Ss~ zJ5_|RI@#5|5r1V(-5}{sD;jiz{|;)=PC3@zLEvp{&v+6Se_H`J7n6TjQu7nIzC!ub zIf(gCa-loj1wZ>YgX8afSM!b;px{CDlh1sWjL0^?xyNn!OQvh44PJ$q(nKC>YF$OH zeWknjWj3ev&42JeeP*BDtLmS1sN)bNH?`A<8TfI@5>JF(VQ4oZx%kLu{oWc8=3D10w$dM4r@k*daXiL| z5!9LXuCQAqblu8Nf5nhzoI`>(wzajcQFf$J=s@Es?LeHE&Ng%}Vd1!4)%f)9%)Hf0 ziMRR$#+xcq9}QxkN_4Cl#cKmR+_(At`os_WaDrjp4-3)1PEAA~I9K(1;$f0V=VOOr zWaW!jeX{HgidU}36#P-4H&W{@j2+l?d*yw=%+E?~={)NCQSJ{NU$hE1tpbd=kg1&> zdq0zY;%h%+m|dSeLrYQy$8vlN_?^V*`tFR?z#W5)jr~S}x#V|o60TyLPPNlrXoWN0 z^M$k{fCZu=JOKP`6KjO67zZ)8%BmtOE~LGM^En|nAc(>qFWjMnIa-gIB2)by*r$>8 zv`EPh4v)vx=?WuR1ZTqzn8{pRT{B8b2IkKjXoqus&Gihv8m zLaub$j;H92I=Z?{CLh784f!hpyb4kE{{5FeVsPT=yf=Au19|N1>>ONOX)8C9vI7~9 z`Tpk=^lQH0{D)qle?mtUR6NT!D1n`jAQ9srUn#boRrCXc(07-~ukoMo_~MfjQL)*q zcCFb<`S=#S&Q1IU?x?a~?32ewl}JIl@O=y+-HYg%!W5hvF+p^xRM(v|5efX2SugpA zzP*hye?&I>;cGjC>Da6q_jcW6OoK@XdI<9n+8vdf>{>?ww1hLpsIx zU924Kx~mc8@;#P`PzGm3pH7SvqA&Q3Nkbyrq66<(kNNDe^C2md-z+SbKhq?HFGpEO zWxcA}JTf}}WM;bIlJB*Ls7~iy`S)|z#7+{AIV?D%S@`O=SzSsMfe%@EPU~TG1jIvx z)Ro*0d2fcK6mZk`A2H|2$LNGwpDEvpw zO2@GA@MuaOf`^uXR#brNg_C>?T^rO_Sz6mrftw19F*TxA|GY$tHF>^*#+;*?T9W8r zQVr^i&&gb9S=bLC2mlZODz}0S)bO!jkSfCPc~XS#>}oU8blJ}wu; zl2Wde%s6kot7o@DQ&=p7H_H8#eU~ccW~HNGjMZMXQlaDRFi?C;u5_gQE>t#`^|-ac`@5N{Rnyi?FZ z*>=;)^LqG50DbfT$D692E}hJvRUTvQBg2SBy2FL*ywB)AIo6b(gPTo#_`ax*N;Lw0 zMQgoP((fK0d1&?Lhqw~uigO*qa&XclLc;=IB6szhnS(Pn-RG@n~AGSVcI!r(se6ec5J@O5OY;hdmrC-nYy>xEBjSKqB+~|u|6G3_1WwrlbLD} zZ+;5n?VwnFUkp*S@{Z&z2RiJ)>AHmVw2jpfjZ&Sckbh*7oYY{vV$D`w|@A2a9%4V^mln;SBKIF!1(b!~fmCrL zrd-N`?$D3XzS8F@)rXw#$j#Xu7IFm z)Y&8~auI!ClAj=cs*E_Q$WlJ0l;5?XhAp$zYr-p22$!>@D;POAR|ZnxC>U+_;ixj5}IBM z90uNLC^LOtM2tthl~ZXjNpx{FHy)+P%E#P9DdOR}&CQv5QwYl}x#N;J7E&Zz$xK!H zy0|Dh2~8xQ%o4q*KhodM!kuyWRe} zf_QLcU}m=cVg8rR><79FPN>aGfAlIQvuq#95SBA$y<50R$a}~FYlD>B`-ln8m8a7x zehiU0CM(O`GA$%an)Y%;shFSfID|&fQf-tB1{s0trW0+fPmvSCvmboKN&(#n|e; z9$Y^h{gfPY%+Hlko?}0O)2r%XI(}Q3a5sy_InL!K(qD1EL|_~Y%6K6MxZ5gEM8d`N zc$@p{oCkT8ne^muUApmA(}t=<%Zurb+%fs=y#HoaHLx|fLP=+>dNk8H@lop>lk|LO zmk|HNpq`T4Vbe=PL&9tgOGm;(vHr2KFbHgO=v73Hc$)R5gn`7IJ8U&xLaoC4>K8gp z3{h)Tn!uL?R4O;O7iX8HLa6xLp~NkE`WSd#@?z}E1p)8~_!-Sh(bM6DaLuDj^Uyuy;N}k1=c@E5 z9nyPI>&6Ks9Wdom)N?`RDXXBMD^f5tr>cqqewrfn5=_m^ejyMcBga7c`1MRpqRm5) z7zLv05PnJ6^W0(i9?$pR13KU6xl(-9O%Ohswz?Um)RoqlH99?z-Sp3p7HRpHhQlds zr{QxtL{(R98T;I(5+#ZBQ0Lsuu;m3~OoYF^{<~{E30w%NOAYJ)8ZW!nXmxYXV3K^| zgWeay(d6wf_RgICf~G`EB>sESyD4)+lgChz^?V28Ju}L#$FQk*0!YUKT{3J9_9G;-kl>G0R3CPJz znn$)y20QpIwx0f)m?p62Hh6;u+H~YY{|`Ia49PsgPI;7ro-dQs*H`-{Q`aah4$jBC z{`KN3#;s~T#c+SnMfc!>If6EwZE;*nlb!1s!d6&yx3YM1lJP-+0|_1`gP&df@5E2i z`TxEsOixY(JIQvvJAMi$D^{V^FIgxc*9az@@$m}2I&FOzQU8!Q`o=VfE~5EH35_}EX?1Uo|=k+0OxqH z49dOx_gi4v{_TPBYbfs-BcMxp)OS3)GvHi+Xak!+GO3CQM^Gq{`W|~Qps^yLk~;0k zGvt?9X|c=N0I#V-!pDzI?d_otaEs@DcXkFA6l^5svviw+x*v0>H^`P>+TJ zOSB3gs*AB8?GBLyfV+UpcHoNk@4!GH6uc4r$1CJ~A6P^Hr7@qJxVHQCU!zwi_Zx#$ z0&7*<7Ay=)3U+5A6oatO0Xyar*mT|}nJl1EA3I5E)fLm4|LbZ7`DN&$1D3*33V6m1 zVUyhW@c)Br*5=fLT(`!XXqLVCnEOZj{9BxR2|{zlUFmZ@foQ9g0|zlGMZ0gnZJmB5 z?lH{qJ@p@%Ds69YXeGMgmN!A)l^ssjoz@~ZK2)!**RUoreTj8%0euv^#87nC+rXQN zPV}7iLF!c4q}u}Z6KVoNZaI~fvAb$>&F{lz@dt_66#3c~J+eDTxix>0&!={D?G7KD z&vBJdFB!_2)~pz@Z5)nxx#aDnkUomT{H>XDZ$UpE-Oa~K7AL8OXv-?!{@X`-f;^)l zpO4In`nlf`om*mi7tKt$+naASnSZ4(cen1z3z>L6rqHRx885;nV|kK0<|V2T@m)1P z*T(W0*vfQBhIVH8op3s{J8& zR{{Ow?A)7hO@g??!?g~gU1o7{?5(E>J!UO4GxRTBbPG_^bwU}8!^O$oQ(HZ--+(a! zeErC+%-Gl%bPm0X{3_KC=Lrj4nt?UcN>H9vG?ie+@0@dgKR4=kPsV>i!)0SNc=E6- z2@DKGd`z|Hg25)Ypg_jjx`5JJFB%XbK8M5FStY9jYc30S*4h6fWim-hrp2;a+W(31KmY%+ zFb1tkqR;Hh*B$Foh&CEJx1O=cnYS|y-^()UsnvXHu>8;Fm>27<9(&XxN8@>+e;=Bc zcqZ~L6BH`*$+>-8iR|g?Q0fC(Gf!|%wu29M9ZFi{@3QVbL}2~i_|7|S7MRLfaaSrh zCvbUAs&OVln{FnAPL}(DlpwC*mT$D%&m%oXMcR+`Ls-ray6}DIeD5BksQ-1o!R||q z^s|uOiRNdoHT8JlOQ@A{a?`R0p)%yb@qi8|^=+wA`Y--l&lr}c4Mz9LLz}|n%Wpc8 zb}=qmp`ch_WH}o5ljv-dTkeG>BpCz+)&?*;X3X`f%q_0lSR4+8s^(b`K-#CEQiD&q zbSR_YOe9KW^q|E~9HLHk0+kQD7v_T5I)wk7w0Q7Hx{c1Z7vhoQomMZQGZDJUlurJv z9Li8~UNKS#?JP@Ny7%?3>bIXS*aaWTy)i8|%d6z;@#MqC^P}tK9}*u{+eBBJn?2;I zcU_DcguEj>$&BZiY9(NE^2b6TQP}Yg(?3~YLNRwdjqu27gX03)Ga!eUrnMM|pkpD) z@f;&b88c6_bF>ZwYQP4W)lJS!Oi)9nGV5kYRc)=w)x~LKL=E_^fCOaHN~L)3_8krm zJUE1r;h{7HSnzSqvO}e$q6&u)lio#@9fZACS63fu5Z8awyM%=Xlx^{G(Rq0v-(`T# znJ5oEFzSH$ptZI2kHhPh!T$amu?lZNXp&n-n#RF^4KF~-q@O@zN8;F{*paRYUf8B6 zWFH)-Q6g1C2vsr0Dp;f=B_{~2dwP1psVwUgx=l}?&MQ=2pYT7)(220Le3dvp^@P}| zaNI)tS2Jlsyi|8GHR+f9 zBlV>u=KEdErlouBf~C7VQMe8=Pa{C0ex=tYvf9zip~;vWn!v(=(C%mqxR4{NFq?q%szy*Wa}w1m~D24Wzedx`!B{4{x-e7cA` z*pn;tL4y(gK{M?=A#d%|ShLcYn;9?J7SM0BR^2NyS;nm6wZx(6nVeBbT3knKe*ffS zso7{}8UDg8)ymXJId1t+DWXCNrf7x}BKH!?7uI~SioM$1t2CeCawSKFvLY5X7xZ?O zJ72$(PaNK0Id~iMZoE4`qmnFm>R^Jmn*yd_MPf_*=kAl=WE4p!U%W+eL-mqsCkPU3&4`XKVFby#RCX;sfy>-tquC0yDTL4X^ zq}tn8npwj4)xdL!RPM>ejfWg$Ow7!0_qt`=-QB@+7rFkbwyf+nR8X4iE7ReF8_Q!o zFNdPQ1Ac7K()-Ny#qod=^PJ~#&LGl43cs$5Hkl1P4X~FB#lW?jiJXW-Mo$2o01@}d zp0MPVZ*_G(t)kFnihj|X9^--%IC@IHjjnuWimez@5{^uJ{*AIFR=2TV*<7>rFq81XQ$vEhJ; z+|;HQbfJTzqs-jg->^QE2e0Hqv;#w?|7khfPt$rvgZ!6MFmV<_SK3*W5do($k6I}W z{^Z+jHMP)h{gOIP3Dzi-t!u>c^D-r&OB1|BQ*l`E>ic`Gd)Dq93>W4;r@}RUmclw4%EoQ zMr0!{HdDipM}&)vE7NtFOGS|CllHv@(IE8W)P~5NuF{M~S@F+1q~Te(bS;gnoFSp3 z7k@Y9`S^t)PYwA12%b9MM>>Fg#3f0J4N`E2r(YPk_AevgK|>5mN~t!%`X zwmlZB52m6NR`;`5@vH9eOP%im96S;i4I~fbZmzSdrOW}*-#%og-Rj!2pfpt@#rcd-^%7D)lS=WWw3L~Hqe&c(7#5=A( z0^ecCM3=*eJ{HwDt8yt})Q$-nW@Q5e6STW18pR4DAUi2a(+Dh@RjS?nt2 zwrMof*$d5Zetv$DhD>tQc&FJ$&z~a+KTC8nd4opH{c4V1EB;ud^vxTcAK;(7?B0A; zIlP8H>UKn>)mV-O^8?X-)yZXk(#iT-`L6S;k#CC$;aWNEhW_HgjoYFaQK~U(b5|!< zZTPunkf{s4o_CP>)_7!-yJ$6^B3;qoO3li4;=>76ACgcodg&_r%Oxm!ce)@}? zbbBRB!sTfZrquFs%fq-tlH2cO2&LW#k@bXzPK~0;kMH8)6+an`1Hv=L@9R)RE4xT;x4Y>e=DXVZ^l=#(N&a}NB!o@ zhBp;5k`dzo>nZ5(V-OZj++!)s%gfu{-!~S}O8_AQ10zZYosEkt1n$8teACbYFhPL? zjJUjb!9lj%mrhu$)4f`kg%bj@$j6T#dA1AElag??n z1L;#;2i7h~mO^!Pb1&+#Aro>$L1y<1`W*gEMhZ}9!0Z$75CzImbYpDqf%OndDqmfA zVWI$qIwXs!wC_9%KjcEA=)e06C&H(k_U#{ocCyMQMhD0H5Vs&RC!0?_OaMk=aG23I`RBPD~z*C9!u<@{i4x?oCwWxZ$0 zv{$BRH@-aQvw>rQ_xaW}C)2BtoZ=JrTFg`@R|2C<-ft4=28OEx+m|f9hXoTU>NA!R zkGa(@svK!0UzFo9s>YY{%oPbI&e@D#Uug1QzS!muO-a^zPIz-XlrRL3wQ6F2jZ?2- z=qRdV?_Q{E*@RRvHd%ZXp)Td&>L=mBIJu3KD$6#(r+g<<2_w2T@wQKZFrX0k`XHkc zoF{*Oyp(|?E|cUCl0?vzz%38SpRA*@Ecll0hHcDD1?NS1`4Fw$)V}S)^_Op7P4DG-oj$_U7!;Pi_n7w zhc)wXG(h#W*x%(EN+`dtx~v^p^>pm0S`h z^p#I`xu}Gsq#us;%qiJvc~24P?p~#<^WGXs!7SUW?N>($s*oAmjCVc z^*Hyh>&Ap~`MufLLKsY5J>WX=86Y`%*?Lo7(jc8$!2ahgvNr{Z40EgQCmZv+@w%qvbG<}I}JX$2lX(=rA;0dHH6|6{`2)mu?I?p|1F zU8A9x*~PnMf4otTdVJ~T+=dWZH(v_<_^mv#p>xw-4-0*aQ1|bJzLd|hTjg0zhojgH z-{~5!Aga?XF=eg-J5|Jp;Qb=!OW$|LUs?6;4SPO7=dj9Z*o^LapO@ET!r7rt51}Cc zNmfEy;sX2jvX(|szC3;YZk;awPoMc11HzFFz*469&U~BIL1QlRRBDgRzcfl~ zgUIol`PqGS7J5mF0X6V|Lf$(oa~r64n5|`dcQ`rmK{_z8k%WaPNTtyV=x`B1qJI|$ zJw61cUuZyv|3!uy%fRg>?6J$><8YaJs`C3Q00E+Gwpnb`WzbDpq6I$fTqFyLv}}RZwS!EKC*pF{>tjEu1urmHLOYKibC|~W8TEqj|)AU^y*o{iZ8zL7pV_XMl`DFzcaz5Z@H7s zQzW-5X{Xh(x1JrO<2ip{-=5ztaG9&5#r)Y$3szpiEPGj-&EGbbW5;hx*m%r>L`I4l zp(j-2x3j}*I38j1#x!7kx9+L^GVmJ-=5*5&Bf*ei%lK&L@y^TQqYZgsFM zN0P8A3(Yiq0vj+9dUNjOFTl$}r~NH@DZemmup~jHE=-XS`hmc?th98%i;cg3|F#Sc ze&Bry4&|>oIZSu%psJF6e@)E>U?3#a#q@4{g_BGkM0?EBeM6?F#q_>W;$Z@!fX7S1 z+R{=Q*e!rN`&A{OCG}rkH&j{jWxd#jTzU&c%e!?e4IRw(Cy}Tj;A8>HD6+@%K7epx z(*i17BdX&)=&@=2Kc3zKs>~saej*}kV)l(CjhgX^5B=5p& zx$tG+SZ1g|Q8Sw^bi^xQ9Dyn6w-oVa*s!%k;80Y8QiMp!+s6F->@xjCQIe7af3a&A z4J*)EI`W<-eSEQnL4=iRRi0O{ymfN^p6!G08r%JXAgsvrD*`y$2-Axm-D}kNJdsXE zjsBkc0SGpdarRmAdI=^n0Me`W&{*S|xiL#Bt1Io>W*W+7b*Jqx;5h9%Q5lQZz^=y`~mu@28n z-lfRJs>^Il^Qni)K2|r#>h|=zKY@`aL&?Zc81(UpLLPt843FYhOI)WvAI)PnJOF_f z(iTS2Wj7#oQ0^M~LGpvEPgcQp)y9%F8*i>cJ*e*4xw-setA%h$YlH48DB_9gyZv4T z3R3#^U03&fz|Ukp68Ujp)dGx`5Sy4&fr@w_@MQJT(E{%t zoY*c4$9^<)2*8UByLWA{gpx@hGgLkhU0loy5j5KeMHx^(iuPef_50q1S0#Fy`b6TL zN)EQ{zZ5vQQ&3OInocY%a8hoWi}jq}?+aSsQ}1NiujS7#naa8yk(!;*2X#9m zeJ=K$!>6R?3u9Y(I!qBMarV6IE65hPcaB58E=V?w*EocpQqeNe_dhaDb&`q-_uaw$ z_|ENzSnj4JMstE<%ei)e-OiCnw+aEO7f-K)iNd;0mGPuOXY~2k{`x6r0Ucc&BD13~ zoh!I0ht)nlIHcfpBf#+KT zL>M4cTC9(JAt(6o<>*bfWn8!AhX=tIHFIn*QfdJK6%FFlv-I)vgM=aT9h$?*pu1uz zF+;t*z`6pyP;4FIWim@U`$N(bUV)I$pFiuR(TBBQz*E+_iM|fPPJIuWC*c_ps7faT zy%fqPVdPqFeD~4y_bM%`fBHUZ@FZG*w2wd_OqWsM1%UTy3Do|UO#I@^9Si~gD9rQ_ z&=%PFRUV4VGe+%)e*Sdp@_c%S25pK)c{V}InrsHbkbC7HeQa}G?RdEf!~dH=$O6`I z-Q}*#BKM(KU~gfsnMlLHq}q`8nAAUgl>mJ^Y|PQLqawJ!`yplwI)oYSUjw z-k|yf66YGG&}C8&M07ZjQYu}s(%0sg5t}%6l2!oxplVK<^0=H7_oFn=eEwB`xc|QP zmrj<<=i=~L=|fps-R7oqeFtuq^S?@5Qb)L?qtwLrxl?`_oAcL6eh<3cZuqSHIE~Gr zd2(2Mx3%M(I_*eVNjTua24;QQH%eonwg)&JVjME9?zvIVj^1U;YB?U2Mo|Zg6FSz0 z$$a>vlRq!@HCQ}&lfDi@0stBix~##!TeZ`^_lCbj*RS{0Ey3ELie-w<@cf0)8>O`3r-92rBbZzNcJ5?E3!(}#4gGk>Sb>dM0eU{k45Ln!-9J7 z8DoZ}Y}(0N8dQgf-v^x>|98@{8DN==wOb3Y>Hid>Qy^&J^bh% zT`)RRyFb6X&=zG~z#<0ky@?U~j6HKuDQz7cEqhI>=hPR}WtClAc)d1JA^ZCajJ^hx z&^86b^Yr}u*YSV1U+8iv1_VeH841jgCzHbebBH$jbSZv=%+Cq%Q0U9IZ*g(K?1M91 zbI?G`ng`BTuysYHFos_5r6n8qBpUXX^9$`O4>V`R@SDf0(!bmC@T!DI%R&t)DIpGQA|uv(&oOd6SCo(ttuXoHG=p^!yn>C*4tgtdnKw!Bew zA$z|i{=+xwM67@*jz!}%esNq14*1t{iiCc5JsX;i8E+H~&HN|jvhw~Rg^%yVeN^N& z&x2hPEJ$bj{OW12B^Q(tQ6NM_b(oR1be=cfMp24T2^nJgQ8)M;zH++7>l_+gh!Gs% z&TUSWEPu~widqR@kJXK!{3&%kuWx?|upHM2Ka>z)4XJM{yL`pNSgsJ%8vCtd z^AYvtd5Y;lDB3swOzTxFuaS&(U|L)+2LTsJ+VhoC?mYhZKJEpL=bu0LMiOhpleKPU zYN4E_O*M-)T1SsOvPFg-|6;lAiW_+y4@sAr`dm`Vs)sTaJ6BAtb7D+tp+edCHKnhptmE%;!dD2o12c$xd?HsC5PCBA@Hv!NG`Us*>+XupQN5{tihbP+llY|YaSoF950582&4v^*9AI=Ibq*qlP zRi)j11nkmR@PY*&95ViIZ_C64J=ozMSOi{!)DGNwwcxV(;>AKC?`eVGhi|DX%gfR{ ziE}h?Yy{K=lu?EBRMwN^+>X%s2Eqa#|LV+h!M6YCdE2atlT6^KIP>5m+nD`Jt8iF| zpeEY8VC&hfK3&!8@M8FWtEly#OQWp2^39qXlGLSv;2jV8u#c6RTtW^{7te*^i__Ih z{FM$h({KBQVJg{QLG!76PR@=wI*z_LW1d*lw^(}lr_X4= ztaYwVk;@rgJU_eND|$w#;J8|f^0^~{`}yi6o<(ul2RnTMD>2bbvnx1uZ=g|w?? z2jm-X-t_C_d2}X~<}&2IuDLN^qR3OSPJ+k8!_`?<+|*%Fcg$AaNFgD_$Y`GBx?YOh z>&%?69sSUc#}d1F6co|p_Fy!C!0%1!z7<6xlKfPrX<*ubfBNYpCD=bqTO(X1Qt{94 ze^Jr=lCICRtIOIR``F9>!6S)ZA9)8c7eAoT&1`JEyLvr2 zifzCYZfkGPFpk%j3uZ?JcXt7>uGw@>T5tmW4j!Jde_xtha38O7fWC+oGG8V8$A=tb zBq~nzdt)de5s{Oar#H?=bzm*Q?Gbp~FObMshp+{M1%wDpRJx$fyhqvP3Ix(%IyNKt zK1kK zO(#D{YcA^aC~5V4XX^?09pg_W1XMYJ6Uku3a=EbM?Pux1M)q{>Tvh_PFQy6qx3X3; z`SgS%8A9aOOuGGn-)3=t*XQu7TDLz7^{`=Z?WR8GY<;s}^T<4S^z@yl?)-Ia*b}<) z#uvI?I|dlWg;>*6*87%f&>2T2;cApN=ye6$4XDC^>G-_QuvC^SCHv8MFmev(-0R6{ z1C?Ch^db8z#xiSFk1hWhe@_yK1L|;ig~m%-g2J*{r}a{U*GR$B#$*SRFENtDb;!rZ zT*A=tU(wB*MyG>WS=JMePBL~WW7A&JnKNSYW?X}rQvx>J0kW%8TJEp1Am}B;OXNA6%OY@~zqQ>Y`ann3;`54w6tYTewzc4OA`bE0Nm2C)uSPdi(nq zM+x$s4R%uQju;|qxFYZ&jJT<<;IffT!i5e_@Icq6^Dee{43>ybVxCvvx>q6G8Wj~K z55p)Y0ojf9b%+nlZ*M!h)!wvobd-nrm`;(Q==SVZF0eY$9f~E+Gh&mg`oL{v#$ARK zA)Lhc_w|ix-NId)eB9wVfW~AQXJ?+RiDTHgcXnfJk13G*d6fp6mum<0CLQVX3B0}-$0a>*_Wv9 z>1vDHy~c-eyX_}|?JABMzJAh<#l;C`OPSt?BV86iLX`eldvu(QDiZdP$>Pq8BJz3Y zJzZrm9LXD5Z2BuBcDL>>5|Uv^Q?uyc`|4bNSl6iARFrlnfN)M;^+BVeyW4DsmaTJs*K7gH=o?uApv6`Nj%yQX9$GH@B zkzu@$TQ-H+Jga(n#1f4+Rb*v8W@EAl#_-H<( z>`mEvkM|v`j3hl0zZlOi0!acJe}mN_z;xJ_G0S$_kfS>s>{5wT6iEF%5~?CETpWq{&ZXN*Y9;Q zwh0X}$L7a@qKBG{aTy$>KBu98C-@#6v9%+g5D&m{oTgNR@t3UUm5av(+?-)}s|hGeTlnR5sxq@D4H~Yg}yO{dKqw z5&vBwqu9VOdsp3A!R)iEuxBtM;ZdJIj*#IJ7jB_(Y;25C`CgLGzBTJgFo+Sd$jR@5y!fMz?C}_9 zv*NpURGpE_J=5SrlKQk@OhL(%cTR>lLOz1l9N;vI`7ZX$3+1-OH)AEGE_f}IYs%o5 z+nDH-Q}>0HJKeN=6@p?ieZ~5^S>8O)vt(xvTW=)SI&cyLlHZ4=?K?}mmdnp5aCNdh zB&>PBamAcUPb;U*vRZs!ZvH0A<(qvUXmXhdAScOZ$Z`!=kD*dKEuD66=va;78xk3v zQ^&$s8`3u6>nmfn)_x$P-p*^34PgJ0Y|e*Ee4 zTc-&9Uy+F2*6^{$h)zKj`frtYP_E&M8=x}(AGdJWjaUw<6g%a}B-=k|Y$}(+Bmi1v zp$;5;hZ_D>X;29UW-id2)p)KF;J{lk{gCco(tSHhm_n!?b<{Gx1hXpu{9TVW^(F<_ z6j&)hIfrNrAdeOF-~bF^W(tNMs#(V?J&6Lp{z@>QdHw?rE}0;k4W5iFPo7fUsE7zW zAZSA$*$+3`NL)0Gwulc7aX#}Q_~hgWZ+*6X9|?3_02qQ?FwkVO$wUkG6DXq?9;Sktdj+7o7ZwvH_TVDhWUQ=Kp1YhBzU(l6fgE_~l9Oeeu7Qnj=qRHG0%< zoafpKPz$xRvc`&_2WKpqEy2uYAh*n?1Y7iNaGy5 zJ2`j_DkOgI?GN(*1qmH}+^m~m_8SmCz|)mV~7e{=?R2G1q5jEmx_hFY#_+HucoN1qM0J^e<~^ABcE9n=n6Syc%+2oFw$R zDaNZijkM2DlD9O;j2!|txAso5U+L1*lS*|RY?&4pVT+axsPZuGz)KOPBzGl+=iADH zA190#^E?kZWMq%~Sm-zeE7(2=9X}iUFm*qZjS1?$e_gs0`^1CcKmm)mD z4it5NrMJ6V1|qU7e&6dO29`Raz#a-UPVind-8S?KYlk4?EpBdRFHtI1dW_AfYBCVo z0jr!9STqE7Nj@MQqbq2^ZC0W01C>7_Vq%$)fXtpR8s8{&T~b7$1`QOxXn!ezVmvOR zZwEyc9cx`}ZP;+aKv&R%zt^tPV*M&HBLf3DowAddlZ#6%lEsg}QD~}tEFlXJ_DV5K zEdm1)avKsBH=#Wew7WKVm!m}q{ndSlK_&^pc?HD16Bu)<&pqZ$1lp4=(5?4|^! zA2-Cep~VVS<;3`Z8C$t2!*iLu1^#IgJnRG>BbC$Iq2C@rG8Km{iQcJ7LVI&_6HOC@ zU(iCGIyT+`pB6_3aBZ{y57GC}7P$0lCpK#%2Mp1?hlE{q-JQ|fa5@cfz(pe?HS;S= zsP^{~E8Y2oBZ6Ay$K{ji3De%EwATK@`oWLYj1{YkUJ+8}OA*3oMrq=+M&!3=k*~UC zPX0_Chjj^DZagg*%6ObB{aF>$_p_Tc(+*YNDE5Qn{5;lg`AXQ8`N5Lhutw;J+k_De zgd4^+QFc9FmV$#0m@3xquQ?KWs4r(Zu#)+S54Y0SO=0||;hrWM`MzK|?>Qv+vORzR zek({2$V;HY$C|BaD}S>o3+cWe)9;pMb z3XjY?O|&E{YHN<$q0!}>)UTc-r?|LPEoRvSKhJ%PU#N(m0>9PC!um17W)V}l`qf#1 zuf$98cg*Ti3fiiwk3(m&y4>CKT^&*lJUL#uTpTPl@Ay&R@4w=S)9?yYXT|WqAZCBj z!CX>@!qKtgta_ugcT?th2S@W_Ny`HKc5S9Yv{3Dm|J5d$Ue#uN{${Jc#;t}?;msce zqBPt)kJB(PrHlKqN2n3?f7kyMhxusF!gytmTzEW<^c^(w{wZ zD!U{9y>hcs-$rxE@J|;k%tI zXdsKLBG3y8?k1`fySV8>tk4_;5VS~x0Gtp2uX2EgArDtSbfV(8_XtwBa&lqaR?vv9 z2zRlqmMriHWR{n|jZg2&7<@ z!L;(-$ZpU5t^^AiK-0Ql5@nm#1N#KHPk~_du8|5jgD1OfWP3m!9G<*Y4#Za&qgLQQ z;tqkqyScf!=F_JN1@ke!L!i#rceT86$h zI&QoQF+LfOz(u&%pSt(~NS~(gq<-_hy3h)Vr77vnAs#wjC0^O*(XQ;XfEf(Flz3rr z%HQ&p0^dYrfUvx#kzn;C9tY(8qwMZL z>TS<9n+Mk-91}3?HP*MTC@Edf9mO0zOx;}*n)kE9gpawfW=W)EV}L>ts#%+Q!`jMC zXQ}KUvHj|(=%B`ENy02F(C?qFotLgc(k<#qX2X!#w3&~lCO98?oIXdDqquf) z3<;dVOFY+3r?OdM5Jz62O6iRCa+33mze(^pdx%=^N(jSM=!&q&{c^!$KNO_w?X_{lbsVBeUf*rTCX>$4 zl;(IlbZ6Sf$0t2Kz1gzL+0#>S>!J-76mXLmK%$cK=V-WDQeEBkh_~TIZZ5}v@tSGE z(C0`bvK#V2hA~G+UX#T(iM%F?{{E+u6xpqP(of;1z~Wz6T9PvmOob{u>8kC*P=EN| z1fkDUm;*5p5Mtg$@j;T6{pL(<)6bda{goc*vKt&3k>3#PfK?4k7lJjppTd9`Fd60t zN$CfdX9AQ|R11rXvKxj8&j(hQl5A3Cz)AoUCfmyCI-|oDUW)%Yz=_=|EAhxaozs3Z zc=2PdtGAPlii0uQ>gm{$_Z$;6BM76ourzp;TN3oBS{fgnEA9xczvB0`-;D_z0#0=Yebb~{8l>7^rXl_QIoP`O*c^6!#{X;>u5F+rvxKra=Dua%E zwI_Ltj6JpzC!>hiL~C$pSMva=@MWbtISIjrgp`dTw>Wk5XwB$Kj^>Tla?w-OBHl$r zX)7-!8P3h?BQ5pGJxmivGb=`kbm+*2%(}-t+luRzVsUEmG|hv!5MEI62mzlH?z0U|Z1Hg$WVR|VLg zByJ-9c!wy(F@CDgF7Yl?Xehxl5e|?Re}+f zzd-eSbs1PCegAsxz>mz`wKMlbmy3ib9D&11`;Y-qaisNK^+3aINwvk~fiK=xpHUnf zDTjWBCrk=ej8tTtThGf5O@#gWs5A2ZKCyvo%dfJQtNYi>s9My`vGK3^i}*gAU*8}e zF!lD)*nMGAbJYjy4?iTkXO$EBr6V@EtR`l^x$Mb)zsCK~_qFFf#^AWEcHwwNO%{!| zdN?d2rr^lFsT{jjnu%kML^W4moB*No#^tP*5F6wQ3(;QSmNABOVihAkLyTF<@s-E{ zn&0z+@(5w)Pm|NrfZVd>wsN+!Ye5?g{Es&MWkohW0|?3_=s zpe83X%im50XVupFN;hYsr;o%0Nbj(l38E#sT<9WO;EVbkP1x8`c?AXrW{htDohQ2e z7EBEj5@_`sew>EO!MB0i&#Nk5E)p1HhhXD_0B1*&1z#SYmZm}PV!yso>{ftsc=#{8 z4T5L>Kd{g=A;6-w!HPg`(evrRoCmGO3=PTXjR9X8s)+OpJRvd(+gUgXqtKx9ZOhxh z+y-Y?46}FyF#jT|9PPm>1s@TnMVdIruxcm$!#_y{GJr8bzd9P?t^4 z-AMetJu|VP(Dlu_kYAKIpI#W=s(Xs?C<`~q6IYP;j+<L2F62qnJ0uS1nSN9O}9|{y#qQ=Z5a_+7RYX^y1UqM!**O%e+Yzf z>8Hs*Wg)q$DM;RPui5?%Ei=Fkn;o=K95BOn6e18}#6e=e8Nf~M!bT3@-k@xjE=eC| zL=?0|qI58x@e)b|9kG5W0|AAVII6cHb!V`a3&PSVUuO`QwpZpsA zP%(Q$7w3gJ=BCl+{Q44c8iMzQI7$fGUK*7_ZG}YXajA0DtiJuq@-ZZ(1E^#`3Xu&+BiBos$TgAM@ndrsz^=l>{LW|OAKWy za5QafTcgE%IPfxn1Cis@S2uKR%~t=e#^DFz4}Ib4o92=LCb%F(r?)Lr|#~ljpDxT)5MhKU6Osq zf%mx;W9+^Dne<3op8=M)%k4$&(1lI2SgNi+T1FFiA#up22KNW%l-v$9uEOcUbaAr? zmR$B$v8N_ujFH#x^{~+;hf>8YuH%p0a{gFUc|qp)=A*1p0YcvSbbj+i%!@5idZr`6 zjLdU}f9@~;%Cb1-RPB-;KDQ~sKVz-OE~f<)*9ZDo-3+O$>ZksK-cUO`~XHX$&sj_!V>yHyo}P66p6i~so{g1omi@R zHWB$TRBVKLG%MpPq1w|z+ah~~M^21l$#sKIhC(;X<;u@?q%&Nm@e=+`s z@YZpE?&hg-ugR$zHWl|cvQY3Q6sDp2v`-@Wq~AVh-m8^i`&fLwN2 z#7ZhAzdTrqePDjLKB~AX!|_&zHGc4p;hv8KmtNV6pY99Bra+24nGYk21C)ebx%Cjg z5*&+o3~QbPSB@bC2`4m=u!i|Los9*I3=PrNkjY=^L{e$7fb3jq4#5VeQf6N#7i6Ph zz_32j62x~tO5kBU04y(bv@0%7dWy+o$feqAedM<4hkGHkk;0+Z5o?1t0E8T-LsVB6 z?!Tcvh;H85mYMw_8L4qaAgU9`k@To{B1#k4!c~x^*Ksmc^jP!2-jr>A;ZkRy6XKmq zi1uS4;528cg>*8|uiNX#&uT^WEUI{*3RH^*92R7?xI-JmkOWGE#zBt!0hcRSUkW5q z!jc1j%JTQRR-3|AzR2{-KR7#|iJm81`;){>HaV)Yng6||IwxuOs&QAE8fwbxx8a_p zF24{?N84kG{ir)?#dzU~Dy~_JA_tEL9w)qIM`UwcVJDE*XkF00ipBe7!GSYm;CzAL zHJP-f{Vj>G8KsoKZu3%8UWztj)(DfAc6+*6V;MP(%p{{_jhFV5u%orD2!z|_J0Oj1 zp7#vPqSOR}G~%!CdCuCPmJi^NkUhWG6_mWQv0lxzebdj(^F&`GR1{6q0i&< z+cR?B__L$Z3po>VjjW-;v3bqU!wZWYk!Y`yWa8);+R+Pg7uxY5FE2l6ZUXJ?(V?MO zTqcbH(&<0#Pq|vw_7AoolLv2e@DFJ8TqIo=6hxnzL_F82ouErAiC87)r!r#P_CEN- zE3C92s{FiX#T>SVip@0Vf7nmaGXR(@*p~7_I}l`7^1giGqr6h7&+U{(50?l~ztG34 zF=9V4R|En*U`A^upo{1S)cO1QX+psyumYC-3x{lN#f5=c0o<{6C~FKJuqNzkZzsmd zUn}GN4WAH#sW1l_vTe35U)bDq-200G>@)N(pj&BA!+mNK3O$qau&K!^D&oQDTD^w} ztisSy^gm;;xs_wR+i#2`omKki30GW^vU$Fm$bS+mPZ+o_N>7Q8Ot#7qFZbNLnuK{? zBp%Gxw^&j7ex{^RAj!MsC~u|3cIP#NrpYMYdmZdUORW4PE;V*X>bJ z_20~=D=%qS%zQYU8P0@%CchG6l90kT#^l+(lI}OO;pta#-y^f43agG}r>&V^=$p&3 z&SLn3Gv<6%icgYE^9y&wKc@*`wN6vqYrzi6a3&|{yXypMhojr>dEQTl8_VE-p>hr6 zVy*Jd>(QG2`?lMPD#aKhS@7b$5RX*a5dey6;Y5TAj^Sgws@w?-W!P*YZG+6udCBc8sV~S_o9DLQBSG4GHO0` zrt#X=NBtinX;zU>R*~HN_*7sQS8H_G`^h<#I0Mmq(Lf!xhi*KFfe2bb%?@cp#h~4Z#O{d8gJ7X zKet{5^sHT8oNE@09)Ic^&;+2Y^+0Mgq`ER7E(ktR+O#(Ch?07R}NUEdJuLbi4K_kSAZdS2!EOX3j@WX zPcZ;_tO&RO3%-`2qv7c0!a_)*vEQqN9foMdFev3}fgBnPwyhmqy;D4Q+zi}()c$`{WT?v}GH*pzlp zrrDv>lwaZCyfSN?aZq3NzBtbRpbV>%?CZOzPwWzP_d3=(E0u;KSA~N^Ci8`AY9^Mpcv&JM z85@kYlAvf~xkA{~#fk+?fSHfw`p%9iKT=MMlJA|}%9`17GZgb7(X(+*m#Cxc8!goI zBAejEgdx+y{Wdagccz6TP2yLNd95Bah_M8;lP$LH|3*;EHbmo1FdaSbPb2-Fs-Vp zYW?Sq+tUY9vlVt!P9!F$xcN{>irLZtbQ2KbQ1!m$9jkX?*}$P)$T_=O7D))3Maznt zoqy~@c1mypF$$K8yDs8DDKvOWt@r+_r%93UBtCj%inOEUHI9PL)X5{>c;zUZJMiX$ zB}N%Z%U$M^kO#or?zfy23=CIzd3z48)02Tcjm2jka}tZ{{74-Fs?h;7zu{uc%6;7oP?_6Fc1WRPLiILh5aajtMnuQ zbojO3zcaY+etKx#`vDWA&B<8{sC}T6KFj$ZGCUlw>eD65YVwchPT9?r(%@~{T~uJ= zY#Py>y*igz*&=N@bGCMaWLmb{Cy6Hdo}7Nm4S8HFy}HF*j`C0Ks7CS|-?)D%U_Rrl zu^8L;Inh8UHRE{G84{dn`coj+i{+dKwT^C^x|jC4vyPqSw1&IHKG>9q$up`uYoz#*ln@WVzFzd`TJV8uU&9-J+_Q}s6Jv{ z##AM&Qv7V`=YlG=A(xDr88cio(}#&0XPH>=V~UOll9@txm&w_AqQZKUqj_J$h2-%~ z$686<4YNtP;5R*wUncNW4Vv^2yH6*~XKr#Wi!CYUs>sIlzrd2H|JNPD7p)(;{?qyi z_0dzyC)7golYh-`(FC^OGurUgP^AoQcFU4vFxVFMuDYko&N*-`=CxS#-0m_XY-!MU zz0#Mj`a>jg-aPXU(eV>N)|#4yk1Gaf{?qtTMjERqan`}mF0Rf(SHSDi-f=!2cj}Ir z?>v%O`;7)h%_qL&3iX!xf*x&&=3r`d4@qS>1WO(?r%F6rf@Irl78C_X6x@OBMwu#zps)4 z;mX$O`wwdHkVr@{q0ciQzmro?m<^o+As;+SZ2nOId(k(p1JlUz^0MjPV#l$Eg7O2| z405PyKua2E?J*MnkcpWYT-f}({=g~#(lg%X2d;-r2oWeVirn#+KwI5Fbb&<_4PznQ zgP@3kRcJS4e1!z&lw;bq6|l2*hczCw0GDeqq&j01|9t!d z$U6F8e*(4!Ui~4<%a)UVj`u)-M=SACXS;G=^(%iY%22>x^Ic+Ma_O&z*#EU65|#g* zRyVX2a!yS|>*_X+IFTKpEz*m_ZxeU-UOl@0@cQI9v&(}DI%m?VC9mG4kQP&EcOxZ} zPCu=-zTQK{`=f_56>c?-Cph1lAM|1m({@c$k4u{J{`LpQ9_3%7%9FhP`~3+s7=-pm zuh}%BDjU0Xwey{+uGQ^QE!fT9^4O8{U)nBkt`p z?4NIm(ynVP?>^N%zVwpL8f`-e$VFVoz!G*rod&a+J$7*l zTid|2GWB1tcmhs#H?W%`H($W@RND0GgGFnF>vpbKOrQQazPaxw88b?=P??$Lnw9Bm znp~SI+-&o>gGVWdfb}NZarWrOp>3gq(z7npG2zo+*rbta&pXV?&KwVTTfSL+!X-__ z_UBBdXxNsmBIuFW>8c)0(@HS1YkIDWWS18`5M){2t0jmzkVPz;R(((}?keqN-Tcwt z_CAKg7Wu@AfN=zor)d$|Ov-r`QzC(s57=UwBAs0Jg)*-;oJQP9G0aFe%(}`AsdRG* zDx;;Ncu8`I%ml_aqN-s7%YRv6`{0FZwZG zKQ55x+Jw!Yy_pBcSUBk^zphAZ;))ktF(b{z^}e7RP;1!7yHcl~WGK|OWmiJrx2d(( znZ(<{dR&W|Lr`N37X5A(9(}N|*No3y7R(!uqsJVW`tLlnPL%^DJhWF^K^lxtNjZ2JW+a&7GZiz%fDJQO3UNSqufjI)%tI z@tOKFfhl0;Ks*ec2C5MLU`_c-J`@%&pq!vKuXFKqdwreZ1pX{DSYT*1o&XbBMotbJ z`o;nVI59~&T3Rr{#V_OIQ=?Ge{V#k6);DI$ha&4LPL0$Tnz!!nM>dTwxS?HJ=yh7< zIAK0?TrSTl1BqT>P;f`<0q5)gvOKzRYBo&@ijl5M^}oS7>;}4S5swuwU^?l7c-E+v z$8+SDs_*8833uWJd5gm>yEKnZ+xH-BbCHF z%{(zr?7wdZYa=2#Ax z^E*=-$x^0?jrgdtBT`d|JG0+0Q&?*LvPCL9S0Fbn*PVAol~C+1*xr4SoW&hr$b7G5 z3YRa0B@PuCKlbER!&6@oJrk_T)Q@{}1MD`}xQ+UtSO2$a;gZfXr*e*Pc z=5Xm|kRNev%CS8zo-n5FI8?I^a!|9zpls_^Iof8=WH)(l$-gz^ySKf%_8iJqJ}fQa ztI27kg=?E(;}o5iShvzZ)A-GyL*}|0i{Z`2_rxB>^i~~bj8tlNDlpl|Kjd=RYo>N+ z5YBpHOps%2cE4z_d(UF)8EWzJtb~l5mGMSyv0BSP&onF5>T?=k)hminZS; zjun{X-Uw9c-EkJeEOHFM$7E^3jaA#iM{rg|7=LmMm|89)^eUgf`I=!*YKKF|ho=>e zbQO80^*aMqxp2fp>UNc08l}nwOdI&sWsEtXcQr^1MJArCuB^25^=)0f$%G{hZmc5X zhSzdP(gk!S-p z*4EV2pm#5X>+d>az@xO7-qSrheA{ga`N`%mGN}{zGa#sgsu%{BA~Zqg#*G9AYv!w0 zZP*p7s;k2QLIo?r+$fqy zQq5X`i1Tlw*mY}Ckex%n2sr`F)e@h*MU#3I>Hn0(1dFyL=676+N!v0f=96L=(ynrM zjZfCEuUi_;yQ5B)0?SJ!hRRl&y@~XrNmp=5ZhikM+j4k^+EOPYt5D-$pA;cuT7%Eg zN6ffe?B!9FGi_Swb$j)!FfnJVV?IrsHcI0P}=2s20mfo>~rHn(wRGg3}WA0vvPUE40(m5m-3NgPx1GK zj{T3=uU+&7pi*pQR&ySs#%izOM7BQ|E^bjY*9Wv8qtZ=Tn=_m*a!k5kTQwh=d2#MZGY{DH?RQlbqa|-rE?)`7&K6Nf8d;ZfyEMM{pm5Nxccxhn3iampFi# zHV`h|9;VENq46DC=78{1ATO%#+1anA^Y?_=W@`^`ATO{RW-*?|GBl_Nj>x?TP66Ld z>I-!Z*@EG)CmSIwSnL^ix;O-(7^iBO0ka&kX^dPX}4J7S(KQ@e}Hc+{X`psdL7GBurX#TgVi0;@DFnub%=9z&dJ8w zLMGKxWSTrgl-bCMebdNajVIFEkJK<>h4B$zIP*B>vG0Qy#RXE?Ts_*ATFC|#&UMb<*1cgR#9HOwmme9zCm26pcYNc^s;b|k z<6*mwrpA#!HewMtt=ZARag++8I=OeDvzr#;uxdjizH8l^X4XcZOt*OR4e6O`sC-!d zTUv^2*iFD3j-T9jp#YO%y)TuH6Z`@Het$+=&S3cLQW`h~LM0$sVeM2{YC)mL*qDyQ z{&%*fy!@~rFmdwP^fNI@`cXq^pEPY^Cy zWeN%db>X0FK(P}xJ{e2CHHYK)FEqpUvJs z5^1Za0gc{AsN>>^s`dp0^loEmjY$5T=1cA)z9#i4o=xfK^;Rcu-*m0JFLXTVH3o<# z8hPo(64n906W&j_64M(S8vq8_jt>-m{P=NOPNMN^m7MjV^VBO~QR;ti86b6WV&Szj zJCo%ls$ZA@M_VAQ++&D-nTg8sj2>8Ra}-J|9Vmx{2b}2JU?`}esHhk_u>#J~X=h=M zx4$a}{D&z5L;bHo%e|8D-roSjh9m5%(RUTPQg`{@R_7X#HkUDro*kB7L)1vJE3Er2 z2(JpkCd{{S>Z&Wyb`p)pdD*Xk*;&NE%PP=pI%gsc*TTe_0z>r5~-R|4=g46y-B%M(2l8kBqskx(nuR#H+kikFlITQOz}$2)TVV zS}DVpe&w;_M9X%>7@;pFhoVWC`m8$^inm)jkYlxDV7^Y}(lHCKI{r9PYAGg)v95B? zQmu#7^GhM=+irRA*&sZT0ke{s2lsYhL)PT z#HMm<%M<`W+ z!V8#4@+GM%v%g`Xl9$)AgzfjfkdWJyQ}y9@DGfm!nRzJVT|FE(Sv}opvVpm}WSL1~ zPlv{Xb9q3vz%ts}Q#L9X{bAtJ(19woNRkTli`_bYB3m%Z4>A$jnFq-6_H>yW_lsoH zv$J0SD}&#D1XhSbY@!+vC1Gh$R8PA-iXAiiObLViC??T2paaFde?MxmcsSeO56c;* zDmae8er1m6uom!9zXRuE+Tv7VROEQtT{Ph2UQYt|(zlJGjnZ@U%o3(KU^M>;UqJJl zYWj2yrtaTD!0z+o+MJD&Q_rpTiH8&Qe23c8EW87O;}F4L?t{1@7>yG-oh8 zaiiy*tB-rA*OhC|<7al$B%p?{*6;^av0)qPVUncB`)?8Y8R@~Y)aO)_w8QqyIy#9f ze~h|s2tA=;Vf-XQQT(!=a+!v5nM6BIIhL^Te)5m7ThieVBZs-=ZoBwvW+f@UddHUN zP)e#@F+JyMxt>+a;eP*WE=kU>%xe>xG}B>zvS(r0jCfu?y^rZD)z$u87qr7JZt9S^ZRR+<;%%* zRacD$S%!XmSQ?u`A^ZM1fnmHK6_Sjl)i1O%YSdw&{Ec^QEwe+?k>(HCa`6?I0TvLZ)l(qE8bX6GG2Oj%r6Yhy51<#IfHkpLN|Dl$?;TbGtgD6y zOmLaGn+iSCfB}sRObsz06$;&7ERmV;C<{Y6-_UpEy<}O_12i7cfap3+SCfLd}D6Cmb7Pdy~FRbYYHR8p{)4DzC#tb5CTFM{aGXv zY*EhDfBJ;y;^O0nmR{Y}5QM|=@KS=y!omVI&0nWWSlzXoWj%h57<&-zcARTW0qft< z_Y3u>@DpJ>q=zVm1??fa$f{I(F1gnF5gEf|!H6NPhhRAzHR>4qxEi|6 zsVDxP`24TTc#5-6fK=7{ciLJKbQ-82%d&)5W=~awz5Cv}K06xKm9VZTyVn`z9E|AN zI4twux>0prbM?^@kB3>+QS~u_L>1yH%O9$CcDnBjNk2%AQy*PsbW^WB!`+_id%(23 zae10lQJ$Z)kCc-+7UcM4+)CXIKQd-*1&`;^Uy{pb2lfS?{vW?uMId8aw%oH4>}6@^ zvMR4WcKX{yTK%}ET&t)2xA2qsvCl;$T*BkRW&hd^9rYUDw$%|${29hP`YPE>J7B=h z?NL1$tE%Z{yttz=CI7`K!?7&Ecd=Oj(;=xkwqE1tWfYG=&x^bFZF5w<8aJtpX+0u| zpkynzKJ5L99uR^w+8-@E>(l8Ur@~GNLRBAxWC4zE16+!kS(|d{(M>rgp=5vgk;A_M zuh#pErcQ00r>sM;5DuOLF!ZDs^SE{X&y)9|fST3Yv@|j`0Sdo6KSylumzj55 zfeme9$&2wbE64%u9UXfUHfemp7iTQBF)&;Na?bVFtZ=}z1k$jiTM^iM*f=?nJv?=r zQ7qZ^*07M4S5`{hR#f1#&1}twE~VKpL`UrJ@3TDW{kv5?x47q{TZ34jr@$Fvx%2)t zE)i{s-=RIaL!3YRw5kC8BZPz&z3Oh?xzoCF7_nOv<0`@w0E_KlV|*v-S~ixlsw!l_ zBL<{SqrioJ^s-O)&!0`z&+oNeyO_NZLkd^X?m&}YQRoFFrH&0UUt&>EtmGm0TQ44E z=H5qddCa@wwORaJL@T3(TA!#~c=j>%)BhA0GH8gdZCQ_vae5usH}&jw*OtPUgtwxs zuVnrpHE$kkJ6D!f4|R@xG;bH|a8fD|w%bstjk;I)=H&Z5Ja%~j9`Pi*wx3_F7INL5 z>Hqn2i*BYxq2pfC>%R}PYHwLdoO>`E?1>n%YzNv9Chx~&>U{UvN+6<7jK`ARTe!ng zvtq;*P0Eq_zQZK7ZvWk%SsI0S!^b2AD(-quKR${n^_1;diXZ*B{tE881U0c*;0 zWn#vrnYNa#@PP9@um6vwtAL6^Y1Iw2$(?hDGGG{Yjf|k0+MS4B6 zbpE7vi07L>OrwDy!aez%5 z{$SU-W_Ii8?2{p=Rg96f|7%r2N?QbpX!{NH^8C*sX+#;*b7y9Z=V5H;ykHTyD;Li=G6}-Pphau!_iY&+j!rq6n%i~$X7aYe=MQDw(& zACAqj^BNa1F@RBPkQ#W~&1MvQj>;QdA5R+HPU`2zRBh`2cch)JgClJ}$Yo*e+k*am z*EG?S$L2fFDr<^ypIZE=aWPR(G=^1IelsRMmWXza^QQLgV`}66akt|qt|-4}qu^X| z)mW&7Y|7-c$kDBWzLSlj{eaNeSspWU3vuX9h6d3Ctc;YN`?$d9j74?AN(c5!pGHTY>@3sKUAw{e!sxY7BC57T3hF*=liTOAT3L!vwcVXjLGWq`I)5Iz z^es;f{?k`EPPyWe<~oov@1+?>M*MQoZ&W zAnhczkCw`9e)Ju0IwSH48kyGJ=y`*MJ!<$aSoj#+~+l$Og&sz}NOeXZ# zpl3rLF03|xR(~8^qcX+D(bw= z!k?(DyDPeY{zEKoBP0i#jL!K561isI?lF6{p?AlY^HR;-I*ryvD_sEt6X9XUsRHh~ z)VzdEN$N-9Z?JK2kVRsEgoj?I60pIjczB~+d+Ag8w^-Ew=37J2#&kc*0UyH z@o%kXD4h`y*Or&}oiOb=x>f+HZP~&j`*>$ijr8;9PfeERut0h$*x~)$ zV#K0ft@_4Uz`7A9K@w8rAempI5%UM4FY$l>iF?axSk@3g9guSsJT>d4jX-O-Mdwz$ zAHZY*{tJ$ZDy*qNDgVB-Blt0IV&HV8RSj~&W}RQTf^2HYczpKzksgP``uN7O5p?X0 z7_;CI#BJ<@%bPv1%8> zJ9YmUGCO&oHAV41+&OK5b-n)R!f9%GFzl+g`0a(?9AD1!hHvd;=$-Cqk!5DnlP2qs zBE#3Zwx-AofxVimJx^yF>OcBUUyV8S)jwkt2iLY!xyW>tNYaytR+90MB|7vQG8-s~ zwyt`xN5$1E!>Gwur&&1#U4(Y_3PmV&x`mK5a~kogJ&fI>FQ$7}dszs=VdtlFShojH zJjVe?J@3_C<(*wG|Fro#xpp_cw?R*riCD6gK{Cp{Wz?fPK{dRGpy?{Gh?W@H4L`os zY5=iSkQ1Xmvfp2mSU33Fl#ebk>fXn#bSaAL?=H)5G>xgM?*9ml`VjABhA;&i)l||t zTgg=HcYergF4}N19VSji(m7+US#b@>c_1iS@r^8pCDzq^hvIZ4%t)Z2_yLO&^5Z*I zA-GCj^&xKi4R(K{l%*4F?9<-~^6M@eV$gN4gR@?%KC}9&`nk6Dy{)zJdxN;RXf`-k zQ5C+|p?f}Oo5vkD!Aa$jP>sJET;QaEUm7>ils<HqXte{A;byYX9<7*;sNkWOGBwwX-jHF7PBts&P9y&yl zdEXn9r_2zP84O=$Y@hM^<##efO8i2JWkF4@(*20J>V;oj%!G%3rS$8M!a&xo0D4v8 z#BjH(^Bt<`FZ0O7A@LbfB8z^>W7n7ZE%@I>t8hO?;IEuT`tXs_WLL_lWo-?=Ut0?mU<2bY!ww%p&38$yiwp^P&J#p$Tv_W-Mk=hJxi@ z_ML`_iK*~;T~TGe)&x<<=b0@@$J?zjR`54CTa}cRk%4~d+}>uF!RKD8@D@Y`+BR!~ zi4z4Ab8hE~J43C_l?f0MyC9JJxMsklamj5r#RQb<0?$*rtV!6l78OqEOekgOo#$_z ze9=u?PFDbOf~?7nMT^RlnyOZiZ~FV;kcOC;SY6E!0*Hpuw-il1)~V8hR5{=@9yevG zp#wG$R}j&V3`~?j)qZ^G{Xf74G|+$?0Fa+bH@o8V`ke8y`sm4j?Ci1bc4HA@EszN* zh@sPHumvCyGS1RP*;NA|Xmoo+(KYRQ(M=pP@cx~80bk_Zaqalsu+Ga@kN^w13l;uy zsHmu1b%27pc+CHYWrn6azC$1ldP#ylKL5g+^T*eQn%gE)FHV>1tRXfAFKIy|JcW=y zLh$38sb+byDWUU=`?_a|-N&kDQThxOY@6b98(~xHK-|a>{bzcLx5pLlOUEISkBJ&@_KFWjxztQNHW%B*`~YC9hrHFfIH3{cKn8k9p10t4}|+)hxn ztLBMyW!X(O-}=|IEkWgtw^@kA<3Zm^D46I%H{zI6ysk-OVR~E+dBbIS))H_x(>9+i z%P+>&qv7o|<46U)zmnF=p?yZWLbC{zGiQPEl`UVdaS*j1To6)|x2JI$o7Hd4m+xLA z5PSFD>S^Mf{s!%PRbiDMg}^g%v(i^j*UzZ$^X*rf4a7tE?rVi2u_MZcct%Q|Je?Di zZ9NUUeiVrtn;0|lIQ%EH<_tBw+T+IZHy65k&}lT!Dk5WUC?>7d-QG zHbv?)HHmZwmQ6I;f4l7m^EYH9u+HJen0;;L_E#myUi`muqXu9<#ay_T3?I6kRO)P9 zJ%}G-jwTl`gmck^ZEV40Pdd_dofk|vil>Pdfx_0U;W+nC&W!YdlhL%Q3Ptx+J zCVWB*HFh4MYVA(zTQ#1p=+jET;PV@I*SbupQ;k1lxA!pS*d-CPUS4E4zgPPv(iQl9 zPH`Zgta|1(eF*EzN8_96r3Ja)(%s*7bPoKzHqhI2qosO9_^-A#M&8G}!-}qb2LeZ8^^fX#6Qj%R-6lL)xR+asvRS@`78P7Izkl??!h}TwGjtjnOa& zkUhKn@fV<=fNOB0scxsakpLQbNFgJ*@B*-BMDk`C3sTSy2G=oQ&uUF){9gV&E+(cE zJctI_pjK7(mhU5~nW^bIfOHH&e~DJh-WW89ItBp*+W_=51b%-oTeL_$0@^~9Jnr3f zUM81=ap7&F$E`J}5A6bf=cyEJ2?}I*U*P{i_G0SjvZpoQ?^Z0VWWY&h@n?X1AP5X*-F`hwZ-ECA1kxSGxC+C+PijE7`-6l4 zFokcIlvZpesAz+7i$KT|>sZA39mN7)IVaUz9`o#^yv;E!Z^@)!Wc6!Sulv|u*QwRk zy}ijx+cQ^usTht&tV%3IDLOk|a$*4eGaB_KtGYs0*C3-X6EnH*#snOtJEw*VK~8M} zZnc@QA6EJ@3r8|311FuY;47XHi2RJ&Y~Lp?YVsfuG`h2CnirBs zPBI*NRb*-TYsff%%s6jVuW(|gXVZDZ*2C6~FWWZfgG26QbF}!d(7)de;$O)?W?v~Gu(@?1yCusxjl-6 zOUoIqRp{flK6<6gBJOE%rar#bRdFzQq)l_vK7C6Zzs+~EETZjM5q0!oDao^T4C38K zXpvWH{zjAk>r?Q~@lhY+SzxhND);eK$TX|^U3J@!1oURhGO8|zF1IETDh=$(6zmxV zUL_h6mRUyp#-%W^&8wu4ze?18KZKE@#h;AoDqmiU9Nv!``fU6$Y1+!K?$6!0#V6`0 zOMDQ;(awT>)6~u{c_p${Ufxha z=IWteNKiJpI2`_~WntMTn6Xo8T(K}v)H+`aXcGJ-bWOP zJM!a22tK>g^QX#v(|TFDh>c5lOuIR2tcRfh-yPID^Xqv$1fAhBv z2*azIy{80-RgeA8$1ipQ<17E(Gf~NhXR@VVouv!S?w{V<+_EQ;GU$qR<4c~r;8Hz~ z_QyVAEJ@DW@b?UyM;6YDQK~QMaPDL~!H0il%AFb{Te0SVocW+cql0?wMi+7=0NuO1 z_;N|Nz*vT#?B&S|nFk7w8Ue2el(BOpgPL+Cz&`^-1)z|yOv8x9^UfB4z^nQxn)G{@ z!whHtezRLIi<_ApR1*7Ic>v`f{qH;do0Fxv^5>7ZoY9~v>(46)YfVg?HOo;205Ywb zpJ?8_GHI1n6v$$P0LbP@c`Sh21Rxg`ot0S(7XYYa#lEFUL%JzDgON!| z``g>_d+NXt*xfW8M%h-zQ0=Lw3j8X*QQiR(>HfsVXL!k`Lk3()fLC^>@}=)=YkEgl zi){@Je;fQ#?~Fs9gjc#0(S6i;a93}CYYZWpWu5`8g^^K8$~=NT&wyF zTR%>M3MJ&i*%%ZIS!Y+)Zi7uMZ1gpXv0KL1Q7bGf*W7t;qt_VHSrOZDinae3nfUCHWej03BR~nL~#-DlWs6i%S-0!vj$*ICu_-$ z$WmA=lhHn2z*Z2nxq6<2b&rbg;48UfzRy4{ZacZXYkMPG`X)#uWQm@~no}|W0lN)> zfwe_bNu6$cHmgeEzXxA*m?W=TDut{c{hOlPDxE)iNF^1Fo;-%%D_n2f33Q93CGe?hd^s)~ACN8+hPDrj zyF20$Lhe;r^vojsAy`_V;{&g_=Ow}T%pt1!UjuEry&NI-ON~P$SxL?Ov1gMzrobuv zx@iPl(9&DK*9Eg0u7y~Yu0&oR(%%Z?WK@fP7P=oDMn{;04|&$utDBcCY3O$La`T?P z*(RfGF>Q!Z!-mUA>@Jsm92>>`@|7Y__a@C*eyi-*w$)wbQ-n2(-en|@p*%I6&zc** z4{rU(_GMq;=otN`G)fuM2}Ky})xue1UaHgWCV`yz2Hv0-A%&*fW&`;@pa@5qz)F7< zbBS`SvTOI>dfBbUZm>23e^yfZ$rT>&gAVkcJz+{HqTi1_#7Xf4bUbsD5_ZPd5txy3V?>!* zURGtDj00uxda8=OdEkOZJ4;?QhNB2&VxEdE=0W}+dlAS40h8)C16f`oDk{@7CN4qwF=Z?pT9`q+v{(cCZpI05@ zF5QBvVZqCg?FWbRAdtgD^0fdCkUVM(0((3E9ateQ<3)YV0jR@e#un@HDG zEmpE$b=z~gR7`gp*s%vtJu?v53xWFq;N5z6?5jbJ5g@QoCvUZppur&amc<#oAOPRb zX!r_(7PrCfVFZS9BX|vh|;`=HkQ1Ciod&_ml%0(aP6wTU8K0!nEjyw z<0t!u8mf_S6Zt}8U_EC<|DBYF7<^!`^oB^WQ_kO(Xqu%PFH8|zwH;1c$#nL2!RMFE4p-p)_(NL@Ow z>KUIE7FknT*7lR2Re{_{-JKf%7K~nBe27~%#*Z(#gyx6js;?P^x_M+jVCBz#vyNIn zjhKt6n5wy%Y!%`cjW7`KI9x?&p)#6g2+tYx-M{rEQH&Y%NrBQ&VyF`@M$sU`&ngr; zLJ1*6DptDET7dmcgVSkK6Li@V@VD^Rrt~qu{?Rx4$e4ovhx)9Oj#h$bZx_$F!A8bQ zBoLNjNoi{gHlVi-thoiWodmf(A`<8aPp~)+ec4@QjOtDLm48F6%EC~=-u{97wq6w~K9VOdc zcoTpB{sB3G;a_tga?qv~Yi1S}p$674&~XQQ3NXp3@n5^XNGZ}7_RlvKpvpEGm_~uA zatt(Uy#JHTWbn0QIL#r5o#K#R5l%wpZcpG2TrR z{-mik;v(X9TwI*JY~BZk|C2t)$}vJ#r`#PBD#>EBglV5rRw)+!xEbl;x!n#p(#Ojz z>nVHTRPU#yP;cawx$dmNp#3NX=b7lKZ{3g0tx(Z$C?6%!pZ_6C%Sdn4jOdXbc=M&y z^GH=xe@JVz>bS6p+9q5n{X(8_o-}N1w{aK8vZ$qFW&9k<=Xo)uZIAbTSv^GuF#_pa z;#X6*FfaCbk%;iS;7Qc_lL8yNqz-3d`+A)G*`Eqq)*P{TUp8j4opHW3{eu-pnps!8 zKLa#Z2cqZbZ4~9hc*Oy}xi*0+#Y0@Px@Lue{4HPhQmdzSNf`$CU{6ZAoIO4HugH*j zla-s9m>3H^>kpUN^Jm;0xjynxVv&ez%c4v8aIhwA1g|J^Bae%f@jsYH2Z{JiNyK zu$j{?a~F99E6dv}325K=CfmMiDg7@BtnwS!&Y0h;Dy#fLA4D~^ZT`UjUbHl_i~AHI zO-;l$`$x@yIavH}&4DRZT2!JgKhdCStoC^PKc%t5q%pPU$%%i_x%PS=hp=O%O@x54P|B$%S&K zc@^N{S?_iCBTM0{Jw%cq<|(P0f9tHf&P&0ISsY@(cczUft8=_ERfv5Ag;7?BMt;1OofJD0nln(<%=GGT2pw>ja zbOPFJaFb7_)WM#Wnjbuit-<&mA_kN`UrfUm;f_s0~idGouLE(QJzON2Y< zOj)d^3|R_5TM`NgWPxUD@Q+n3ow&AZ16l_lC4fi)lC@qimq|!T@sK?$EOqZ(*R=fl zk+ByacYpv$Kk zHYHY+gr{_v>zj^DOmn8B1&I?v+8XB4lwsHud;zCqNIYeIpf57hh&0xpch5oDM}7kT zihods0*P*XdOGgq)fJFo6z1eWB@LsSrWX_z#-*f40B4s!45D@I zM&QNlP7-5_j{<`iv4C>^wdd14dE&`%q2Ok3-W!+CuB_|IzLgTHXK)uO1)W$wr9;)p z#VAy=6^EkD(wlZL!gG-kPh5&v952$7IAgisxr=*Eb^>B*C!u1or5#%*atlUsv`}CzKw|ul&7<_uIFn zJAjMn5#5JHoI%aAz86&E*)W4^B|8df^wtpA;v5Elm( zeEG6Z76&_fLy-lfO_MtV$OpmC6cl$E8XL!^qzpzA38{-*{D;fzJ=T!A=a28=x=j}z z-108Etq7s&ABm5 znf&}Nde5(-w5VtuoZrCrdNoynr=+ApD-Xbb=OK@=jL!IEC=5E#4M zar?7&<&(yJ&A+$U%T6cOF4oKUw9@7o>tlOYkgzF`R}O+}JUbj{5K2FF?g*`ekq)n}Hl$fwE`D{Z`MH2I-fJnq&NeAi68p<$!vPQ3L? zqF`d~{M3JUhJfb>Aq<9pvjy?gwLp9iFm#24h8`Z7!svmS9!T8y&V7J1)nx_U6R8q- z-<7ot*wf@G(LhZEFiyTPVlfM20ELvexw*yT7eK|z$|8Uj0e*gps;c53{@af*d%_e%C?l9c0hQpt zv$c*D_6Q*0wPeqmFqNf|**1i@rN5V}qu=S|d^-;kcp})}vt@Um7%OYel1QHK* ztD|f8!O_uArci*KDyW&X=_sB$0OiN<|9cW($z&q4%&Ehjf=+HoLcQQSmmfg#Yk!cR zl&eJDd{|Nnp{X9BZ}AK2>f()t6RXWq%X-6zq9r#j(x@^U#q`N{f*p zSF`xZaD+czQ_USeM#-)}dB06baX%!l1;N)4$&AhKdr)lp6unkBbpRp0;4x@TXQ)2E z^wz5Koe0N-o)1nRVI?i|{Ep{w!Qbc|_a-i^!1v(f?Cvau%4&P;YLO-;`kGHnHu5KX z|8pNXDHA1k;56gg)B;(hgp~og8LqO*F+DLaBK+#-Jx?DkT9aM`W9Keg=B~}R!xrY| zcQ;Em_u#X*64CkqB^)GAW6-Mp0kOdv(yuNaZPFf3GG$}4MkKBxn+QTE_PC{ zoN2?o$ck@+a1N>1v8b$A6^%d}X|23Lt-@Iq%tZ;N;Hgmb<4Jqz+>T#(`yC+EBhx+-f50<}+!e}c&wMIbx zg%G{)+<~Gp6@ZkHI_N*u&>zoz2d4Rv*zeN^k{-%N2-{pS^c9YA$h z<#?cQb8P1G_skW%bAhb|B1!k%76Qd;MlLHFf{g_DZY(6Z)+hh=4iF%BmQ~Hs5;+b< zZSx)yab(grx#K~E7lmSxGK`Ezv36kVD^o$Oboaz}X0_Z7D#=&k_FD?l%JQbzA})k} z;Yg7#(`=3f?^1brdF0D#kO2##Yxo`Z#>hbKSLME*-33Yfl7`12ym%AsiCZjdN152Z z@28-^PSYNioTUW;y}cK3KP#u zGKCZP2SB9R4zR=hF+OrNmS6#bi%p319+0TkWW?6XO)(&E@Ty6 zz*7O=Ai-sLrt#W20K~F@$+n?LE){h?F)7JmFT>^LoPy_hq1pfj&~+B|%est^1mSlt zF3p-{8jX>l#;l==`UtjOeH85Fkk>(jOwolC7bKws3;Mr*K13CO*#ZXk9bk;0O9Yt` zeGxcw#4x~dEA$1vsN$5caKWypzrR+u^9^9(+oDZOGD7Q6mdy^4>gTGKfuas<9k9U^ zz~D3fO+#bYqO!dY+*+5*pZ6WPfjH(pXe+%76Z8D{>kmCLbRF}%kVVEok$x5qx-f^> zhifN4zrU7)SEDgP$Hi2IU5mk^Tc^(Pm9iDOu1dU(2w469rggkq(!k_@Fqz+WyXujF zo&KROo=UOl@w7DrB=3V$`TjnxlLHNkgO~A~_7s}~+~6&%HRQKf7}zg6<#>v}x7dn0 z>gcM7{}L{l`E~f|V`!w&SAAy1SVbmitY}n`n5VuE-X&vtT22VfyA97rX4w1KSTSRD z^MdJk9KnV%QcF-EbTU^YOtsnGD2y_5ELWkp>EEPO^TT0j%=@H?Dqgm2pl$CK0v0K4IY+SVQ(Fg^f^& zGBTc&5)aU6cqyx7zUZu#TBvy-ycUJYRXW6+O&yZRPjtBPLmp|@CsylLbQkfw4dDlX z_@&6fBapGa9gfO!1C_ORYp*Z;fE!vU?kq-)k<5pzKSB8X<618~$27C*MrQWI8hU~} z4$hj!V7V-{E`S`FmEDeyOzh8ur}M`T6Q~bFQ)NgwVo^I+`p+mI-8F2&U@y~&6kf#S zH47Xy0`18Kpp$Byj%Ka#hQXQvnq~(8%Yyc2FjPR^X&@4-xH1n98W?>b(oSGqNIUL} z0K`YTcZyTo3)0|MAyD1cW1+@n^#Znc1euyMs%gQl|)v17j- zNVkE;?(OF3#Y79(dVtp4ALwlYcsbEOf)x$=Tt|(Pw7{J*zo8-V^=VJQ(8$Q{q8BsE znPt-h2h>7CQo2B-DNx_iRXmGeYV`mI1Q=a*fY0wxNmqptgaHFVy2qOkvb1+QyIcPz zP~rxA04)!0Pd03X!2cKpJcZz$PX-~ndDuA7!$HKU9gxd_grz9TP)`utiiUw<572T{ zWV_2UL^;ezT&^wvj1p__Wk=TMUzXM@p#3Yjt^c~{*)U0lHuL?1}})^BPGvl3rOK3s*-vKm7yt7 zBRf8j482=m#6rcNFQ^R_wHar9DwkPYC?z&QR?6(r*( z7FB*8Qgp~`TB1pb!@F#MOH1FOXCCx;_27w?Y_XuFGIrX+>^zeouUqoT?3*MSRO63% z+A5Eq(eQNY<$8{uZ{S&A>{ox#8VbG_0Z=hagtBEBwZ4H7@{)y=t?QCaQBP@ia!UMQ z*)Ll1o`T%?hDgd=pvnd=SkLoLm=*K8bny;5>prdBFHT?ayRbrD$t8H2H6E=Uxfe9# z2P-Z=I47ypw6?v;>z>e0O!#E#i^3XDB5sBX23{t|(B|PUB zj*zRkEYAGi=$dYH&&%yOOYMfY2K8|N<%Nb)j07XEd;p%!|Wc|5=emt8wVVFn26e33Dv5!5L_Cl#Gv2j z0ZOME&_)ndOcb6Nag6Q#P7(`fmEeCo224zHXPp@z=096<1$p^SaIpeCj=to+Plu(I zyI`f7qbJPceSH5GIQo~tRH94qRmz@fp0ua31{XmqWnk{&9@`9&arrqA6a#N{Le78mLI`B&(&fVyB z1$qA6m&$XB3tYUoKYlO%pYfLFzC4l@)v;c>b@I<9VcPX5MNJ(1A#tvdC;AUrk_~lB zvB{&y@V(e|CgK_RIotz0JY)-cqr5Pg--~-Jh2*}-l!L!9_^ArFx!8$057Ebktb2-k z&umGT)nTqxr*=v`Op3-?QWx`wYDD63k!fIW9}^W-!UdcJ<=1}?EG=c0l>%K2i*Fic z2nwcWt9zw>eeGAP_UEK=M%v1KpB>+jF)e{6vg-YKf)S$Vj#8`?>OF60-=;UPLY%4( zb7;kB5p13aqy6HLrJ;h*LI=j}C~0JImX1!HQAG z2?p1s;JPxCWosz_gyU|x)(EkqO1q7Y1sj#c4L+3L7r9W&k~RW z2(e&=hAzsYt>6I>I6yj{4&;0erRZ^q!SMo_@_}`k-D+`~3MYIF$iKOc%4(Z{O#H!f zNvOw?z1Cq*7C<1qFVBx2j(?tAL6>#&%fnHMfRA_O@vHPNfFj`WIG=-SgB>_7wYdTb zVVB*H$~B!AirG->_*%%Cvgp%G{92bzc5Qqfand+!PG`2j&iHcIFJKQ&@W$4RK_iom z*xTYNHhZfZ*caYvC;be7KFr-(?)KM^C@s)tTz?T`jT9vcZqx z147mBwqX6*YDMC<|Ab5H0o$|ZLP8#Ay`NI73en61s@bq|ybPkmOEaQU;=nH*Fj9c) zR@}l$i|MNKJqSNe8ff)!xqOJEGZYrS*yxhd2!W*Pj^7;b{A9x^is9sDsN#UD!8AlL zH12>BB*|UsI<>2A%?U1ddS_Y6Bdu*4$%{=~ z4@tJdz~`8ho@C#_aIEC6^?#g(HK-^=Et-~;RJ(<-#Ow))w$qj$U(zil{~X>1-y(VZ8(NNDT zYKQdBxFeDFW}7JK6O*8BVWlMhS#O$`U4iMeZQ(l>(ClnT&pRHV0y3Ttn%V^7QBq$# z{jS3SxkE!0*vgRJ)zfLV!tKrCaeKN`-H(4%-`Q=PJK2`*Q5g|J<-$U`xv0(e-9}zZ zy+19=XDss5J5H~!@YQrwWPTQBS>4+UKm@;pk9Pc#!1Ejm40YO3$EAFeq{;H}wP<+IDwbL8PYFm&X(y7wby=J?UI9>4H9}qNPMt zJkS>42Dq7r<7)0sV3mRhttTz~gFsLWd$`ZbRhAdrl#no*2>9LW`Tbtj?L&1%>nV3d z$IFAZfUF#nlC6O2IiVciH5wpfK~1m2PJ)U(faV%QNg;`GkTv#5Yt#aP40K)}Fu~h- zN`fm>iFyaJinjWr5L;HaYgk_5<}~KREJ5Su<_z~LPhHq6Pm@1$X|tT}Yl4COf}7Pi z#&@(G=Z8l^Wa!OlZsTA7zzQiuDn0N-TLa%TWJi=+WT9~W^JT~&h|xkAqc+flk(Umt zzKdaZS}85%V%Ntk{L*g`9wkN%ZlR5Dk63bq{N=a%CyOYIjo61pr1@TQc{$6PMkHit zpMTb6vQjnLa!ryyXSTXFoi|ZM3{l_|1ScPqk-iOXe@2sRL%|enjA0i0BzD5)D)gCj zVo)hOnHR`>&_hYyxMS zQ-p%O@@?y!@5)inhSS$L%tobX+*@kF$$u_+-9mcpKZ$FxYM1SzeLu(AZQnU?o0iUo_f?`*Vy2uPlfiOfVD(V)^fOE5!NIf8 zYRAICuW8HNvWf781BSP+m8fA$A_iA$^qAUN^DWY(qedjz(L=%CN`nO2|P3zG~oxrpWExhvW{FjyF{!_=4Ri?1Nv8#ZkhqDiYu=*BwS zzCkvxVy#QKW@Q@*LIUgPBKUaRQP47`Z>@7F753`B8FMHYaTr{4R=eW9s5GLM_Ak_p zyiyag&d|JE!alA1>rgKt{F+0gkVE#h_){A@gQB?6JgxI@S3NEZeoZ+w?{~SB#4(cl z0<;lV)~RF5K<)L-(OVa|vo67^z1{zJaRZ7mc<;C4@E#5;Di?-T@&%Z_B=y*^&!OJ`(A~_x$LC z`>;tzsV}qo(MNxW>xr^dREo;Vwm}%ik@HK)H;@Ux0nmBNMxDJ2xBH?yn1;E%8bULa z+ASfuO|x6hVte*)W|f5#2Hl4jbN91fnsI3;qV}!i5n@q?MCb?p4zmT&IDSqYB5Nzw z>_X?RQ&6rHJ*oue7RWHr&aSv844K~nZa9BxQsVsC?eW}&wF$eK&j1QbFJ~buG&gwA zDsNI=uD&~X#-RVuF7q3C|BwWlnK_KOT$9Vwa6Agv`=15H(vAVc^`FtWiBnH=Zj7Cr zG3C+Rz-?VlGW&x}?juO4pVj+sb?l+LO{FQ&G(R&4Mk_#a@i(6li}r+AM7J<_vD8iS zUKeJR$iGLSYAAB4@yQ-*W1<9n!9y+cWL3!Tz(rFhMpN(F;eIXs8YEaDNPf^RhzHE6 zZxMOF05-1@ZwoR!K>ke)G9rF_fWtPK!qW`hGP8KYa(qml+-;!PJZ~wk!=b9hVrsFZ zTY}0oIQg%%|G$4>wATC>Ll%^FuMt~MwuepgzI=Q zS}DJR?hMjA6{5c)j&q9{ZYMfX^b0U_`ba`DnSv~kd@=FdI%B)iWJlt2KdjU8^in}6 zo=>`JkL+eop?ovDdgY#wv0e0@RAw%(0R&AA{+AnE24#o=#m2AX2h-f;ue2vpahr{R zc~Ptx+%y#qbaHTt>L zEn2ummAUhlzkW>!7x#h>Y4A0neD5;dF#sAWf>6jD(-wP09QTa^rZ^r7DLqn;0f$Do z_HeIako|BQ9FfQk7cPQz$FuX$@RFSD@|33iAQ=!tb(VV{9JVkphI&?rZh^HG%E0wEsfF&WkC)@vN*h_it*v6ShO{4p|uHDGtHH4 z(qc4MKtX?{c(Qh{2#4%euEv;PK7tJE06@J~Jt61 zXrm8#&&XY88{_HFANQ#7VPvUKK{ytajcngmr>p53v5Kp3>>k|dO@zb(29-$7h{fkb zVhSRNC9q^K8r_b)ZE%cuq>#Oc{e%gfbWyHs1d^`KlJPE;9^zI~@+4s006ylgJ`4;5 zg=7|YXE8>;Mu^5bgKlvBxtk~W6hU-G@rxEk_S1?xMTL_SUlQ^%)eDhz8mAV50)KpI z(iDp&Pc?L+l}P;@JHte3p)al^lD8jN1;|`C&=BiBT2n>`)UJJ5007KBI@YG}S$f6S zIC|FJVHO;EC4Y(GoT*+&yq0Bom&iPH;zT!;KPewIXvJriB}6VBA|Du6c9A6J(EQ6( zKUhA{MXId?Y^)7S)<4bAkXtDErq*BvBH7^_jpt-5aOAtjZ80qJyDomEwW2 zdPc#tI2(M|`FWX=9#f@xP(iobuvY(>7so<7kq#c3DzNqsk*T5j3sxK?x?Tg+;A(_r z{NMh)bAV*NK0r~dKD5#dxm;HIXTkV6Ssx3;X}ljnD06XN!EI2opH>(8nV0#&<1PA4 zV1Y;fXN71vIb`~|*k2*UBB(MYF{v1}7XLb#-+VUVd05S$JDV{B;eKVkR4 zGqfSqeLA>tyMO#`qpDEDQg!@H)yTw4Om^NeVYC%p?1!S^m5uk!nnl6dCVSTHa&b&S z@M}18II9+#*`n!WolIp5CCbdk%At)qErxaTPGTH;)zS#af*N<4)53Jr%3tX@N#iG7 zJI-3bET6769((p3rwS!DVkc?dr5-B#6u%JeyJnvjBRW24!BhH+89dgngIsZe4G#6< zquDFV+tU@^r}J(;_uqI#G2*UZXU1YR{VTy|ZDK~&qyxN!5E2JitARrbN@mI&Tnep$ zoe|_RiV#Y9f}M>GD3Y3=ZnBM2aa@J7cIQYPe66L8^FRPWN#>b)-U0P zyIrzbhVcJ&=d30mT_p1s)S~vQd(3^X^AIJspsJ9{&(YG8hmI2STcYdUN!)an(hyb- z8cg^%B{r!;FnC@BEhiBcZ3@Aw64naP~j zu4R@*w83U=3`C1Ogr&O(b$krRQlm>WL$}|KdBc{O__gnN`lDz+d39w&te2BAuGO&? zj~~7ubO`D%1gI35FUIK6YS5(kQ0?lS@8SaO=iVvGQ~LP~YWqAp0hwoMocAKA_=DV6 zfcT+7)qC1-JCIE0o1wYe$r&~elswvkiej(tq4^;mg-YGQ2T4J{wy}tBTVIt=M72%? zm3PRciT3<(3hb}jYh#A|lEQ{}Ho^7dkd0yG1}M`Zg-E8XbaC>P#RD6+JOVaEsWha_ z_*l$IPkqz~*u#S?Dw#_1?WMw$towA#xQ{rtmKB1j7DDp7#_RJRD_pm~7HIx;hQ0&{ zThmcRt2^t4LlLCJ9uOzDbcy%E1U6`%qjN?_8ngttXZ>}_8`~U-u_jbG)8GAFV}-9P zhzXGjLkT7DgnYD!7xaohP8Xt-S_%k=vV>tW>;iO!n`+OU*ymv?OI_p`TMOf*=~iHy zy+PWsjnVAGhCQ8IL_T;xg+1o1?b;Jw`;c%$C)UB#&&-a4;E|XaY0)# zOn`u7#5?fegZLYW`Nh$37%T2E{O6P1I1j74`Yf4?i8k0ieivH~ReQ)~!ps@n-TgjwaQ!^{ZF3fi1bGsNa$tQ;j42EH({ zep#`?Z|9&c>9W%2xio3K!3v^s2CiirO<4|-Oz(GMnsM{1@U=D2Uno>^mBrJdpsMW+NFQf{Y{RJVc2I4 zyFdB>mmlNq+Pb@%<|7JYO1p*Ip^w%3CEk4=Oz7HvzOUgIsbppS6GY z%wB)L|50=<6DO(bWz*=4@!jTjCi;OIhM|fq4o7ZQj)+;B+T<;VuB)vk{U?C95527D zMDIjwB>!=}_%hVSEkJXi`fB&AyAOqoJOMvKEl~QqID>k|r`~*IzmVKR{LDv9s7`)R|^ zrqlU8=p%4m`3ILQv#(ZUJwNR&`{sw7Qh5Ge8P@JSytS@B+|(l!EX=ou{U1h5I~Y#F z2MHgl!pHT$@y<60c=in!_{T?y17@~BG}a%I7$J77OGY3pp9y`IJ(@;)MP}#Co6B6i zmeuhEwCkF&hOY`fckj_v*P2IGp)|r{C~r$4t+9HMy&aQ_ZEoSl)kgn`j6AiURzkc$ z3mqmfR@sWF@?cst1aw_$i@x1Lq283F=Nr6F^&YF9&6;;rjehf64)Ex7Ei_=bDD|A< zskPShV6oI^y>GIyL`odfzW4pljp5Uxt#y6xV|7qW{$l9bLf6oDXM$bl@QKS+qy**zL!f6IeF3o$M3@!CC) z{`BU1U|_KI<%kT;c3D&Y=gCuBGZ|;H@3?`4De?+42d`>3v}KfTcU+r||F(w$28Xtj z1P$5^F#RAhZTNfoI8o~Ri?_wsTQb&U)JhlijMWr`te>h-KRLr|@k6sSI+?U9L-vXG z0mWnfH*6U*WFE_L$RF+)?qgyp8kUMC+{_>&E6b*g%BHkQH?=85w23*Fvx!j`cnwYMmQSQ#Nx}2$#&}d zh!p$~crg|j!D1}*ryCbHM2$2=T?)S-9KErVg~8ta+h-m2W#HrKXte&gkS$Cd7BaKU zOJ0n55FR3HV&Wv65M-~Lc`tU>Z`!7HxmszJOU1V2`<%W+M8yv|EX^-+AII~58Ywdf zwvnptE>-85qc!2EsH(az$H)v@R*j8~?ZM^=VcLJzja?)Uoo?H{3v%e6&`F!GQe-=Z z1~8`lSWkU>fpvIGlQWW`!7|cI)ZOq@YJBt1&`}__YBtw(D)-$~lD^Gn?S8_js{^J$-!`%g;%9EeU}vWdvHarWs;4 z7#Irxsq$>OMIS=jaZnpKOTNl zqiR>9YF?xK=g2i;pjSCIMjUQMC+e17hzIc;eLm~6GA#SUK=ZOU8=S?>{}Nla+DRS@IQs z=*E3~-bKb-EYfAmN-ieWyvDxKU@7JH9cSg;@{xtgUkl~%QU)k&$>LkPwqi_GJeSTS z8!96f^;obTW=xmEP~a^4z17hsZVXk;By=`d=!WL`#$cu454;6Iz%r6#DibwOS7xfLJ7LG@BXx* z=;pv)=dJzuERyt>Ky;auW@~F+%_hCv$0(1;3}1#re6We+Lw~2dxr?Nvd;UAjCr=e$ z3oQVzwc-6dy;;wA6Vx+?$@lFkE4}{+9+{HqQnAo3dcBQ~_J4|2$iO5-Fb>>M zVrHv zK00|Wq>rHMG%CpM9pU{TEJoD27vj_@X~y}`2&tg?syfhSI&`wBX5(fF$adH`B1gEv z@+)(d>r{n$xQayhWDhLwg(ij=+kE)$@?Rxa;agw5>89$6wYIhL^GzS~(SknNrcv3t z-!ICl;*I2}q+M5M5j~-_Cficx#Z!*@=f?D-?pv)gkV~-$-E7yo6RKImHS|xJ85tQG z7dOlYh!X@Pq5D246z;aSr+Vl?!#$rF-(H!1DvaPSPBEiZ$&&)K3h9=Wbs zd3LN{JaQsDa^eJY0<$JiKe9U$YHidL@@K?6A|+035BTczu=9wyHRo@TRSCvgYisZ7 z+DH~GL?zZZFBl+*72PVJ02T%#NK;U)*hGdT4VWP~wcvC0RmhbCXqAX9x)siJSA@>q z^1Nrm_NTUpxUmMoRU-0?VJWIP>e0^^Z%Y~SklU;1(hO^J>&yelV`vNr03+HwvT;sh5`%91BORo^H+`OTvN ze?b_UBs0*_={k)_f$U`uYJZoFcR}J6Zf+~}Ov@BPCpz-KHps}Sx=M51f}}g1a&iUn zM-=P$*(e%03bOD#vu|H+Hb;MjwM=H!^K2rJlJ3c~*|nOhue=k0Y|2_&vq89=An@!F zQPf@3p5X|eLUo-5FnC^qu!S6$fq`fzk>K5YGZ4&y^d12EUuVr!m@GG5^*%OfIuQ>x zYC!G||7fOZO(|jgmz11BPFj-CBfDH9_DLXECaGz$-`T%@;eUIqWP`O5KWyGWdJq=U zBS3i8+*H3Dt0=k{BSXCi4;jJ*82Zads688GM27(RP`v6N5w2Yt#ja78Bf{iq=bno0 zrj?-g$9%wOMK7Ls*Ne;kQuy;sIH8W^qw0xsA@>Pw$5(MY9^xcK48%15DO2mxPFV1K zXm1;EiGZPnX-VZhMBy>-eAOKpG>2Uip%xI6Cr8K4me5~na`BcRR2@*M((RYl)M%zB ziM~h%W(AA6MIXhjq}DPs+rsu7IWlKSDk%ZnYtk<`jmpsyZnRihni4Oie>u|ri6~w^ zh$8_It6!B40euat2D7SwDEiO-V*H_@I-@2XIDy`~opDLrcffW=d^v00dhwOHfXW`q z8;73l$-N}@A!n~azt8=plI4jz@HvctHCdQYtriH7xq*r>MOroy75==(Any}eIWN)H z`rxYJT(DyE_D)ka-qrb#kC~Mdl|j4<<=c`kR^8Zg^g6q@17l41CD=0a5v{GMFbh*Q zD_F9KMKUld$e7ZWcyH{!#?9(QKO-d&V&?OkaI5~*?Drqgfi58KN_ml;vf(p;qdz^& z%)^Rqp_RZVGc1#Q?A(-CTggqT#}}!+dH1dt>|K7HmgwwNbZDeK1vZjiTdu)w(48Qf zLcqw;3wMit+=hme^L}i;+T0B{I57z}=a8Zu#qEmTLq?^*C#6h%@m!D4L#oT=4fDOU zwX9#Z-@8>va2GJxotF~|a$N%ET_WeSB0WZ*veRmw4~LQe$KC3d6 zBFH;pv83zA9+0Q#$+T;W;!_5BlvG){@U3p4q)?lFl8Ktu!$vx$81LsA&3Xk z@YII)cF|@C(3d|6v&5^&UE*=%_$%trR(~N@8Qd~z3ne?CJ&n=h|6zU?F z`rltIC0Z3fV6!U7OnGXI3Wi4C44U8nU+(<>6W{OGH_5YgF-s!rxeCjM`qgyZ_#1`A zNOW5A#gFer?#mp=kBbqMxJZ80?di^yl$Jj4IL1?cAj!f@*H~dgh%b;ggRD};PN3~B z^@OQf_JBOB$BK=vEbS$Dw%(46 z*b=({AlZi)bQ%3|opV5gbaGp6ccrkyy>o;c<6gc{v5Z+Z=0fwT{;x%sW=7QPk1D$`AP|Wg?PwP+zz`gR1!Cf)jkjX&25)5M% zN6Rqh@z)rh`K;5b>ODL8=qIn$QEKw=q%fJ-)6BQWnZWZAf<<5HcT`msZ9hhE>wx!4 z_?28=L!;}%Jv29<%tL+!0(1qX4#MQW%Iyy@UhB+ehF@P|be5By;%8l~yd$Uz)TPf# z<4Am8A1^v6IwDh+9qHZ4bwVLGZN~<{F<0*JW8Rrr!r2ckuHe)F_ZK^uVcF$B8B-^E zVB)t4RT%Hv`ErCl>k=J9Tq*K|kNu^DTx}}aY_9IV2{n7WZG>fu&shW_IzHE!4wVmu ztergn;~ytszTxc)jaTfQd#LsZ?w-%>P4si1(^4hz*`U8&INTUZm=k{UzWY*i8Xlc* z^x-e0NZZ;jYc$Orb$WPdR-(^Yg30ChO*m{-*N%5`#VoR-$Yh1m69y||{SoF8W(MA3 zFVe18AW3v8n)p|BGcs4`XGv$m&<&P{l318*BvLW5G9m*1@Ezr4dY;lSm6Y++4sY)L zoi^wTWk0K~^gZG6+il+Ex8DITYE!`A#5NOQnc_RQ1@Qfum9N$9E3cq=p3O@Wr`GCQ zii{diWu10T@KM8YSofz`>}^fAHdW;|n}{`f$hM8%snW*#diOuIx*R}o3LF~VKeX2W zWuHpvtQ96Ydbh@YFSjntSHh`%)-J^!;zPwdc_&*VkB6>~S*gmY0Gj8eg*5H|x=kL;WW9=fGnd;gXL4 z|3TS%2ZAt+jOZb^X%QSj31DH$gl$VHFYi_a#eT_LZE8$`kC&8W#K+4U3zpwFU61c+ zyec`+xlx_3dTU+Adav!LDyiiQQ%yH?tqVyt756VCV!8anwi_vYtk!0_nZcadeohkn zDrAJb6RO5F)ue1nUwCPq14W70pFYI{7gK;DJ3)5|2tGnL^7Cgr-T`>7lE4mT0#ac_ zF+Xhb>Hs)1u_-A7paGe%{Np#*c}eo8!-_Xe^^L$r6f(}QC-!c7;TH#g-0I(?(IIIC zk-}`?DXU;;jB+UEuuNLznpGYxlU|Z!Jzwbbe(ZiIz09j)>yjR(F0~gK*DO^=On&WQ zr*8m9J-eg@&+&~7;}~^_ya!dGrlw|rpapQ>z~iw|M?eN)>5cWVsOaPrk zQ1sWY-2ki1@00-wAmqAZ0@6J8UQ>7{Bq3Qk3>1Cwl8zH#?+U;Uz>Q#Z04s|c{H#(_2f;KNG@d^}SlNn3lde)lY`3|w@q+i| z*I3TaSiI+&B7=N=>5pIkmva|iOuV_2^dhjMl+%=vM@w)y@iD9%V^{A7vm5An@3fVO zovh#OLrMtun-(MxaceW}S{G2^$^r~h@4V@DIe5ENc72;Mryn*-(wO?(;iP9hK%CXQ zlrE(;=%|IOVpi7H_(9#jtSxS;f4+Icx6|*mr43Rwu`?zvc~)>KI9vX#r#&^6&Ovrf z?EP0ZTe8wI*YS03`%E9TgG43?4C7%jiTnuy6sSfgh|@T1btbb`W4YdG}x zC%Q1JsD`Iq962G1P#x`KEsrz#W7cZpL;e{|;q^RSR%Qw@+!snRG3k*;(#f~(|MuM< zRlfdYEZBSJ-O~mN^jt?$yvVP3b48mo|F>B!9eN`*ULEv#L6?r8lzlK=Sy|bdt$AXh zS79~DA$rxuKw0+MVM^sg6BdnU$(m4h$H__b%Wo#@vE9Fz9SqA2Cd)mNDY?FUGG;X_ zDGT}C$)G8s@U5<^P;RzBn+%&@=8PERWJ4qh0+8M1%Y$a1JNxa0melo@1W2w4EsuT{g7GnAu}5B#6x(!z5yTL}feDSqYxw7LSV-OocI*QJKN+v9QY(gp=~a9E*K9IH zRi9@z{9QJZ=|c2nL&M+K^MgFJ`+gX+1j&$ZDSzf?k)`MV_RlTsXL8@c>#S*RGkN0s zZBpYL<&E>P0!6&S*{6FfRzlDI0|$il$r2ibuQKAN7_dmeK#~I( zT|^b;NG8!Y1(#ZzasF*gFsEix z&o=&TdczXHniP0l6$f?+Mh1FBXq)*Xj|k_UZS<4RMU1a~jZ17TRBIl#de?B4M;q+( zOk@bykJK>y0*STnL!svI@NnWkm+(W=pcncQ6cm5{7>uoCc7WLl9oG1N%*L>Bf#4+w z;b}QuhafT+6xXBsw}NyX?QF>BrVUQMo}9Gzy+m!&jsvAJZr-9F!?Css^2~gki7u`3 zS$Oz383p45wfsGfwNvC7{aSoOUZ6@!I_|f$B8_PlHCCLxd!K%cDd{&S0XW&?lEzN} zIh=w6LI7m094z?b93Ujzd#Ny&kA{}D3fHH`X0{V%8PvEOtgJI9{R2ZotJ88%Af(;{+Zjna8LGvI-NPzyl{*D_D( zKpb@$rg^#?IBrM(R#x^kkCYzD;7Aclu~Htxcr^NtrmVj4BdG~l{4r(SuRK-3C4*18 z_QiLP_Vo-=6ZcK6Q-;e*5U!H7uC89oR z*sM!SOB*7X)NOl}pt|=_G?HiHlX2mKZ&~ua@946H$Kl~G45fdz{O@ljVl-JZ?iucK zbVzJ2&Z|t)JQ}$y%vmWsd9zYsGg}=!b2sBeWY+RI#Bioi`(5UBBOYQzfrfaXA(0Y6 ztU#cFb#-+%+EU3MkpT@G?ZFNN2`r)o<+5M+56lpBs;w7cDcvW}i~aHi6n!ovqAzK@ z|JP2W;cA`$rD&-Rl%IJeB{-5wY2ARW`EfjtP69Wo!ON0|c?@K@#4=`@!uNju?HTKc zEsU^?TM;6qPQz*F0y1vrj)UQ0eOYbF7+S#LL$Rigg6E!IcA5E`$tZG=?(Whc!Wrn^ z6-kw=#tIosW)(i@i_o_Ofb)vr+9g!l4y`C8_V6n}G55uG_P={w8s)Oq#V6j|MEH;H z9VwdxcU9v~8mo(Ju57@jSvs90dGwI3>D+F!ta&qOVp?4OfPn}Z|JaZbA}%Q~zXfc* z9A4L~w5A#;~JmWsO$njz@%|VpUl|R_!zT0~<+e0y1;0o6V><-M< zlpr!USz1Qd5|ukCV9fx7yv{FIx;d_gy=G1v;Vmb;FG-7kf{+xCDn_}x_&^V1GjoE- z!+--J`l)eesq^M*m}ro3zCl9#&u}39`u1`TM3xBCJ%pn;bUu4jQZTTi6@c25=t27eeBf$H$?tM~^Xr8EyaU304EBf#bR z;;s|Vm8^7{7fF!m^XfkARi&EAD;Z3VN9SIU!Tk|2KEKo2)a3FXiz#6^*dh3$M2KY= zTf+_@ohm@JsigG6L{gK`&A;DK=m+KNV%=%Ora%3VZ_oy&{^!udf_&npwbo%td+d1N z6v1p5c=hbJq@^V*h#nX>Coc&cK%#A2ra8QRb?jPk+%;Xs;CbzlEW5U%tu}u1;bZm1 zSFqoC6TI!KG~0vFx`S;G{o}_N5z-Rw?g9WY+8W+*^SagGh(QThI}gnWJIN7(TJT$F zr|Nut@!NuAcmgLF$i-xw2fjXiZ>5-`JFwP$Cp=R47`b3x@?p%UhhgoyD9AG`dXwVE)xz6`+L9jgKUst@pb_t!^no4ZIpG$X@QWYl_T$(|qhMJR`>G!^%) zN(ONPm7FTUkO)AK@1pVY-fS4Eih7$J^R)Ul|7p#7m|2t_AXIJLHXoEOQf)*=AzcU{ zXIq^2y{U_pxO0e6;5!H-afD?i9@~XzwcViw*A8b*?FCmeMES{%Qx!|qAGOwQins`% zM>Ph6=_?@ZW1dA_BVrI-n=kbWPH9BFYAMokqeMN@ir>rlKhPck4NDLv*-sG638n05 zshFch;h3}rIu@zDEPt3N>CE^b|3xMd>X9RrD4sPn313uFvNnSd>va!*ku8Z!358C@ z*Byr%P1{ode%_N|VBZN*4UQ?~jV{DsmZDH7=SwC``CwwhkK^+WE#>JY$d)JtokE}~ zum|-%II!3^{Dym2r;BhJaPmlNTYNK=Dgr)_)S;5UdIcr4{@ft_mnr>+F}LfJO$eQk zaQu72nC{t^ZRa8+o$0L}+E_v*c6oKlw`u*`; zmTxMVJmi@?mYJ30^y8NJiS5UqA3BJLvK6X}PyGBTE==A0hGt6?;Ed04aZlg=VgwCQ zJ7j%M*E$#vzncPeK9FM(=@A5tY~0CfCq)K!NH5Yl>kT z?4A$;V!B-zXp}oFNh7@EppSwuLqTwSN-r<3>RLhQjf?dffHg{z{ zMN8|YxVU(9)>XYlLGc3@obj)fp@lU7V%dlyd`hqnAqV8Hp`Uq~l zwqA+cXki`rN1ngK^>?H8?22W8%SdctRWpg5PGPDBBj#{2?)tOPLCVNx^BLCQ$c<|= zxasiE-9?Q5K*tC{6|k#>zxLmR!O|Q&TwXA>RMXI?DV2IFnuEviUN2LIGqLY`lc<^J zwlBaSOMn0J+b72|s3GNeApsllxFWa3a&e=HJf*b%n4iX`kEenTMCj195 zV?_`DlpHd;-o7pzPxx5VFx47j2XY$KqhyL+S2(Wp@}181BlcPdj`V@C)4e`)3=Dvo zZ`#iGm!|8Tt-?-I<%iB7?+2aATLwXzmX0`3v_S-LAu<@!ybfMA_{Hm&$Ydy0T22M{ z(ca~FLM;|F`FP>@<=#1?TN8ex=mTeZ$|CMN57VojOy~Kku)?$`2r z`XzR}Rx*E&(qnop1y8k8bX*bVWw(PeTz*1?H1`Bm(>vtMP&UK{?B6sMT zw0NF_bK@gLt|;My`@k^~g40a+ zcudu1XBVh}e<54~0|q0|rBrLv$Tk_5If>G3CxmnuAzTwd8C=t5BQ*05yw{e2r684| z#OZzEgy8?Zo`wAd(r&fSHNooRDQ?TK2H$%>k)fG}VDM3GZ@xKx0-{`iv>%T9qskPtAP<(Ic1H#qINJLNgIk#81oM=R zk8^EU30(^Oup56ZfV4evIne+0>Ajp$GTeNS^$tPff3HU)3BXd}lPP1^gILxCj(|=!jLns|jgJ z#o+8A(ctW3e))w;Way%|b7+5(PFPrY0f!?_Rsi%+kVdN9-OAR=Q-uH~z;MM?R>sQO zdW&Gr-%Dnel}6kegJ)FvPX)WeIA6;ngTwKOiND7lpfY?aLN;34BOX7Ac72vCOlDL555v~?#ii)tGGqFb`&KLn4_f}rEXC)oIR5`O$tjqufIC%p)ucW}DgE1rV;(sr#rvbNlZMbcLhX-m zH39SRa}Z2x+Zc0_LXJ=oYEI;BbBXm8vS(_QD^8JaUHQO&_kF>I7Z}6D(oxiKJ{yz5 z-a?}1gjZoc^bZi6E&G$#26boaxmd#!75x@GE>qZRmSll5sn16RZUieea-7t5pUJe^ z{I2Jvl`e*!4Z`_2oj1maCm08m9c@Nj|D3(u6r}V~box#;Of8ra2{2VEM4>?jQ-s<^ z8n0WXUG41l4#Av6vij^qMZvQRKJU};w3F1$E`!s^jhn&YQ(=sVr4k8n;XVV}n zllk9(*}E3I{V$n95tzz^{uj+OX>JlZqjYhyb>RA-a~^s}tZ8S((f!L%9%KNbHjVH< zOB#TzHLwz@KYFh`6m$PBc^+ki{0DH?V~EX)e>B{?d~=)K6<;$YoqwNgw0BvO z@4>o9AbQUe&Q}@_V~;I5%(xODEoS@Q3izLNzz{yAitzgcCwJC!u2AGWS~1rBOBK05 z0)3{tj-i!-7W031m)=K_{8Fs66;NM~@cf6^89*}0z>t-_>ydk`V4$~@!(1Zqj&P0X zi|$XT@cjS1g(Kfhm>Nu&b=aQY-2N!vAElUtEF36cC;nr$K}cLclD>clo8e^nR-$`# zbmF`wOLiO=k(Qco)fq`82as;`0)!7{O?Gs(t|phGu$9z%QVEVKygyqE zCKGn!L`X2fdIY*unA;DtroAwjK2o?WY&ePwOG{-*8a#P&nQERf5<8i}{)(NIHD49( z(e&B+fVsAg_s|KydLPqr!LpMeu*Y!`B=O;`gC?m%i}TP?p@RH;@N~qvpoR@tW%_-2 zV{C+UmKbZC%M7=m8btJfR2CuM%%!m_#azj`Xn~gJsMCoZ+(Q5r0N#(9(v!UtT#yU% zIf$ZX|9rB6{wlZ;g`z!WCzL7)Om98QK!fuGzbV3#$kYWvhph{g=N#I#^l-h`X)lg4B-HS zu#ZzXH4Uw1rKkG>j8j#boWNx&Taq%m-rG})4afc}SebnL{yi0c^_`%7d5Hvz=@?v8 zkNjdp$-?uX28=cA!<6ln9p6vnK z^AQHEY?YKxMu$Dp5WqEVS*ESSOn#NUR?)FHN-%T`S6|2@^?023y+Wt+T4Ce_d{@|y zKQQKry!!vkpRG#gNhLz+aW7E36;``ulZW%01TZc--WUffne}gJiW)IJCf~BNk7sT` zFbj%P`10T?I=S)eD~+kSG(==BeR$fr($yc zc)1I#)t^Th$!UB6?s@)SW4WTWUTVoJ_Ae9$+#viM+iQ7(WSBm^4WU!Eq7}~*dlZ*~ zXC&05#%JJt3?_G}h{%HRdUz*n(jNkx+5OkxsuLr)YE!H&-#sJ(jx zKiA_zC^0Fik3dm)q?cpI4XO$T=?L-;;JpmNkA!yq@!e6|I9b!j4L=MXi|Fw&53;7` ziBJ#_NO*g9xoE(SLjzH0X7;aK*Dc8q*U#gxAi#A9p#sn-`VoW1zo#HvVdhE*2dqYD z`5JMud1P9Pzh#E8Auy~k`p~Mhf9LzmYjAY&kEhb)%$#4TAdCWKF3k0|4N$Xof9${G zDwZ&Js+^jd`tc$Ep~vC*$m>59A`0W4|0+ps--AX5Qraj;grO0X~VjRQW)CMCEHB+TB=cb%!VY9m=rvRo^PGI}8?EWv6L<$&z*V zBTd`*f8y*`elrwA-@mJ6*ki&w&JF(wczhKvETTLa@Jr#xQlt<+aPSd?*@v+YN+$aN z{0<$rw0WAo68bdSE}u?<#=BE=s8N(A%H}e1e8s&zzYTGhhF|zl*eJQNu_ipng|`3k zn(OtKpVSyw9Nc&xxofs{S9!qQVpeU+3TP}KodpIOD_K1u{&?99Sr0iDSj2#Bi_@ki zEP~V!HI6LVP1@E?aVB-A&141B>M^Rne}aGfWbgp2knu5F!d9tC`SDB1$5{6G$N5Um zJf=pB0^hmHj~=`T9Bs3$tN;|%%Kgvbt99(3%a*8Q_+;M{jiTvd;HJ)eztJ@_Goux7 zu^WbE#qLqh{zo;LnEewXb|5j4{06#4RV}R^FfZ3CGwOItk^plA2ts@8VRH*x|1v;; zt5D~zf@)hFLR5i#0WBoUlP7j%MUt#cbn9P^t9G++e76N;-0i0M=#R-&{{DO!iN##E z&dbh@Ri``uIMf&+*uIB6y%eC<(hQp;;PnXy`4 zUM>Y!$D4yM&Hu%wZNgSG`?K#@a^8}^eN!&%#Yhl0Q!x!g7CsqXT)S^+ZtSPRBa^-9 z7(L4Jf0;_2kDSI;lv0PjWZ%_KLmpukV^Tis9@YYS!Ab4H&f)nP@Ts(!C^mBE_oW`6 zk7k_4{F4P9yP=z#59+!qX`v#MwCUQ&yDKJlb~`dtm)pwTdO>cTjYvJ8JX$(!!-aF@ z8e9?*5~ofrmPT+wK>XRZC1BGU0edmcYHO{9Td1>ed?PyByc*B3oVbXx=zoz>$8^4t z;PS_Oxn`21V6?XL=Csz0!G{RR`M=PjNcFg`cI-IG!O}f7>Tdp=lqRQC#MB^^fcaqd z&keDEtM9b+Ke(a7-~a};oH=c$PmT!>J8+)F=JIiJ2&UlS^?+D~UX>>J3X_adODCZ( zu~!!fFnYA`l@@Fy#`^#&7Y}`X0sgR?lO?sqNai4YDKoQ&PN+n|R0>v)rQ+Z<(KiL>&P>A_yT6J$L{ZN5<;{L}2{gORd#{ z)!E$}iAveN_9-5Ol#Pouv=z^RB|9gOaD>it^YK~Z@U2L(>x_U&p_xNQb1@!LgnaAy zTmJ;-j}OER+$Q!{;<3J2;*%PY{^z18sAc$;G0!+Ana=31E74|;4cpxX-|3%s4$A_j z@EHSoc;`eHxBytHXRjUYxLFCUy-jPnjI=8doI<;qD`;A2k~zUPDSeO?5F>uK@(IZ6 zEij&2SjaspxW~dyMQHJeeOUZa%I6=$;?o~UUi=JV>sHum_r%#Q^7Qd}5x=cjZmQF^ zbpG(-h3i@}!*8qgjggVMK=QfzLq#QYbhdIe!@Mf;!>q1B_r$!zm2Tszl8kYZb1AKy zKar;mC!O(m$V{?M0=2ujC2b~Lt?N$TtJr(~SzKaq=-%8ga27ae#t7Y$D~i)JdDL}R zZvFGR=Gcns-yVr1B&6SWNH*qD+^Vu~y|r_c7QfDEoy{bhzO|9b97+w9A8XNzj`ezW za(O+x?sNvIU-HP)In~xh`xc|J7TX&0V`f?r5s_NBA;0({FD;NOJEA|n{#)BI&Tq3~ zT`1`BkWE^zI!S7D_}a$@#iEqkDKIP&Hv#ugg2 z78)fwN)^K&RrlrI$vLR$FLP=6&$mTV7rtLPWhg!kUTXH0vAuXdgX8;Y@iAw{$`z5r z7qZWmY(4C)%HFdNYn*S8p$25*1+Ef|=Z723eLfq>$G zV1ivT8RmZYZxN2#4j`%R{Z70MRO8_Z!KY21(e#yycZ3`DCMKJ*;#Eg%IZ30?THE^V z>C%h8Ps5dh?_kUe`$jSdGMh+DrAuGNJ-*{$k;R*dk5R~^X~f?4E18R}=TTB+)50^J z-Og7!()Vdh-n`X&RIjhV@$E&;@GoKH!O-Wz-_%W8?#iJMCq6D6R{4PP&rx$MmV52G zr`Tt)YQmj59NZzr$ z$w=3Of3x~KEuES3%3*T4OsS4*e%_$+m1}@n4wUKh!fr&L`+8<8=J8 z-Lv@xO9;8;-D3|(zNI36fXu0vPhhLJ!3XtAJb%@ z(qM~OTCMwj@RIDPw>;eHx%>Uglvi!VHDf9f)4Qk$b4c?-o3=8&CS;Yt;ePo5--Pet zY}Ih>t0=?RSH8YwOa9z7s3*!i=zd8;`iSvn@#o?G)~QeI5$Wc-8YC4nr@9%5Q{yN` zl*BQI&duqb1^Qi7-*D*oy4aB>)l3>4o@ld3-s$`IWvOzd!eQg%G)wPFs2~e> zq>gS1r~Ma3vY@}`Ey(xhB;Gk1844kVWMZZ~M26SPlgy_JVy`3^Qj68af{?OQBF-no z`#Dz(g9J#%zw5%^GJC&r8+sh^-xVFJ^C)Y`!D{f(DJ#gqLfcAt`Fk>V)Nmk?mkbMs zpzH~YTx~xU`a)Zzhu4%cO_IhpZlmICT<*+Slb}a9-12oSBMHpyUl>2JW%aF!M`Q_A z>$x0PXLd}6CgbTRN-0aH&-ns33Jh#?9Ln zR$w6%fBEu(!t-k<2%m*qmqwtFy8T_b4RkWR!kOVRp>%OxC@r}6gjYuVSwwC-rRoD# z%=28H4r(0?msuT$Zh-^O2+W014rT>|N@O&bs3vCT{O&&d+wuuwrzQVl@3ZuR+evoQ zdf|Rf;tcV$sNOXztw1^&cgxWLHxZ1NhEC^H{L7YYqVVN}lFI&!1Sm8cw_mbKp$rNi z$_wwe6KLV!5Sd~5RS*P!7?|ha@od=h*`B?FBrEoTtkXzs14EhmH^<7w-OnKOQBw#X zl)16TEtnnEu5Dv@K1m)(o>QbJM0fXexUswz9w=m{2ST3OWfeI@xuK1d zU)9LjN{KTCJ#;5r^EkDc+si80`s|Ut`M0)0sfB6`H54gMW`^4mt!vZYD&6kFp1qlB^m>Jzf5gNxN|dRlf!o9Z`yk?y$(0Ap``*J!A6+L!p7F`;l`3H`9jW-fMa)Wc6j7%+xN8+9m)H-T!d0lDTm7M z+sh6i#Zlbi^f+^38XlR4TdsVI=@n!r>E`X1`9!RRdY*#;XGwTw%NZPSp{l z)%SeGvfE$?6~>(A#dVLJYJR55in-lEU3l7OHPLLMSTE_gr3oUwqnFjAAtkNnSNq7scFXr7UN@`0)_~3A z(r@HAUaMZZKEH{9kYZZtE#vrvEs&BpLj_Z0vylZ!`_+ATm2XLKe*2Ghtu0djNwpKN z(VM>vNG#l%N;dscRgch61Q`x^P?s%_yGPezD4I0KW}e>u4rF|=6HQb62C3SYgxwY` zagL9tVcWuSc4WCaqsJx~qAFF-zw`@}caf-P9L&ArCa3Pq8hcCkdQfs|*FQa)E`*B~ zsZGRrTc2d6305%QSu(k$@&{Jq+u#PTqC0hoH`|{`QYNAp-W&x>*rQzA2i{#fse=#C z5~vqR6gio4L4R@G9Dt8ZMy`I};}veX@RczE-J7y(d_uYWE1TrK&0Kl8b0Wo!b} zZG5FnNe`!*%GuhOQ5Lb!7qHKVS6tHvCjI&Bp3HcOSR5Z`4$OveG*hXl1ZVgMGTq_( zf(@K6goAUZA1<7*;NN20eWhd9L=>i|AIknac<-evyJ*#T*7$5vDP=R^PYzE8m+9b} zxq2nzNaXzsVM2?6(tNCLWtnO@g`;Y%Y>Gp)gHpCu3iKALgI2tQ%->crVKpR0BXVJr zL9gxXRA}b@it_r z^0-IsHRVi7<3dHvWAG@1WpXvW_iM1Mgzd8T_ub4124)W%CCkn$eS&E5y@0!L)z`4x zhX0mj2zb2Rmo5?Eb8E|@Ay$aLGiGJ~tB|bLsP$#-Qsfru4w!SdJbBWDlQy$aT9iXP z>tX3IJnfgBe5O$_FmKD_85|@c7$|t*5g&!GXS=n_bW;DF53Y519Z5A?-=3V9oA~=$ ziT6%ulx59d_za$CH^xj>V>gQ|ZtmNM%d+o?T*$(72lfH|{XjW~!ADkQSvABuo;XH1 z+nnSgq0Pe&dJHL@_?FTu+`G#us~)V>cYD72Fmbma-_DcNFjPND{o?7V_Ggm^^Y*kS z`lE|A83VKa)oY&eNlzRbTm$sCLi?Y_8(k+mD~TuLE-o%@+660p_CKB7+!ON@sdnbg zm`yvYnjt${S{ju0niDu{k|sp{yvd%+CnH!)Xc^HxenP{&Dit*%pI_FTijvJa*V?_A zz`h_+(M2s{OYL@L9c&feHE59J%JxqOBSX7^Z_|ex1qJ17G!7@Lb2MPc8f`COo7Pen zYftV&!0GzIX=dM_u%aeU)B%k!*3Xt0O8Ji^%Q$d|;~o&l;lax+4)1l`1G6}Xe&ZN8 zCDJMVn3w&TxBNxcBpXU7wtrANoi&UsZi+ROprzdC2P_Zg_Q40uRWB4kG0zWr%DtTD z*Kg&w<>TJHPKzi>bJjaLE<{b6!Oj>QPu-hR^$Ty?;iGiHp<0?L9P1K4qc7rhnX^`> zh|U5Ha|-q5W&+%`pnH1(-u8iBYX`F<|F$D2xw|4WJV#bs|D$dzdsoJX=E{D-#b$XA zMpyyA8(gFEQt})podgbkIh2lsP~lz!66Ie0F$iTdZIbRc2V|`+)|@lTNK{ zx#5QIln9pvT=a+=yC>=}8iXUQzi|9HKK7$n!*aHz2^~8qb@x4w%zondoJk~mY~=a> z<8_@Xg`Jhpwy4#dmz}g$V_6GRvn-wRF^Srn6+hX}MB1b+qq!)4bX)m0Z4*rqZsuKd zTLl#FDVN?Ue2r=-7C}Q-MnFvav1wO~#x^3qlx3&_fnJLUCLB@C3-IFj=ua`ymC=ia+|ObpLPqEZ1^3T7VML z&KpJ(8oAmS%xv1fH%pU7HshI7jfl?%?9M}bL#`7>M_~{(e;><*B6aHcL8?$C8g|b; z7J4yfMlTwH02-_!@lf3eYVAPQdiKm&8Qcuq%MyPTe*9vY=Ph*-AH>8wjJVW#IpH-n zvS~6?Or-91_SLFvSmh4vUBEfxV`rw24-(I4VTcm;L(rNMcd^jyho{4vB2l-ho*6}D z-Ld)6F1Bky7B};Pl%D0X=H*tVuQ)Cp`du#-+|+0sI3Q9>aZ;mwpBIoVJ0JMQ@n#ESVpP^oe;Cwtg`7ZPOkXrMlWjn3k3>M8>8mAbbm8 zgcc-rXrd+U-+-2O%x7qB$L%tcST;Ey^hTwGi9t0CeL44d_|aII4gO^V-lbje${I-> zozHU9!)3*TW9y^kbR^1QRBdCbY-(Yt zqI*9PnGBBioi&o6;&hrH_8xZ`;CTvGXv8)De4KW*4?3Mrkn|+QUx0Qx;@Mv?bfDsS z!WKNTVB2xWT;xP((_vUE3RTgnH!^}Jlbks2>4nF4(xYb#*k=^zvKea*2{`kmH1nl6 z8HPWmD5JRa=yvq4un6BCA|WZ{5Exv}Ob*W`)i3=TQ7RZegV+sUVEl+3LV=CVpHwxp2} zd6rSd+GHh^?esxD-HwuoS8 z>*zRaS52B_lRyGufqfU1D<;KP*Xg;b#wKEl8tV2F?^kVkoaU3R`+n zh*$>uZr;ffC~^{Z?nuP=dT;)a-V&bTvM|6$UdR-=sm+;~ak zHhMop6rNsOp8Qsu6J#}eH=eWe1C0F+GCAYJTQF=`0G8r_TM|g@5fCkmtHW!H+4?Mw zoQ$KI9>6N(-`bG$Z@{qmG3MPZN1}Dt?+%mr9Tf5RDB*SbAs=tr^t4bZ^-z)L$c24c zSNQY!9aBHN;S2#g^*h1XROH`}j=)N`6HF3OQ*4*%*zYdlo(Rp9Rn(9**s$lmbIut2 zjip1&YY_b{mYDSg2g;QT+5J1>;|n<7%MFlD$m~1&>&}j|SHhOdu2}%@MV!Y<+8cv!#>szOWrry3|025y)q!ICD2k zP5A+OKTrId;yTJh`4zYCi&SHtsIJ;|?@!!ozgh0}q?u}Uo;KflgKa!h8+&B(^X2_6 z8X0~4`H;;Z#s_HIDQA^AC;*B4jjo^wP7zrTAMr#eC=AkWRNR|rqNt8C2RAXaR*Fpc7QY6v$f^&|Do!w!>W#! zaACSrx?8%tyOnOFyQD!j-5nw+4I&^S-32!TH4?G6sKu;7?~oj>3}=zn)U#pvlgY{kmjISs&=szWCfbE!(~6^1*&pN2M_Y-?bd`xh_j)hsKU`3Ca5WfU51)vR1nZ?5Z}S8 zXR2dnswawO1W@XaQY`RJA6>1t?R}Beo;YTVS7`))hj`|d=Z}`*<4Ab>)APdKMS|8h zv@74 zkS}sYn`^**O`ipzVFm!VN6%bOWpvd26h!VlskzS5Pk3CoG?gf#FSxs~SUb;7NtVmJ z>z2< zUvG81`V~x~=OXxzXU}*-rR45YZe7zp z@q*Y>UyCfZQfdUixRZ$b+WO2EOsI)sN?!M359lgLp%qQdQv?Rbb}aMBFFQfPIh07y zs&$H=eVZf4ck4;qNSX4he0 zI!%+oDTyI3ANxy@`joOiBDZ)}BvBi`b=WX|~o=`+T-_d?GSGgx89~Ff9yD-pFZ#|0R(hJL~vn;VZKc z!+})k{?g8+HiD~tKM{e4#6MfBs=8$Z>@x>GP*%6Jo!xGbaz+A_Ph$q!h=aOOg7{J; zWn>qiwggf41#ges6k_*6_AnvRv`C>s0=abDDnu)ffI)=SmNZ_&VJQA03pwQI=$c5N zAqWYkrrhiLB97HfN9`VO@MxhGZ~5WSm-lwhL=*pHOcvW>sl$(?(vvL}YXO`Y;GV-B z{CMx)sbtqLhq1t*3>B`52O?9fbQcvmEFb|CH|P?3gf*<|c%+sPoeg96C#~@|qr0Sh zt!O~nfv%gmVfigg38vdJNZ6yeh~*`Fkp{8Z8|W(Gyu(;wSAkb)K&)Y6(?Ev|X>F9<(-_Jaq~fI7MA$HU zyrmt_&@7FTt_TI+HA_R4OG7m)qNEA3^@{~d7R*Bp)9+i3F~6AJ2Mp$nG3&HAe6L^< zG>SHPie=320q!ThFH+$Jpyx@DjwabAO0i&b&d0_h-Uj5{x5t4RFu@;SL&ZWoN)Z1l z@Sb`>w$oUKQcC7O1pCXq9zjulmR5}NP6fVGCKe{ZO&QAz*?Ak~oHlnu+O@F=XT;Oa zQny#;^H3gYdihtE`TV}kFJ17|;z7-)Mx#l1O>}d6D?mcEA0S5*FJ2|4PdR?84!U5~ z(b4%(g=Ltrih5^(-ZDn!)l2BsPw3T8=++Cq6P(ksMOy_k)*jHQ*4`L#p9+@Xr`6oR zZ68C%HoS^|9E2fA5yDis_G6!+;~OG}bpA-f&M~T~YK8Ag;ajT?XCr0*naxecn31`j zMDa@o$GXKuBqB^j%x6<1m*462!ktZKjRlEG?DaU!H2V-I}fSnJT650qpwz4a+sp`;h; z1i;xDYAj0An>n+!t-H+SuG;0QMLAks1s7?rP*0Z=H<|3&yN(S zIzh3`LUTv+^AG8wX`WAKukOoE;5()sNhI_e@QE_0B==8bfl}G)juX)2qnVnTx}K^I zLVV{C!5f<#POl1TFSS>M#yte>F4!$AXm`|@eiZ16W+T>0bqG~56n_ZEU7q>9oRF!W zl&T)1RkuG*j#oR@oT&S98QI&C@l{b(HThbJlSk$eo*+=2vHh$a!4wCohN5nuJ6G0787u_j zKSt0gv>LPM(~IkcEhK?HxO9d5Q#(#&8{cS~U~YT)#YS;_=a(H2fn`GlkR7>i&R%s) zv|?5_b;Xx_K0B5qs4T*HhCI)aiT*EmT{<-bm3-(lFNYtq)`n4{`|%y!2n#icCN+x5 z1^)0HEiy~6^K_53^=d^)uZdpn^Z&pJG?`%KAJQbzEFO{19}r_|p-7@vee?N}f8UpH z4V{3|LbrF#VrCft+h4aIG$kbByDzv8t^zxtoFSs2Lmhdx5BsaoYBQ9`Rfuc5KA1Q> zdCD3FQYzwsQK&JPgotDs*Fc!I?P0FDlN#i5crJY0v!qWgJK*i9XBAazK6}Bt$ZYv= zdjS;>;n7<*V4!GGx5eXjLk`hkiU6B|3>}(bw5Q3E4i4R*lngoA6S3PQj4P}>A|CHrO_pnP%Lh+i& z^wXc@;DbkuI}?+K)pns*Fw5%9F+wce2#ol;7V;J(n}+Bb#e&i}2nZi=E@#PVtF~~O zE-3rdj01m*6IWtJ8szihjd<8u8vexCaEJ;rIExOy4*Y>M3s3oq|IAB=6eMLHLgXz6 zP4gPs+V6D828OM9Rx`Wr8Gsf@-ZW&OfAeasrhabA~+AqEYV zE=VCIl*fca!mJC&EYDxeqw&FvMY7}0M67}HwEpjfr~0?%j9eaPO`vZIy)ivBTuHoY zaia+W^3Sr>1>n4%e~{=f3`S8udcZKAe~+uSmNHeYW#v7^_R8~|+aS%1I4Af<_1DVc zM@YFGZgOrbmfcU{Ajuz-$kD1Ctq9N}$McI;ceo;)rD}&BvUaEA>3pNv&IhW9mqwUs zIg;>p9Ph*5ZR$vuQO?IoS$QMEL0zW?P!Z{;DMcHN5`o8(vFd+$;UuoDY-L3U#2;% zBBnS7BzS%@1qN=#V2EfhNMjNP2F`=NfH{8O0JlL^NB7&2@C#Y+w=tpox4B;wbMUGtzv|qC62NGanb{f(*=J74`KHx_ zpak1b!w69!Y9EO|7>5ZOSwfl=z@(fp#0l|Bk2DafC$1kpWwyx} z*&8hS_}W==41cfp@B|ZUmR;ch7uKIrj{Bjg7qrpBfU7XN&`f39<;Ui{ZgY4gYl*Re z9(k-M%l=ri6}a!+2sccfrb413|KX}#3s<2|Jx4{Oa9AV6@T27@AE8x7EirGRJkzvM zJ>l$7UBbNYJw?u(uk3>0lnzFF@g8}H(9ZG;_|4W3AzhWnONAjt% z@|}SwFC>7Hyur66d_VMs0ID-VxvQYAd|ITVXS61=XKT zM=v4&P4ZVwZp?&RL<|A!`^PQjdQOG9&xvlkj{DHx0DSnwGcDAx5TN))YIgfO^SRCJ z;U)6%VW>z)Z97uVB~{e?vSfl(l4&$A;m^M8_^p+eYyu5dZL%&zIM@Zi1fT8j^Hdo* zu;R%+E}?or0a8OREnP^<8yg9h@0PB{78Y_dPPcyM#e-e4)9JU;`U;E}-0Ihe9MCI% zf?;g|>txGHxB5l+G|JC{p6-^{L3dPD^~SN06ililQxmqi#)9EX15>*xd>2B208?q{ z{qNse_xpB|vS37}(Qv`A&%s$dPvL$WM=tuzM|1VL+1+L`)x$glTN&+>C%EXn& z1#=%CK5YM4iVnR)pdR4?Y_^Ey$IE6nA#!F`UohAlsvcA)f}oMykGF$MK@s+`i$AC^ z#g1F9@2XA-MY2+iig)C+aOPB=WAPQGBvzx>x|^pU7QgSho9aee$soVANqrHgIp<&; zB0-j6M#0+<@q93PT+V&o zsQx$I6_nk}cQj3Zc4?Spa0uRVFYCs+u|-h1JX&fva`BRO{o*0C(mS6k7D#CSLFf1B zkV35CDSg&UGY8`#3dyVVxa=>`aOnl?t<*_Wr-6PVGz;y13$eyC?SQfAm=JO}d>({I zgwp2-r6SM1u$FY|X(V_U|NS&-U|G?}ERXK?>M^$gasMQu-{Kxz=l==*r(unFK`U6` z+DtY>JZQx*!XwgoXiyV0wnWhCvIhnmtPpv41h;%iNxhAXHPQeeFY?SEMxp$F&n8G| z0ifa@Xs`Bzp}*RCAN4A~&2(Mz1JRk+GRV|F)R324J`EaQG|nyB-3mWXd-%fSRvjm<^cS|Jnd}>Isqo zqzqf21__0VX8ksc0dtpepn?EED*v59&Khc@%r$iUAC#Vk60I$WbPH5Zj)5r#YI#Lv zl|vwqV<7m01g#DX4^Qr0v^?JKxq~%UAO4Ah_YHtop|VV6=Ob4D_5u~O#|s+0q~mrg zkb?O8pMZ&}=1`%pTZJKKfpt*V8UW5Bx@yWK;%_qB)r|^Z0_85dGA^EiMk06x2=xs; zVTLy2FkNEU^~0x{x~cGuEd1ihWq4)t(f#b=LX!)TvOmOy$T4R`A<;;Cfu~hSY`KQy zd%Y6vV*arHVxWBn(8j$WzzctQSAiB5qOB&32q2fq7w=P@o8h~jFbq`TiMtV{gP9Sy z`Fkx5Qfo@9NP-v6xR>@m$!na;Y7F5Zkf>;e%fc)(npwqNMsUVmMsW^cSkW}Z zO$KCNIJi=DoqS(MQB-I9NSOX+zhzIOVzig)=~}VlbeMHrL~3fst7Riq)$Kb&=7)VE zLWSRZ}KDoKE4&f?wcPi{_UA*Y33jW69Q3GYr07ebdBN%L&KY1Pm<$) z5rsQ}?8!&P?(BWzh&hc3maW6cN)sW^G)t`9qKvjedsdJlXac1CD4+z`bxLGEfJ?rf zZtjZw{rh)XBfIW?5S4_z!`DsV+m(+vb7HZ};Ym6!wQGIC=zz5!KSe~Xb5m` zb}P!DDvwE(zU3;VeZXMc01#ffGLO7}&%0ghjgu?;(yTWQ)wBRDUtx2w{1-%!ASCh< z{pd|SUHeQ<<>lkE21;d%Es}0q8yhR2V9*POj599Oo>^Z2BH0=g94#x`-!crv`a>@k zsN%2wSko&1)0w?La19P0Ne4oGZ{;+q>dCgrH?BqbUh1qG|>-h)|wDbZc6s|wk?Sk6W zAXx5~V3zOmT7kr`TW70K*5o6IGD(#sncyx()OCyqMactD9x}!PW8w6)9#m834QQq) z5YTb}4+ErbN;UC|N##axY{HViK2&h=^req*1;(x|*miK@&&DhVoBmBW+`m6_tE6Kr z^|H{B$E_vsZT_y}xxrB#!y&9*metpU-(sUoBmJXw3$q8`d6t5xaeAO_+_iX4OF*wy zUjF4QUs zCw7sChwjnVz}3i>!nN61FLiZns7fXDLzkf8R#sNl0?D6T_W=@S3g5P;h@96Acg~>0 z(PQC@y!+}vX#Y@3-F%-)!bbR64RV+){H3)6zRGCRhD8zsl{|p$ctbXvFqy_k-d0bQ zNZH9HDIjwrhHAWgi3wF1?zosXRxSuo!a;zdqo9NoKtsv?jqPEf945XZo4gz^qKJ(( zch`SG>MyuZwAytZ6QIeU5S&QOqJTA9;wzg!7oi<*xBlLb(fp&Zq)oEj=e|`gD0!y? zWE8W2B>ekoV#f<`l=z`|rc1N1geXb!J|NW5F|U&>xaU|a`Q5_ucJ$YeLHRQvbH%$= z^fjy1EaL0BN9!?YoU8*5jhwc&_U|iJ(2{{tUI1X8OwVbvi;1{WpdHV3|4Z-F!I$3Y zHd`fl36@cg(fEk{_$_l&_s0m-vYhwtj{&^ZqCW}~tYjveVHn`kt$ui?X8CJ}FU5ug z+Lr>Q-x#Q1&kl}esn#k`y#5AISheQ8VW{;5FQF2D07?lR?h+D?jQu>Y8w|h=0IB~V z2>pUP#v{;9XKT5R(cI%t@f^%TJbCr(%3-7(anzyw_7=$K-r zwFo@59;j1;qPhCE8HJi&uQ?7l03@Kh0iBQx?9QBP1q6V9pB9J~G&H%l)y*G(#2Fq+ zdTwZXF1havWR?JDCz|({7;hD$l6tc{@*$X5k;U(HU0-51Z;ifihX4n=zuZj)coAO# zxy}s;s{lr6gba;6A1R<9nE%WbhRXEnr`s3Vv;hlP23><%d#5!-qq8hnVrZV&{yb> zzp~Z+@F1l(Eh91!5ZpC_JPXo8#|Spij*rvX(I$Lm-R@FXWCv~H#ECu zA;LPTWUl`FM)d8$oE$6K9V8XxVsCK3BFTXWw(wdote1MyksnM(2Ukamc@9u!zIPJp5ra)19;)4PVlU5;;F#dDtb-*{7R|btA$bWLL?A}sSwx3DHoO<-quP%dbi774Y_+c8RYNZnqC5~YJdb42pVABL3`gam=}x~p*pt_ zE!78oEFgbGHZK6c5hw_7I0&%dA^^~J;ikWypCRvmm&>pL3ugKB_y84I01q`bKOZke z4O6Ox3JUxHtukQx3mEtyXBiJYJ{snCI5A4~{nxZDBIxy)zacymFcI!tZI?-td9?9g~98~8OJf^-r(S494J{qEz2n8V8Th7})-rv02 zB#M5QN3UF7Q4vc457wq{$7>)d?}sg~?T`17K!?imaG^B|Oq@@<_F&oR=>+#6pzQY* zBz84G4sIXR+QB&0$eF#DJ8$%MxD4TaNmVjzye``;SN*|B=9ts&R^CeXDCM!{Q~t+xFkesA4OOX4Ez!*F&MndSWbD1|X;etQZDJPkR>{Ul{Yk>Vnb z`teu3nvOJIl&+}t$KS{wxUGlY5DQ<(_}+QX>ZJvrSz`J|4qYh3fzmcZ9#W~Fx!G5q zBhm}0Gj;VR3$8elG`^(L6GJKSxOV?xV;Hv3g`>3jHS@NT`h9mn+{foS6Z45PSQKAJ zqAx89N+^n-V`x$&VM%&!%mvE+#yG$&_-W;a3kOirLo-=L+T}DdA=D@jGhrcJ!GX>4 z7Cj=U(?lh~qCw0Eceq7u;@i?vq>IZB_V)4wpAsWME7vlr7KIlB{6<);lZpNfcjxdh z!{^@n&ZlGEAbC0jPiujS1QTPe1U6vV`#lpPuAhlxs z+zI-NAcVryOO$rRB}oTaI@?OX-hzK8#p-u2Y3D}Pc}YRy7IXBr@pa!~(G?l>9z?}4 z-a{Ww0lxK|zhp&(eJI1UkAJ$Jxz2AUw=ab1guxLu!s?|@H<9YJ_U^93#JeQvIp&X&R3>KWNetv(90!ihbF zOiquT^R`vg#D@sJY-^2Apt?_^Un!fUfL)>j8k)$Uw+w;fXkiGpCeFA1F7;(DhQKfV zTIND4S5M4e)vu!p)rerg1pnfPku?~3t&S`O|@TUm)6 zpx*^9%Fs!$LVwe=k=QG%s(x6{$NZMTj~o&@v=txlxP&!Kia1JTgRjHz>k%X2DSo0E z@$kyq_Bc1I#7En1WJ#*egth&W}zz_gV%a1@76vYEdSr75DyGiX>!XaW{Y)Iu;|muezJGU2^BkjDs7c`ne{ zRlEq%gI5(XYW)n~`xc%nkp04p9B3H;lp%_F42b#>9Tj@4H=6e^!Ot4_62CM>?jt3s6VX%*h7C=LSj@|t6<_&K z-%3hB_?KvHwvUBvi1lk<2OR!3W({J;_G#NV3FazYXa{nhDG?;VG{VLKq!Gbg+yH&G zbyY<-Lfl|-Yq|`cTbclM%##nY;pp{t-iX43|5mBy%Q%f9nc;J(foKZM>zaD3f(t&Y z_7Y49X0A8g^w3lPO=*beuGlFY?uk-aBQUvg9d=g_-d;ibZ zS7);cxa_ZeWucy)h9wJk1*XHTUe3D?LaW2j8Yfg)Se;3ZPipyk-!db*w{Rm%HyqyA zf9&l7g|4cisUnx`w5gEAWkf(8EYYY*4EiQV1pUbD#A4`6Oz+u+H^j#C#yDv*Z^umV zl5#_InJs3Mdf-;x29$f>Y3#ioWUUf4pT4n@Zi2y8O+>Gq6hl_r%3zqPY$^2@&&}^O zvq6D7es=?#wy`L2xMg0f&6+M`;lrSoWr7N`?bUK@`chorNHXE&g}2*KPy{~@J!TX| z)W^Z2Z=ydg-juaU2&gl}WjTER_PfuLZIttCSO?taN>h~h=Vy%YXc4m4E%mTRjZ_16 z;_Lw3R3f;dpn-*b^V_cFNZy(RbX>~?HdbfDSaOYPaTNcimv%mAXLI7qymS@3yzsJg z)o1i+XkIgS6(sMyW~8UWEM>Cv(`435*SFC1<+?Ub+^39RC_>!nW z^82Ji>5)WI{-grkSiCKrwG9wze>GZHRYBKZZbG^5-A5qLe+O;V*8*Wapua~6l~4k; zEN;7>oKC)-debebXV?toF~Vs5I%eJNLKr_?*Wnj* zc@+u+>M1=RqxxqTbfS?Iz3xq=!^%-*HB@oZwZiaf;X*LpO=JHJabH^uB7mc@S+*p` zH%i;7GB9TzK$V{o>a-U4Od9AM7<>$~J10SOW!-?rO;oSqD~0p%2nP>7I^@k(kHx;d zle`84&1YD8?*^iK;ti(@109VR2E=a$Df%IZeu(8f#@d7tht1yR+D@2F-hxE~e`3`N z@PL7TEV_}8VbaK{6)Hn0Bly+(KJJFAg7+!1SBLsL4=K68{@zaC+)`BMB8B}~ zOX}@~THU8nz0WMwear;BZXgi8aLhmEGl47Ox@`2ZR5ig{k~BzW_x^zraT|S&i(u|< z$gP$SHFP}-Wj}76I16=Z>3=KjkizA5bOuz#SCA#IVM)ozPD(igQK7;s`F@)uNQZKK z4gpSgF56ggVQ0EGj4N%1W-oVxQrAs;&c4R%p$e5io$VwA7Y)S&uEQ^MoVpGl-(`(xr;d0Q*ztSmfR{k~5#HdUSf))k-Ias>+} zm3|dSpz#KsmrxZ|RG@;%T@*n8^Yh~U@%vEG@pGSF`FFK5tyC~vzxc>}IXc)Y?!Kqu z)vZT|9O=S{NHxG{&5sd$(?Yr7l*UP{cnwhiJuqh%r{2v05okq3e39bq8MYkr6zoR2 zh?V#<18R+bLw_=&N5pzn^vQ!TS(Hf`I~NuEX`n&2S*+ovSpKyK48SkVS`A*_5;|A9 z4m8~oPWqh7DGch%LwZzMq>2crD?-h4&2TZ);qXHWQ>dA2%5^~MB}K>(fg6=zt=>ac zeGsCh(evqd$#6>ix7JdjS~ny$rq5A&!hyl#DW9c;5^T%hG1bUODSY^ZoQ1{~6Cu%< zF0UCoRyCfLCgj1GJ4kb@Rg@2WigRRRWwWUMS6aDP6aY`toAmFYdW(J*b=UCh@fqkD z#;x1wLQn84-7Ha>pZfnX*@slLg*$KsgSPBjKsy?=f1ndO7T&BU0w}JUE9+n^ba5}Q zi@MFNw%TDr$kPeBjf0lU4>?C*VJxT@P+R>esQsh9d}v1~{>xb5=%LpN>L1(o-x#Z2 zUVo@UMUKqVD8KdBofAnoZsiZ5me!ExfcNjG%6^DRIgT!Ul6yNKY`M7SYnq^7#z775 zsEJswg&c1bEtUu?FM>CGPN+lb$vu)5Et~;ItTS=-Avmzpta+;0+}MQIhrgK)CoW>W z4lYGEq@18ouo6d0rDkO5(d9!5-D(>X{J2X->Zlr_xsJUCDTUGYY?w-}DG!-n+xHtA zoi^n={GpG=?fx5;Jo@^WQ058)bOz`TlABf>d8GY+hKu*79PUa& zAO{nQ%7L<};bFw`g;pmJ`g-#0A$P84BiG9xx2z`ADbKhj*Ji_v{yg{&{k*nnQXeR? zQ8-=c$~^XZ@UPt=-zaKd48ckk?G>jL|A44_Zj@FtG#6*a5yVk(o9|#4)y+?p831ns z%OVY1C4=}*3%ybyIUo_1L4!B1v{){FPVF(tHS~1@Y7jD!M6X2-u zNfMa&-)mTN6-&8pcW+}1jXPRsRFu6)b^yR941}@uv#&Dehufw72MReOu|COU;-=Wn zuv81ZQYwSmie4>+$4poUlf`hV=<&71<@l^|BQ+f@2sa|KamMnC9N0~Y(b0c2m%~hc zP@qI1V`G=-vDCDDW_nhmpT4#o_iTgo0(FEQj7X*}j&*p^{kO@ess-p_9ap&qqC-*3 zyTebN&YU2182BLjL_k32oyuqXk1)^DAkBvPJEKTsHLD$PT%Fwy4ECZCIW z|Gwa=Jh%6lJ5e^~ZE9#VS9QX}I`>hWc}5crBRok}I2^aJ?5NUkInJ+@f-8s8>xS~P zhKT)fDWY=t?LG;uTuc~BDYXm(OCe$USd0q5nQh}cZl^mE>pEto8D;4h8Soip=^CNH z;D@0|<51IjM9JX7A)si)(8|H$;AA7y)O`V1DG@}alvT7_3+&q!wA)oQ#1*XDRV>66 zRKyib|YrNr2bnoTAVP7YumL5)GL$9hqva-g2$}LaqJ}<2|3jYr3a= zx(EETTu;8~tw>#xLQx1#U_K(sI44oWtS2YR!x`P)#g8L1$_(o_vNUgGd$$=7%+8w_ ziL)<}!rc(z-EJPh_hW>+4Ed%UR^kvqL)D!XCj`vWfKE!0QnXMvVqgagwVqt&UvJO6 zA)lEz;t}`b(b1w4{;03hDf3`?Uw(zVbh%)+-)_P*kfwzAX{wl{dE?;`CxuRWUi?Q>C(%B9&{&>t?@800tH0#bH=nZ0ZzOU2hOt8bN-$M zRm2xRU+H8kV3``5oN;SwV@SfeMcyB)z#^35d~i>oSz;7G3OqMcLJC+NvX_Q|dAc6{ zm4$zymuVw~g({^414oO{jnc~sM~Pdif=7r?WD%qc`w89Coa+-V4n2tHU`!*J23s_B zAXhessn5lA*aVGM|L?X3PSl?swROanlvLS^BxjHw=g^h1L?A>G^3cAQ|t@zpb{Ug#WTsx9(hpAc=#ecX&;UjgzInuK1Y&-&}+EmmN?f zZI~sWotcY#sLB%>n~n{1F|psTrCCZw^I~DhNFy4IiWdGZ2LSuP_NMb4-e6{Gj}atx+b_ul2?tOFsrA&<0sl ztpXKvS4Ss)8tdC~RrO>5Wb5@N&n=R+KjcmS+f`#=)nn|i%n2#@3QAaXY$GW&(h9qS zV(JRZDS|RyLio6}AeNPuhp1>sfv~5^1kjWzmE$EEPGFD1RKf|;2gpacwt9;xgA2D# zZ`=zz(eI2z=sJDoMcfOk&>zRfj-kEbtu48*>)&vroXlVE*8(C06-2XAJ%e077yJMD@<$@@G^)pEo|JG_3+azf=pr4 zv^T^M|7>6)xYu-&-ObZ>PTxHu<#t_5hBI@Ka8-YRIg3BzhW>~{*T^e?FAe*z^N3ht z`_jHAjB7v?+W&%FEIXW_Z*8Al@SM_U;6V}PBiW#dy1@P8%3dvyym(yRuOA?2q7yOo zsqI2$Un&|=tL#Ftogm-e+3m?c#Nrc*q8b#(!LqWm6ZP?F!hUb&&;<1pTLTXbo2KHq z)aZBUwndZnVV3wbALx~95CgW)TgTR~3g@??c(=pxO`c0fVMwLgD0$EqX4;UXl4nbD zwH)Pee&>;s4gtVw@G>lol&_LcGD415hz6_&kw_1j+{vl(DRVzvk_`O|>~?%K)$+aF zZ;wq%DBaKyVk9ztaJiykhYbSr%2Xb*<=z&_d6xdO9ZbpY4>)Hkr<&=R@bS-ioeGC88f7t>rTAnlY2IGH4W|#zQfN-nwtzeIy9O!JO0`lZQX= zir1?k_l{wQ;#nvs&wbYO1|a);u?Ty}{_Tp3P82X{#W8=TUqK5a_Z|1!-mqvFVy!!G z06a{fo%Px0W_ie$Bi94Dz-IO)Y|IZjF(9)gLZ99u+_DOChgEl0`Im!*bGb1VI}~Y5 zP_-ocDrHObW3jJ4;#ogrQZvPAYw3U7Z{lD3w#i<*^Jl>Fm4>^s$}m<0*0;Q1=RdJR ztq>pQxz#HxGj%(*kmdQs*oQ?E6s3OTbWAM&g&I?K77dH0!Z}O%bYbKvLU4I{yQfv+ zr40zX3{lz0JuaLUabpwZ&TgaDK_Cr%s4{uGx2;T{1EH|r^~OM3yTdn5C?9Ra zLfv5XVCS-*Bnh&{_37sHC^l%vyucDAEn!S_aho06_4#&yn8yZcDL!hHgd2nyXtU_E zPJxs3$_ix@i35~mq>z341jIc7uv&OgyD)_~h@(Tl5;0KmFsHZD@e6yt9!UK&CaeCQ zyqJ%Xp^R#n-)YW~oQEbhlG+!B#(0*a7XmFd64K#s@}tQ+o`pHCw(Nb6m@)D(Z|>w4 z=xlq#oU!%uh2hN!q@^;A04L&YzfL+d9wTOD8i%0c`bpRrD&)))ps!r{_^zdN5?x#_ zeefrWrbmrF=oE53LL|k;Hu{Kzke0(X4zm=eQcu93fQNRDgue>_24vegkh`-#%vRySm>0Qg(P$aObZ7+JMPb+9sc1 z(>*tahfUeuv)z&gBKx@vveC3yAXH9~*k!u+&XYruB`?X&jFv>C%`8?K49|wA>;WES*aK+dg5zqEh zz|1}5F{3WPN@=i1d~U}%e%y*-;IZD~49V@r5DwjtTgSRNJ`SC+oFLVVbp2`a?zaeB zZ&7Hwk?^II8TjnPFPXUCyD3b4o(%vO?^XAbpG)!JLhS8Bw!7b1UO%sKv>ho*{NmGn z4O@xCT#27&m^TIs0h$*QK4}8e*p6nQAQsxj-Rmt!?-EkQpij66u!y#FXrl_Bb2TOG zfviG}UjRrv<>78#1ADmbf0Hv9%~6JIqK4fx)r`SB|7oU}b|wt&9q!F@aSu$0y|)U} z6fHtzNDVbz2$ypZXIlrQ7eoxy*~k8Rmke&nE2V0k5?`nguz;FMc2zl_v4%rZfF^H2 z=d>a?YQ_&v3+MkzXO4uw&LjhOp1FNBJ}#{z15lI5Ab{mSX2e zm4E44%ttC{6^R|+5gGZgYDs{N@0Y6KP1uRT(2_n3`8b`xG0n;{ioLqJp~=p1*Rdn4IIronbgGP86jj;5pH%8A`7zWeOgzMz)?8~XzvHAwpyo0Y4r#}Xwh9e+ zYUITs)-^da$2ly-^v0U6*<(h4^%Hq05|1F|j+PfGVJk?Evs42wb|h0c(G#(&BO!Qa7P;?4pX{oZ0gCeiCH)Re8(ldjf~#e25uc8iOq z1Y+J;g^mWx^QUT(uvM;(P-?MI@F(K!R=l`Snk8c>uX=DgyM5aPh1%W?IHsX(kYEn+ z?!I-Mr2AE_82Tq<*xvO5EaYk8y;k_YL*Ti@KMRWqi^-01-1pf>gqdtxNA6jtA@0KZ zbH^#QOWHvlfO0GWzs;%YmsfENY81GscYp;y-QiiJ`QdUTRH{bcFrbm8KJ?Bl!k+V7 zERT{kPBogX`7UrfA!;)Zo`a&+iAba~|AX4bdkl4^XF|Sxd8wyJ&x(_MS6pC2U|`=q z!6CptoP}(ASqCjIblm|}7qQ-zw{~D5K(76Q1rtMsfG_MBnqdfeDh;AFLV!h!NziOw z*EZd|)hMdh*W)2enlq)EEVr_LiKJ267lk!JJsqL*aPay1BEa;b2Ouh`Ke2PG$yfO+L>QlbAwj@t245I=qS0JyRxwpnWb4ghU9c#!f5 zAR!&T%qP6=53<%ucFHjjEH_^6b>|?0l?3;qe(WF;>aUfjl_NIP9#4 z-l;{CVHHs2OTpwz;eZ<hsjCicKU_*Hb@adgMFd)eklrZZ^kojVeE!E*#o zK+>NHM?F$^a!MVwyDfM@Z`!o)lZadJ#v8at3@F;!rDgKUaL-=UYa7QN2E+VX4jBvW zJu9UgI+T>+3KVR-NCdQ~H|IT3vkfvh?i2TCzkiSL;fQfr=TqAk>0lfvOZ=%IKuaV2 z0SZUaCh8e~r8_qdf~a2g!T`4bg`xc>R-6z~;+P~Ns#d5spaRt=ggU~xBK?ZI z8XI+TC}k!^)p}TvgmAee5)g13>2r$(2ekP09MXsWqLg|%Ddptd$rFHVD+l7z{}I)Z19yD zHF*>x>DXY{4V?@G1O{fpp9)|8+S9X+oQ6<0ANeecJe+O7UiIT%=`-Vx_lP~)-c4t* zzY9Bq4TYG+d;t%QUpC!D1Q0r<&%jGBPy{K9@!#$he-8;2#eGTEx=U`LOE??m10z+{ z&cS|x@?M*|QXL8Ih_d!8_MZzBP#|%r@Z|%LxdO-KxR;gk3}15Hjf{5DB6D!jnz6F0 zCqBPW4V*|cDhe^eMLmrD7baqu+CS=D0f|=&lrXOH%sU$WUG-ej$`P-*nLmF!H+W;RdS&|*EAXf!+TF4#^&8-HB2i0b1BdwWdE0VX4~ZAwl5wY zMX+wDsfvd=N)+D7zxT zKJqZ|N;$r&uVjPbCJ6nFC;qMe`C)9OjN9r1jN*;6Hm(UT3yhn{zlk`_?VjC6BOR*9 zqo&2xHB2f0?>R94^BfN3bl(2r5GJ*`T>zix%oUy*8!Wfmz0ZH&={@A11M)gaab6i+Sqz#wakRaKG{c7ormRF%kay?(XP;s|QbSke zV3hB?Kxm56t59_8-SjO&|IFIY%tiGN{QHu>)r`d@cD}^EtmZI{Q<0T6+B?5(#>i$w zf!OPyPZ)9jJ6dsZH3j}%r0km92MTvgE{m)Z%F;G5q%_67g6suxuDLqBv5(7Ot(wts z+@?NHOc)igMXz8wlku39nPN$6d~AIEztwRzUs02r`1!(${~RsQ84~ScXS9chfE%`2 z>7M!hkny*XZ$anf^MEmLYJot=I4vLtl{TscyJ1`Z;kA|+bp4NU(-v36K^IvRO**tR zL%w#$B&icc*+C+-;t);hH)Jjy3U_bpzx|Mx9a z6%C07U;Fo)l6y^kY?P25lNmF^^)+nsZ@of#1?1*M1p>8t14g+sKQyYrxcM)~@ajkC zb zM!RV?Bu_5)LINhA8`oOyg&iuKs56f+VOD9*65IG4s&oGLPR9S<$ve$kdEcj`nPl-X zzhNfZ&4A=6ctUIWa;e|`*y|hABO_##o>aR>$ez#<@W4m-&)56D|Nd{A;~JiVIo`1m z6JdA_3UM!KH_;6Zli|HP*9pejd0K?e>}J`gB1!bhlr4cdQKR~-ThdkUvoCM|8z5rp zBB2{(T%W*eu0v`yQDAEcJSyz)zU54Nab%IwZT;Z#krP*qEh|~3ilNl|>-wcj1lwH{ zxSRZG|3Ahn05x8h*sz!qws^~l_I-ccRGFP>gF8Q%Peo^ePoUVvT)8=wae#vHMrRnx3^gDYYl9I#Rgh}=Px%Gd-3z<+-yZWhB_nGzD^Lug~3MefmC!I=dxuW^s>ahGzRt?+tj+~^^Y(l~2N(f{2c`%nLT;Jva< zAKQAu?77dp9W%u=1I-VI5OWG(IV{$HBoEij>~Dp9j6*`shJOdw>A<-8nZ}DQm#<$R z{P%P5U2sE78%Nu){lg8na~fL?O8$9ag-J<&gAo3pUN4jC|4Aw&a&5XOfVsTBhiXkE zRE}B?)ghGm+OK@U@hqAk&-uT$D-pU~{)`)#SmA=cT?KC;h>M8sTO&(=9TM9415CL^*}cJ|(T zha~eRGb7xRko|lw#qa+-@Be*{_c)&Cy^a#O@9RFV^ZM@dIzM0gD6XsOVY+s^H_@!V zD?bYd4rP&D9<1n9AC0$Tf*MPX$lhjex&s6cReOxB5!dx3)fZp z;nGf>F>@CzHEMOrayU`=UG!frE)lsn;-bNP3~q+UW)9Y~+Y#w%RSameq5ZBjpUu*W zlP>fmQ36G`*mO&73N71auK4_;5`Tw5c;X!GY#c#U_6B?6*U@)-KFYqBbv!oJuB&N2 z&r|iExCXsE)-u~IExPdfJl;nAyt8hrlYDON`v?CbH#CHxq9VuPcGbtv+m(MF>(C+~ zcAJ?_I8*O=*)uYj;o1!;`;r1dOPwIjGbfX2-gf$Rpr3P~)mASwG!cku4KMsP$5$io zfo`2U3&h2`8+Z4;#l{x4PG6x9U3WMky`yVDV9%KjPWW~_=Xij0oJQ#_Woaq8r}D{+FB7gWM#Z`jzJ`cj)Q#d!H0OxeuC^h#}WJ|CZ`EMm`0} zdUgH{{a&|P=Y(X66B^b$k=$OLlr?s|vSEL!j_}ycc`&Jo*GS%;qzI|tURgb_N9BiD^h4iZd{qy* z*)7kn8{tQ~q<Q+6X84^Keh%UhN?)3{%+n)BD@!Lc;TNR%lq<=TQa|<_S+0|&U!r7FU zqCzX9L#Qa>7G;(%wns(J!j|=j0iQa%Ha-3FO_yQfz~-see30cNi?d(aGYb2q4-Hum7_zI94}+cy z7?NxqpZ1Sgt|tZfyv&uaTxbk}9d`8MN!g1OLQl*b@@`kXu;UtW*B%J53jY>S6VhLP z=x=Cv5JAL-XAz68?^cZ*SHQ>tjKWvRKE|o8F!zedt}&C$OYBvR8WCZJYx7nDC)I7i zGJlCVp5tx@ zCF~y2oLG4K=I4rC@6wLJBcJ63)}kj@M5wXsx=~Y#))h_;+v=!dm>f*Hi)Xb6Moy@Q zd48lCY;X=LI)-z_nR$UfyJc#_Vj%WJmV?Cb_k%@F7)<01WFY~_St7_t+%UoP{fEDKUiITdc+m9+R+FQTx;0UwX!mCt-Uw;>o92>?{Y9 ze;LVrWF*&hpY@o0@);idC3Q2WiE{G#b)^+gqo6>N7Ux;FS}ivK*ZUN*)7}{R6cumh zSpBWSBt7KN-LWF#8;a$w5Xj~u<1NkU5Vay-?oh_afLX_9<6>!vztMftZ%m*;4R9>s zVKcvY_D@UL;=xF=4VMpN;Y7@XQOrkA_Q_$l5B}=)-vhD9XWm1iGHw?*X5%eZoK6jnvVwok@#^0UBrLU1;LzQs zBl%qqU5tt)D}#+e-h2rUM^amF^sr>3!kt!99zn8FPKR>+0*14jK~`gmtrMG^PA?K@ zJ=a(P)>l8BN=IAS>FxHWZ zrZ%TURb|;%OvQXreskHf#Bl>ZQbrly4vKm`+jlV%u5|p0RDAd)CM4M5==}`H`=@?1 zNSQtoG}Ce>G%$A7jTh1Fl2vfgQ#raTuaUdL z^-hUKQ_fb~Y?$=vgkUFgN{Xc@Hb&E@&57ngY2*o~;alho>Na;gRNy322a7W$I3TNm zKhI>rCWSu4Ad;oR>aTcE%4LpS4OA4@_y?% zI#(`S?cRwA{qkSVK>IeW{+n`mV~RoR?}h~03HtCq?Af`B5anz10GduOhGwO+NaEKu3V&`wd__ck9Wg*|8U1v z9WTCUJL(O~uMW(ZEs}R@IwY!_hho)>jffR-S>ku8R(W;(-khQ;Z|8vHQw)k;M5T;a z@oJRZEDQFIrFOhjuLMgOy9m#Da0`C(Ryfo#u@^9r@;)S?4o=Q9s(QVwkN9lox_|f^ z8Aouv;Kc~d7{$QACUlw@f9JElRg#EWksC4KZU(9XGnHc5(I5`IFfq??IXn#-O%Y|W zVK=GczfbD;qJ84{MunY#`zq(|vF*jqBnFjWKI5fL4g$(Z!^=faseWda_~+Ffo#*1g z#cV(QCfcev+nl2F#PtkpEof0udr5^hAhTO6=AWy}yonN1HcQ>5!n*4@c|$&tdijdi zOWQBfM;d}gG$i?*c6!Tgwj2uf<-EJH^%vLu%Wnu33SanmcV=VFa=DS`%M$8z z)Iv9?*@NmcSq^P!sKX)!z`wk`KI?fKToF*UmozKy9rJhP*m1mX(8OzHD)H-mI!11- z=Ig#DsSpN6Fvk6>qoo~%-_N(+&bp*XemJ+Mv3Ld6=(W|h=aHH3ad6wo%VR(`SBta zrQ}oB<3i)8V~4V%mgfm~E)p0*nvRX1Sn&t;&RtqF6ZNbia?Rcrf7rQCZtani*<0u zb1QVGg(tDl8Z5X;bW`Nk-7*=J36{LWjx`tUBD5VDJ~T5<$?1dmBFT;T74M=< z>CT(&A6^Eht)M8Q_JHU3W@G}b5`XXwDdUArChBy%R#y4kc&=Gh0xaFer-wG-U~Sav z^IT0Q^OQSUmXImuS)aeA*E=G+^{t^6n!eXmvkjKpUwtY*(9Igj(Mtt09OimnuUiVH z&Yeq^kIK;>{B}G0ZUYm(hj3cvnTgs|G4>M1iH$RFFpZU1eKNl`j(G5VjOHdXE#g7% z@>g&47}Rj0Swk#t-rqVSwqkrV7On#km_u&RCuLvQg*@_Y^aa)6aXhszyLTI4t0`;< zKV?6k9G+`ED}&`Ogz?-8U4>bDl8zYXV-zPobc(Bk4e5CPVnp<`BLQLP1qP9!oZ7KYVdOf<-Uajru5ga!5!WUBgYEwmBN$j@;W+k!R1d^*?)h2 zyPapb@`?QG;sw>Y*8cZjDjo0$e-x0h^VBckSI1Z(QQ(T|0Btcl#d9Z!Cu)n}Ek4Q&n>~vK% zZl5T5yxjErq9YGH@1sTG?UjEg%wT7Rvqr)ZnvFQxM*L_Ihvsz8Lvg?sKkunHdh2Ie}+I@fvkVErhK44T@ z%|sX-!@v?kz!|6g#g5Ap_Y4ktA&d>GK%b8$Q$ykrnCRwfqF9#}j>-$XJV6&hNzK?}AmJ^650f_9|IZwYfrNhFgSBmckEHrd~prfO^_h6IE|0J0|jrljo zvQ(hyoY?musIP*GS^=YL940GF^M8(% zGeTho+$jHhoSqGszD>s}M)3-UqL*d}df3+hi+(ClV9U5T3KOFg6n4e`iPJSy=b^EU zRG@K!$JP?lCqZMPZ_S1Sd&0ap>d*5n5PE()&@6(GwpTC({HV@a=s+kZFCVmIc&J3u z+=%~SojarR`-{Vhq)RBZca(^wkR!3W zI>IeLWLPd;i8OtgcWe{SGx)G%E6H~7lBXY8TE=0Wnx#;~eE2(o=sAR)+QmH^UD$VI zRn8$7mT&y6{Vl?fzU8>S7#gmnpzsoD{9qLO+_1gluuPDcfTbSx&5ZNvDBxLuTCix# z`_a(4IO?tly9ga|J)&v{>>&@~DW>I@XP9bLYqpfTN|SDVCpL!&{&H9*JTyqI9RzS1~(8cV^X`{OQR5w*L1tS`1n z4UTQFwPT@;La|4>X{t>I8nlQ-L&L+3DoELJ3x+;k#Fgaz^GiCSfB)`+wimQVaXt+B z-&}LPWKz#KY_54JmegjeXpA%U??3+V6QVRznj{qeWsX1l^Z!q#oE6<8eyQnmvJ}h_ z{IROXrX7c_37xhD#yF-H7R?A$2s*#d+3Xa1Al3-IVcnny2)@QFv~_PVNsT#KFoY{a@UUPgzh65tI(Vpi3zl+jKkjdI z?z~3Ub#Gf;OKbFvenE8y@LEFpihCd8j?hm5BMc$r9|Hzj6L{tyW!=trNXru2<*zYI zDLurW0cH^*!-LK67AL2Ai(!3n$Q_A~pq=-S1(`Gp0#k%3c{2XQb(`E4J>p%^#d8LH zy_mH%7yz-5cR(9NI?*6l`c~G!7I&aFP6Y6xYm3cMKM>=*y|LT^Ae#KoDv_11QQccG z72L+==KflHo87L4h5qcD{)KU);MWlH(hrymN`O@~`E!0fXq3QQ`9ruFB^d$)vZ!2_ zT?Z$C2f}VGPJn_~^{X4zE!np8uh{c(%|=`Q*j;uN%rsAKV~p7S(2WFqLInArWgJ$nLx`Q17z6=JnLt+6o-}#ABUpjp8U_#m1!) zXcGF>5g%F@$sqsnZeYO!w(Ps^Z|g(@RWNUpQRPD|oW!!5f8$Y+Gy82Q!~)wC@1mxq zQ2jH3&1oV8bd;8pBW_?|AchiGyj!`un30+NveQt1nNKppetT%L$=3?_V&gDbUY%3h zbpGN-MzlC*&g7Z&(nLRPr*{uCA1OTtJ-K;c>#A;%MnS(=OT?1SLCAvadjv=@ zHxTb`AtRjrlyKJ`fCS8`_mzsLlj>h8~yo zm}RF^2rVCYlRF=Z15;i<((Z;^gMC9S7XxX!(~J^72w>UyfsKR@H`Q&_q6Mf^zKl7Q zgi##kdUG=L*CYsmljR+^yJ&Rhmyrr^0qc?WMVimQy&bZklD>i@3_k$Xd>(`h8g3zX zAHfMi51QL3=_HfOB)F3Rg?fFX1DUddQHn^t>R-vsO%}{x^8lLJ1O$*=t0^%A`lW78 zE=^gpyYysb!t>Ik$3^Ws%F5?Co_zINTNp?xEF=b%?}Et-R)<~#0KaU~Ayd$3LUn7~ zPn%##4m?9lTy zVU?U&TZHt~qh+d2wfg5x?{qhs;Vjktc9R)4J#zrJ=Q#y5MmbUNsWJHWu+OXcghQZ1KGd^`uFc4CrY5d zN`ec2go#gW99N_xenUG|a$hHEOI8==Yxfz z@_QiX1cn)6_pdll&4Sbk9wdmcr<){@f1L!te0gS^{weRyl5;>60I9A(_X&iMdCPUr z2_f+!Z`ET8e=Ns5+2Dz<-x5IC+Sw@z{Z990UH49*ip?94nFpg(T+DIVLHK%+Mod#! z?<3X`m$0ZPUj#9XMAu*${Dy}$Mj*F<%!s2)V0-aHaTHDX#Ckz{yCl+14f)LYUf|9s zdm#A_Kvx-E)-rVribmO=BOCrf{)iFQU;QK2rmsXdFPs6K5=MMh)>(6N^E_uOV8eos zg)5(KQ>Lef>1%3gvXTwefTr)vFX&9#Dq}J40J#nkf1s{i_svSyZ4)6~2TfDX&d3Pv zGcD4Tle-)TYV#BF_ShxE9^zl1XzjiinZs_A`SZbSY=Y13unjTBfm^Y6y*rv)Q6;nQ zsg+e;C3vwR!vcc}b@sL@U=*;rT?q%3R}gUeZ8>6qF^$|wlys`Zqte}vQ!A}TG0(z~ z56e_yD9gx@tcK=Y)5XQbW}Hzp5fkfd5S9bDa1%UBFa#b3St^X(QJk_a<1bDX6q5H04Mf#*16RmoShv+HxA_1!NNP?iZPA7{LaG|mK0Y|yVC}N9*!hG4 z%;XLOQTUhaR4n`3qYxI#@MiEXw6u1S*~_+HbB=E$U<7}Q3o%eA^(#;9^{0H z-c9gZu=jO#P2)(#;@T1mq=}PAg4Figol7kH0TDjqw9oUra!c zFbFx0j@Za%k_kCRV-$bnEL+c3y1kPXdH9?aZB2IckCp4D&0HlCi9F)UIy=fl0%7uI z1EmJkBh=XKUK?tJ{hU7e;;W@Zd~r$71H^hcxa%^o<0`nejVHGzy8|lrjALheLZjjr zHU4-RE83 z;uBwqofTPVb_^i48lW(YYD8rpOy`?%mS#t$H{*HK!>0%Z(DvQdBe#jnLqxipjMq`q zmvj=>kl9+AN~gQ_bwRIwR*yJ`#k*fxQ!M&9_9eUMr$p5PjXDH1ej*Drf`UEeEA1DE z7R$UlNXlI*pHa$SD>Hs4IE|H}I{sB0`+TS{;S0z5q@0y3@~XQ}R|!vy!_?JP%rs(; zh|BAw9N*}njG(PTPvgRm7K!+q$K-2cw?U5t8OctV;ff4zU(K_>BiRJeWx3yB}hwC z<2x0vTV9gJ5a>C+VQ&zaqWPZM@{+k5=jO2u`|g&xV;k}oA@W#gZ{b02f>PRHmz8=I zmbxj2zx0plu&!GEJzHs) zv3t_vu_Nw`W7rKw9}DTVfuDOZ}$s*W>i5xO83Z z_JlQUGwPzas@P6=p*&xA5S7mSubsZT@&5jPmVb&l3A&1=ZHo||jBA@3Re>{3xbT*< zPF5GDOs-saSf8T0KvR=Um>u=9B|L3$ML-<8!(T^uWKG<9?ndC&%5|MFiVa?#hK4Yh95U@?P-W&^;sPm(jU0 ze8Encj?iKmw5zgMbePkJRjk0`su&OM_%RNuUu?ozSdLT)-79TQJGJ)RN~#?Rf7IB+d4r}zMCRCo~@FJ1ekUxZPM~v zU#p3`L^A)#74p@X6#&4mHL?Pv&*a|-%t&f~^lfz$bUJ_3&&rC6A}uZL4kRUiil3n@ zBO4~=lhv}l=Qo@qyGr+aZJM0pQW(+O>{`;v&N^8tkV!YEq>AF(VE_r$o$B`^K=RY> z2Ha!6fV^{Se`(a&taEn1Wo5vmMnl;^=>fk*<|E0oH*YgMAdex$I!CTcpTuFU`b>3_ z#!A&%_VG=DU-e+a0#Hr&`)%$}0xBXOoszgQ6Q}c~k}B z22#tOPOb_Jlrc36v@^nAwr0VDf06Gq^SRcC*w179J$U1RIrQgnqm;8`79ANKy=^|s zURF^-PI?+>}hanOhVKZtq4?(q9Xx0jBja%yU6 z(6G7n5$pVybVaciOp5PYYYSxT#&3=tJ2pKrkx*NE2O@iEAY`-gkUg}61q4N4rYq;^ zi58jkinRn@;^ZM5m-F`aHXSW5f*fjkVIh->-(e1_Dq=0iqAdVC%o=gu$JdvQ2WQ+8 zSo+_`YHBL0s=mRwftots=uHH#qkxXU_Y_m^=RMDkVbOm*Xn4+`v(EigU)BT8h)%Wb>32y`+pu70j>Jt78ny^s z@D=R{XC8ojx5&8XYH~`7>F4(nV&caaO`(M46Bsy9Xwn<{_H8oM6B&7UH0+kY-sT}2 zzXkP@Pr14czZ&objmN5;9rkw0cx)HbUcNk*l!Pf05)qO9ts@+kTE4O(mxE8mCueV8 z%Ak}M4^YpAkuqzI+=nlq|Er-5du;-wOKi#S-_vn(tIu}F4FF;?1sJgm^z?0W#%@~Y ziHXymug+)`n+?TP3&KjmO|5dJ^z?N2xOaT~{O2htvr=W_c=$8+?5JJ2a%F30wfna9%zc30k5e=~Vl{!p z@_SE`=Py0miXpT9cP#qswu@>K3N9|yJ3BjthMi<<^Sv$OjX43N=wvl*?N~j1{WYin zXDB2~g6QFf#Kq+Ryq=u$cy5$YckKLhTL=KL^NY($OX(OGB*g=%ZnKk*-{0Ka3~n^y zYxjqh@^mPlaK!E3Q7?wFRgr0*WR>Ga7+fAqYdRFy$SBWPmO`0?o}XVUoJlK~I!3@* z1HwQR$UOZ6PI7e?Jsz-`?V^m@-%!fZP&OYfq+jc<+Gpdz(3XZA@gy!uysW^c2wd-H zsK59JV3AysMv%a63R+S)G#Sgw(v!()UqyD(~V92#s$b_>G}9H z>+0$dwL(gE?d|OfhK4EdzSJ^@wG6mt#FsARNQBVPv#}{&6AuWDii*$n=F=7mN zcLG-ZXaVRa32h!!p-AK(aGcA(Nl*UXJukpxXF-9|wDrvuAAf&kQ`3x|9t_Xn%I5|B zIXXE|hM;3)lrk|fL8b*dAovBGti^jbu@{LnT!l&eQQ{0HB_4|C3v)e5PwnhVp65VE z+wTK8mo9y#d$zYU=sFLjM;|{wC8(_x>NVleQe#D@iusd0efCTl1V!2rzL@rZFi~Tw zRez0tDLaPO?)!M1dxlm;agP;-C-3v0@6lhYGT*!*c>DmC4e_Y>(x#^$K_b)+Oz%&A zZr6TqZ)d_xbC?SW2@RJ&%hZj)Fe2f!h$bW?{P0+b^Kt)uPKyyaJ-w?n=sRUAKZiJ& znPtJw^sj?WQ>YQVeqv+5FEB9B$;oLiZw%Hm5Jg#7$$C&i42lXCG9CWn$zTtT)lhCb zuoUpKvMMAbBxqDQ6lrSy&ckcJz{$z!@%l9bKmTZXf*;JPgF`u7h=mPbtu9!{+j@#9Ll?L`zQdYL)!rBq#!z%za7_YuT2iD-Blw zGJX+vwq{vAHT|tyZz3Mj^+N6a{JC=p4r|{{fOTDNw;a31Z@8Cu!#glg_5OW7jUv*XAi zm6d(&=vd&1*DxC^j=~S5*g|+W}$|V+BpkyX9A0te^qy>S)VmD|f z27j^8Sn%2BC9j);0hn-jm%NOOj5l*QO!L`}6N4yd5yW>ZIVK`VbQz!(}BL6cp4y_4~KIgaXVVtjZ_Bg=EIZ-?{r5w+ALI z1D;EG49+##MV4HVQe=Iyzc4E~9T2Hs*W9p(FUM>0x+tZD!&@uoC|Yxoq zFp)U8xL-g5C>)T{*2ez1;GCfPdSQPGZiVXV>I}8K#Nm=BIUhgXj}i!^;#Yu2K&I#C z>0Mo2Z)y~_W_Nscf{GKEmH{Z{nw!Iuy`O$eG@QS9F_rALDIIwD;6kHrs-h=j+D|H1 zUPA!VSM*p_tL&+0F#E$=45$>}kqWyJ)b=R2?NL6Hyndcq=(~4mZf+Rh;Se`HoNwSO z9RRXv0(RWCj20Os>ES5hmOcgc|u(Gm(_)pu#!2|%y z&%>$-IDz~JukU)|(X+D`ia2U$M2?J%*i5&cgBV3J7zYOj@d-qpp`fRi2nF`cFJF{m_#IV}!~<2J^8F0@94xHW z*Vo(Z{I&ucIK1=~#)~1o71whR6zBV`5DCh+V5Om3V?mPWGGRP#Kj zDO^nN>$Buv67HUo_zYIYfFsJhtFORF*5J{jG#EVxTZCFGXoWYo zxjKu3k6%)(oF*rvtErd(4`W86H<*PF&KW9M8L*<%JENH-=KmRrbLPV?`@42c zEiI2>y4t(C`e7x_2EHZacG+IyRQ{lrC$b&a=}_aenZLEZlnKI`1|#m5R(bNZax;7* zA|xbVC`$!@DYG_O8m&+Tp(vVHO%glHZ~r5{k(-~NU#bvHvox5u-uAbQFzW_+YQz*2 zJ0(#W0uZJJ7eXh2$6?`+7G&+al=%e&26op}K86pfRr`3LVcJA5UcBhP{aFXOdR8{J zzV{MD^G%-_&oe0H4&A#gD5wL0&{oUpSoyP#lv=G!m78!s!sZ6xIUsPV=u6#p`+Lq> zmG<%>w6ZFmc$CD%#7c>B%W%&U6R$=U(@00Qj*e<^KKZHyOBCkX%men}?_v2T4Wg_J z`J`q+Lqx>1PaO^>Ha3=w#|DXGQsItdf(AwM+GT^gN)&QGDG?0bm6(V~e`yNR29w^D zwx%Xgnvgao?nJUSN(!zHwJ2I5mR z=Qb@c>?9^6OoTCa$wNTEm zbQH;I;6q461o^;wnHV0Efov^^0NzmZJ8vmL!x~jHv&EVnpq^r2G_!#@yGTxX47uBx zP>q*^xU>*f>=y3ZOSHGP$~}FW57`6&)Y)&tqh=6FWM~v+K=-FL==s=zLRBuv8GNnZsg}swt{C3mTWix3=DcxYz%Z;GV4SQt+2#sf$|GPUAXpt>p0@bW%@Ry+Moz84X@@adD>P0dm{Fienc!t3O+|M(5~ q7NZt#@c)`9|98#|d2g=!{&C4y&DSv=ythSumJpQ@$rgV2@;?B_?D4Ar diff --git a/networks/he-burn/ase/derived_rates.H b/networks/he-burn/ase/derived_rates.H index d970d726d..0f37d61f6 100644 --- a/networks/he-burn/ase/derived_rates.H +++ b/networks/he-burn/ase/derived_rates.H @@ -10,8 +10,8 @@ using namespace Rates; template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_N13_to_p_C12_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_N13_to_p_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // N13 --> p + C12 @@ -49,13 +49,13 @@ void rate_N13_to_p_C12_derived(const tf_t& tfactors, amrex::Real& rate, amrex::R ln_set_rate = 40.059128683693466 + -22.553277271250543 * tfactors.T9i + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + 0.833333 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 22.553277271250543 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + 0.833333 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -70,13 +70,13 @@ void rate_N13_to_p_C12_derived(const tf_t& tfactors, amrex::Real& rate, amrex::R ln_set_rate = 40.45372868369347 + -26.331767271250545 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 + 0.148883 * tfactors.T9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 26.331767271250545 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i + 0.148883; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -90,8 +90,8 @@ void rate_N13_to_p_C12_derived(const tf_t& tfactors, amrex::Real& rate, amrex::R } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_O16_to_He4_C12_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_O16_to_He4_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // O16 --> He4 + C12 @@ -128,13 +128,13 @@ void rate_O16_to_He4_C12_derived(const tf_t& tfactors, amrex::Real& rate, amrex: ln_set_rate = 279.29694929711803 + -84.95157686791683 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 138.803 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 84.95157686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 138.803 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -149,13 +149,13 @@ void rate_O16_to_He4_C12_derived(const tf_t& tfactors, amrex::Real& rate, amrex: ln_set_rate = 94.31554929711803 + -84.50314686791683 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 71.8554 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 84.50314686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 71.8554 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -169,8 +169,8 @@ void rate_O16_to_He4_C12_derived(const tf_t& tfactors, amrex::Real& rate, amrex: } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ne20_to_He4_O16_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_Ne20_to_He4_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Ne20 --> He4 + O16 @@ -205,12 +205,12 @@ void rate_Ne20_to_He4_O16_derived(const tf_t& tfactors, amrex::Real& rate, amrex // ReacLib set derived from co10r ln_set_rate = 28.644822801502126 + -65.24608327101186 * tfactors.T9i; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 65.24608327101186 * tfactors.T9i * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -225,13 +225,13 @@ void rate_Ne20_to_He4_O16_derived(const tf_t& tfactors, amrex::Real& rate, amrex ln_set_rate = 48.662112801502126 + -54.887583271011856 * tfactors.T9i + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + 0.833333 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 54.887583271011856 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + 0.833333 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -246,13 +246,13 @@ void rate_Ne20_to_He4_O16_derived(const tf_t& tfactors, amrex::Real& rate, amrex ln_set_rate = 34.267592801502126 + -67.65188327101185 * tfactors.T9i + -3.65925 * tfactors.T913 + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 67.65188327101185 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -266,8 +266,8 @@ void rate_Ne20_to_He4_O16_derived(const tf_t& tfactors, amrex::Real& rate, amrex } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Mg24_to_p_Na23_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_Mg24_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Mg24 --> p + Na23 @@ -303,13 +303,13 @@ void rate_Mg24_to_p_Na23_derived(const tf_t& tfactors, amrex::Real& rate, amrex: ln_set_rate = 34.107544561463015 + -138.96838756220697 * tfactors.T9i + -0.360588 * tfactors.T913 + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 138.96838756220697 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -323,12 +323,12 @@ void rate_Mg24_to_p_Na23_derived(const tf_t& tfactors, amrex::Real& rate, amrex: // ReacLib set derived from il10r ln_set_rate = 20.02229456146302 + -137.30028756220696 * tfactors.T9i; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 137.30028756220696 * tfactors.T9i * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -343,13 +343,13 @@ void rate_Mg24_to_p_Na23_derived(const tf_t& tfactors, amrex::Real& rate, amrex: ln_set_rate = 43.95564456146302 + -135.68809756220696 * tfactors.T9i + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 135.68809756220696 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -363,8 +363,8 @@ void rate_Mg24_to_p_Na23_derived(const tf_t& tfactors, amrex::Real& rate, amrex: } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Mg24_to_He4_Ne20_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_Mg24_to_He4_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Mg24 --> He4 + Ne20 @@ -400,13 +400,13 @@ void rate_Mg24_to_He4_Ne20_derived(const tf_t& tfactors, amrex::Real& rate, amre ln_set_rate = 16.022538839949377 + -120.89510873006793 * tfactors.T9i + 16.9229 * tfactors.T913 + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 120.89510873006793 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -420,12 +420,12 @@ void rate_Mg24_to_He4_Ne20_derived(const tf_t& tfactors, amrex::Real& rate, amre // ReacLib set derived from il10r ln_set_rate = 26.803878839949377 + -117.33446873006793 * tfactors.T9i; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 117.33446873006793 * tfactors.T9i * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -439,12 +439,12 @@ void rate_Mg24_to_He4_Ne20_derived(const tf_t& tfactors, amrex::Real& rate, amre // ReacLib set derived from il10r ln_set_rate = -13.884691160050625 + -110.62025873006793 * tfactors.T9i; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 110.62025873006793 * tfactors.T9i * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -459,13 +459,13 @@ void rate_Mg24_to_He4_Ne20_derived(const tf_t& tfactors, amrex::Real& rate, amre ln_set_rate = 49.32660883994937 + -108.11420873006793 * tfactors.T9i + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + 0.833333 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 108.11420873006793 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + 0.833333 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -479,8 +479,8 @@ void rate_Mg24_to_He4_Ne20_derived(const tf_t& tfactors, amrex::Real& rate, amre } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Si28_to_p_Al27_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_Si28_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Si28 --> p + Al27 @@ -516,13 +516,13 @@ void rate_Si28_to_p_Al27_derived(const tf_t& tfactors, amrex::Real& rate, amrex: ln_set_rate = 11.796402252999236 + -136.3412367256539 * tfactors.T9i + 23.8634 * tfactors.T913 + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 136.3412367256539 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -537,13 +537,13 @@ void rate_Si28_to_p_Al27_derived(const tf_t& tfactors, amrex::Real& rate, amrex: ln_set_rate = 111.48620225299923 + -134.8245897256539 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 134.8245897256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -558,13 +558,13 @@ void rate_Si28_to_p_Al27_derived(const tf_t& tfactors, amrex::Real& rate, amrex: ln_set_rate = 46.569302252999236 + -134.4372767256539 * tfactors.T9i + -23.2205 * tfactors.T913i + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 134.4372767256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.2205 * tfactors.T943i + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -578,8 +578,8 @@ void rate_Si28_to_p_Al27_derived(const tf_t& tfactors, amrex::Real& rate, amrex: } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Si28_to_He4_Mg24_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_Si28_to_He4_Mg24_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Si28 --> He4 + Mg24 @@ -614,12 +614,12 @@ void rate_Si28_to_He4_Mg24_derived(const tf_t& tfactors, amrex::Real& rate, amre // ReacLib set derived from st08r ln_set_rate = 32.902724006057724 + -131.4900751873663 * tfactors.T9i; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 131.4900751873663 * tfactors.T9i * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -634,13 +634,13 @@ void rate_Si28_to_He4_Mg24_derived(const tf_t& tfactors, amrex::Real& rate, amre ln_set_rate = -25.68644599394228 + -128.6942751873663 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 128.6942751873663 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -654,8 +654,8 @@ void rate_Si28_to_He4_Mg24_derived(const tf_t& tfactors, amrex::Real& rate, amre } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_S32_to_p_P31_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_S32_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // S32 --> p + P31 @@ -691,13 +691,13 @@ void rate_S32_to_p_P31_derived(const tf_t& tfactors, amrex::Real& rate, amrex::R ln_set_rate = 25.192389422303183 + -106.63906812813134 * tfactors.T9i + 8.09341 * tfactors.T913 + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 106.63906812813134 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -711,12 +711,12 @@ void rate_S32_to_p_P31_derived(const tf_t& tfactors, amrex::Real& rate, amrex::R // ReacLib set derived from il10r ln_set_rate = 21.702443422303183 + -105.12160812813134 * tfactors.T9i; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 105.12160812813134 * tfactors.T9i * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -731,13 +731,13 @@ void rate_S32_to_p_P31_derived(const tf_t& tfactors, amrex::Real& rate, amrex::R ln_set_rate = 43.630433422303184 + -102.86202812813134 * tfactors.T9i + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + 0.833333 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 102.86202812813134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + 0.833333 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -751,8 +751,8 @@ void rate_S32_to_p_P31_derived(const tf_t& tfactors, amrex::Real& rate, amrex::R } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_S32_to_He4_Si28_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_S32_to_He4_Si28_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // S32 --> He4 + Si28 @@ -788,13 +788,13 @@ void rate_S32_to_He4_Si28_derived(const tf_t& tfactors, amrex::Real& rate, amrex ln_set_rate = 72.8147025119699 + -80.62419844573513 * tfactors.T9i + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + 0.833333 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 80.62419844573513 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + 0.833333 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -808,8 +808,8 @@ void rate_S32_to_He4_Si28_derived(const tf_t& tfactors, amrex::Real& rate, amrex } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_C12_to_He4_He4_He4_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_C12_to_He4_He4_He4_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // C12 --> 3 He4 @@ -841,13 +841,13 @@ void rate_C12_to_He4_He4_He4_derived(const tf_t& tfactors, amrex::Real& rate, am ln_set_rate = 34.96090397991297 + -85.44440046993657 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + 0.8333300000000001 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 85.44440046993657 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + 0.8333300000000001 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -862,13 +862,13 @@ void rate_C12_to_He4_He4_He4_derived(const tf_t& tfactors, amrex::Real& rate, am ln_set_rate = 45.77825197991297 + -84.41994046993656 * tfactors.T9i + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + 1.66667 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 84.41994046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + 1.66667 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -883,13 +883,13 @@ void rate_C12_to_He4_He4_He4_derived(const tf_t& tfactors, amrex::Real& rate, am ln_set_rate = 22.398803979912973 + -88.54650046993656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -10.1653 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 88.54650046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -10.1653 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -903,8 +903,8 @@ void rate_C12_to_He4_He4_He4_derived(const tf_t& tfactors, amrex::Real& rate, am } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_O16_to_He4_N13_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_p_O16_to_He4_N13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // O16 + p --> He4 + N13 @@ -947,13 +947,13 @@ void rate_p_O16_to_He4_N13_derived(const tf_t& tfactors, amrex::Real& rate, amre ln_set_rate = 42.21642061342456 + -60.557329596678294 * tfactors.T9i + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 60.557329596678294 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -967,8 +967,8 @@ void rate_p_O16_to_He4_N13_derived(const tf_t& tfactors, amrex::Real& rate, amre } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_p_Na23_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_He4_Ne20_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Ne20 + He4 --> p + Na23 @@ -1010,13 +1010,13 @@ void rate_He4_Ne20_to_p_Na23_derived(const tf_t& tfactors, amrex::Real& rate, am ln_set_rate = -6.360024278486355 + -29.889658832139027 * tfactors.T9i + 19.7297 * tfactors.T913 + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 29.889658832139027 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1031,13 +1031,13 @@ void rate_He4_Ne20_to_p_Na23_derived(const tf_t& tfactors, amrex::Real& rate, am ln_set_rate = 0.24516522151364528 + -29.434918832139026 * tfactors.T9i + -1.5 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 29.434918832139026 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1052,13 +1052,13 @@ void rate_He4_Ne20_to_p_Na23_derived(const tf_t& tfactors, amrex::Real& rate, am ln_set_rate = 19.202935721513644 + -27.573888832139026 * tfactors.T9i + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 27.573888832139026 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1072,8 +1072,8 @@ void rate_He4_Ne20_to_p_Na23_derived(const tf_t& tfactors, amrex::Real& rate, am } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_C12_C12_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_He4_Ne20_to_C12_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Ne20 + He4 --> C12 + C12 @@ -1110,13 +1110,13 @@ void rate_He4_Ne20_to_C12_C12_derived(const tf_t& tfactors, amrex::Real& rate, a ln_set_rate = 61.474151468919175 + -53.57824966896331 * tfactors.T9i + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 53.57824966896331 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1130,8 +1130,8 @@ void rate_He4_Ne20_to_C12_C12_derived(const tf_t& tfactors, amrex::Real& rate, a } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Na23_to_C12_C12_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_p_Na23_to_C12_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Na23 + p --> C12 + C12 @@ -1168,13 +1168,13 @@ void rate_p_Na23_to_C12_C12_derived(const tf_t& tfactors, amrex::Real& rate, amr ln_set_rate = 60.92541574740554 + -26.004360836807496 * tfactors.T9i + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 26.004360836807496 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1188,8 +1188,8 @@ void rate_p_Na23_to_C12_C12_derived(const tf_t& tfactors, amrex::Real& rate, amr } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_p_Al27_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_He4_Mg24_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Mg24 + He4 --> p + Al27 @@ -1231,13 +1231,13 @@ void rate_He4_Mg24_to_p_Al27_derived(const tf_t& tfactors, amrex::Real& rate, am ln_set_rate = -6.4280417530584835 + -22.818701538287602 * tfactors.T9i + 18.0416 * tfactors.T913 + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 22.818701538287602 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1252,13 +1252,13 @@ void rate_He4_Mg24_to_p_Al27_derived(const tf_t& tfactors, amrex::Real& rate, am ln_set_rate = -26.268451753058486 + -19.5392135382876 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 19.5392135382876 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1273,13 +1273,13 @@ void rate_He4_Mg24_to_p_Al27_derived(const tf_t& tfactors, amrex::Real& rate, am ln_set_rate = 30.057448246941515 + -18.576201538287602 * tfactors.T9i + -26.4162 * tfactors.T913i + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 18.576201538287602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.4162 * tfactors.T943i + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1293,8 +1293,8 @@ void rate_He4_Mg24_to_p_Al27_derived(const tf_t& tfactors, amrex::Real& rate, am } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_C12_O16_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_He4_Mg24_to_C12_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Mg24 + He4 --> C12 + O16 @@ -1336,13 +1336,13 @@ void rate_He4_Mg24_to_C12_O16_derived(const tf_t& tfactors, amrex::Real& rate, a ln_set_rate = 49.57295819231048 + -78.2098115311048 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 78.2098115311048 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1356,8 +1356,8 @@ void rate_He4_Mg24_to_C12_O16_derived(const tf_t& tfactors, amrex::Real& rate, a } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Al27_to_C12_O16_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_p_Al27_to_C12_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Al27 + p --> C12 + O16 @@ -1399,13 +1399,13 @@ void rate_p_Al27_to_C12_O16_derived(const tf_t& tfactors, amrex::Real& rate, amr ln_set_rate = 68.96430994536895 + -59.8005159928172 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 59.8005159928172 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1419,8 +1419,8 @@ void rate_p_Al27_to_C12_O16_derived(const tf_t& tfactors, amrex::Real& rate, amr } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Si28_to_p_P31_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_He4_Si28_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Si28 + He4 --> p + P31 @@ -1462,13 +1462,13 @@ void rate_He4_Si28_to_p_P31_derived(const tf_t& tfactors, amrex::Real& rate, amr ln_set_rate = -11.415669089666713 + -25.663579682396225 * tfactors.T9i + 21.521 * tfactors.T913 + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 25.663579682396225 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1483,13 +1483,13 @@ void rate_He4_Si28_to_p_P31_derived(const tf_t& tfactors, amrex::Real& rate, amr ln_set_rate = -13.441669089666712 + -24.114989682396224 * tfactors.T9i + -1.5 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 24.114989682396224 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1504,13 +1504,13 @@ void rate_He4_Si28_to_p_P31_derived(const tf_t& tfactors, amrex::Real& rate, amr ln_set_rate = 60.360230910333286 + -22.237829682396224 * tfactors.T9i + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 22.237829682396224 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1524,8 +1524,8 @@ void rate_He4_Si28_to_p_P31_derived(const tf_t& tfactors, amrex::Real& rate, amr } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Si28_to_O16_O16_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_He4_Si28_to_O16_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Si28 + He4 --> O16 + O16 @@ -1561,13 +1561,13 @@ void rate_He4_Si28_to_O16_O16_derived(const tf_t& tfactors, amrex::Real& rate, a ln_set_rate = 97.78921572069022 + -111.60083385054465 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 111.60083385054465 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1581,8 +1581,8 @@ void rate_He4_Si28_to_O16_O16_derived(const tf_t& tfactors, amrex::Real& rate, a } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_P31_to_O16_O16_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_p_P31_to_O16_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // P31 + p --> O16 + O16 @@ -1618,13 +1618,13 @@ void rate_p_P31_to_O16_O16_derived(const tf_t& tfactors, amrex::Real& rate, amre ln_set_rate = 86.33118481035693 + -88.87103716814843 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 88.87103716814843 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1638,8 +1638,8 @@ void rate_p_P31_to_O16_O16_derived(const tf_t& tfactors, amrex::Real& rate, amre } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Mg24_to_C12_C12_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_Mg24_to_C12_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Mg24 --> C12 + C12 @@ -1670,13 +1670,13 @@ void rate_Mg24_to_C12_C12_derived(const tf_t& tfactors, amrex::Real& rate, amrex ln_set_rate = 12.203060308868553 + -191.84225839903127 * tfactors.T9i + 11.4826 * tfactors.T913 + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953 + 1.5 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 191.84225839903127 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923 + 1.5 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1690,8 +1690,8 @@ void rate_Mg24_to_C12_C12_derived(const tf_t& tfactors, amrex::Real& rate, amrex } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_S32_to_O16_O16_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_S32_to_O16_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // S32 --> O16 + O16 @@ -1721,13 +1721,13 @@ void rate_S32_to_O16_O16_derived(const tf_t& tfactors, amrex::Real& rate, amrex: ln_set_rate = 102.9883182326601 + -192.3301592962798 * tfactors.T9i + -120.83 * tfactors.T913i + -7.72334 * tfactors.T913 + -2.27939 * tfactors.T9 + 0.167655 * tfactors.T953 + 9.12001 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 192.3301592962798 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -120.83 * tfactors.T943i + (1.0/3.0) * -7.72334 * tfactors.T923i + -2.27939 + (5.0/3.0) * 0.167655 * tfactors.T923 + 9.12001 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1741,8 +1741,8 @@ void rate_S32_to_O16_O16_derived(const tf_t& tfactors, amrex::Real& rate, amrex: } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Si28_to_C12_O16_derived(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_Si28_to_C12_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Si28 --> C12 + O16 @@ -1778,13 +1778,13 @@ void rate_Si28_to_C12_O16_derived(const tf_t& tfactors, amrex::Real& rate, amrex ln_set_rate = -106.3111878016318 + -195.9077167184711 * tfactors.T9i + -293.089 * tfactors.T913i + 414.404 * tfactors.T913 + -28.0562 * tfactors.T9 + 1.61807 * tfactors.T953 + -176.78 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 195.9077167184711 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -293.089 * tfactors.T943i + (1.0/3.0) * 414.404 * tfactors.T923i + -28.0562 + (5.0/3.0) * 1.61807 * tfactors.T923 + -176.78 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1798,8 +1798,8 @@ void rate_Si28_to_C12_O16_derived(const tf_t& tfactors, amrex::Real& rate, amrex } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_S32_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_He4_S32_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // S32 + He4 --> p + Cl35 @@ -1841,13 +1841,13 @@ void rate_He4_S32_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amr ln_set_rate = -0.8597847344696254 + -25.589703706656966 * tfactors.T9i + -1.5 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 25.589703706656966 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1862,13 +1862,13 @@ void rate_He4_S32_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amr ln_set_rate = -57.37716473446963 + -22.187684706656967 * tfactors.T9i + 25.5338 * tfactors.T913 + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 22.187684706656967 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1883,13 +1883,13 @@ void rate_He4_S32_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amr ln_set_rate = 32.27223526553037 + -21.654753706656965 * tfactors.T9i + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 21.654753706656965 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1904,13 +1904,13 @@ void rate_He4_S32_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amr ln_set_rate = 2.4434452655303747 + -27.664513706656965 * tfactors.T9i + 5.33756 * tfactors.T913 + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 27.664513706656965 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1924,8 +1924,8 @@ void rate_He4_S32_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amr } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ar36_to_He4_S32_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_Ar36_to_He4_S32_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Ar36 --> He4 + S32 @@ -1961,13 +1961,13 @@ void rate_Ar36_to_He4_S32_removed(const tf_t& tfactors, amrex::Real& rate, amrex ln_set_rate = 73.81807507159112 + -77.06468541928012 * tfactors.T9i + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + 0.833333 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 77.06468541928012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + 0.833333 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1981,8 +1981,8 @@ void rate_Ar36_to_He4_S32_removed(const tf_t& tfactors, amrex::Real& rate, amrex } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ar36_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_Ar36_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Ar36 --> p + Cl35 @@ -2017,12 +2017,12 @@ void rate_Ar36_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amrex: // ReacLib set derived from il10r ln_set_rate = -17.455589662878502 + -99.28409012589869 * tfactors.T9i; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 99.28409012589869 * tfactors.T9i * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2037,13 +2037,13 @@ void rate_Ar36_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amrex: ln_set_rate = 60.7561103371215 + -98.71943912589869 * tfactors.T9i + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + 0.833333 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 98.71943912589869 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + 0.833333 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2058,13 +2058,13 @@ void rate_Ar36_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amrex: ln_set_rate = 17.222320337121502 + -102.37035912589869 * tfactors.T9i + 18.0179 * tfactors.T913 + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 102.37035912589869 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2078,12 +2078,12 @@ void rate_Ar36_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amrex: // ReacLib set derived from il10r ln_set_rate = 16.0363703371215 + -100.7293991258987 * tfactors.T9i; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 100.7293991258987 * tfactors.T9i * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2097,8 +2097,8 @@ void rate_Ar36_to_p_Cl35_removed(const tf_t& tfactors, amrex::Real& rate, amrex: } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Ar36_to_p_K39_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_He4_Ar36_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Ar36 + He4 --> p + K39 @@ -2140,13 +2140,13 @@ void rate_He4_Ar36_to_p_K39_removed(const tf_t& tfactors, amrex::Real& rate, amr ln_set_rate = 20.654451232729432 + -14.951286608188834 * tfactors.T9i + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 14.951286608188834 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2160,8 +2160,8 @@ void rate_He4_Ar36_to_p_K39_removed(const tf_t& tfactors, amrex::Real& rate, amr } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ca40_to_He4_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_Ca40_to_He4_Ar36_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Ca40 --> He4 + Ar36 @@ -2197,13 +2197,13 @@ void rate_Ca40_to_He4_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amre ln_set_rate = 77.28432125250924 + -81.69320665503751 * tfactors.T9i + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + 0.833333 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 81.69320665503751 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + 0.833333 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2217,8 +2217,8 @@ void rate_Ca40_to_He4_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amre } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ca40_to_p_K39_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_Ca40_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Ca40 --> p + K39 @@ -2254,13 +2254,13 @@ void rate_Ca40_to_p_K39_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: ln_set_rate = 2786.453572485239 + -101.86683326322635 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 + 1137.69 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 101.86683326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i + 1137.69 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2275,13 +2275,13 @@ void rate_Ca40_to_p_K39_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: ln_set_rate = 613.1725724852387 + -109.20919326322635 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 + 566.426 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 109.20919326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i + 566.426 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2296,13 +2296,13 @@ void rate_Ca40_to_p_K39_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: ln_set_rate = 127.32557248523868 + -98.30957326322635 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 60.7367 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 98.30957326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 60.7367 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2316,8 +2316,8 @@ void rate_Ca40_to_p_K39_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Ca40_to_p_Sc43_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_He4_Ca40_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Ca40 + He4 --> p + Sc43 @@ -2359,13 +2359,13 @@ void rate_He4_Ca40_to_p_Sc43_removed(const tf_t& tfactors, amrex::Real& rate, am ln_set_rate = 35.67546755788414 + -40.87525788838128 * tfactors.T9i + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 40.87525788838128 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2379,8 +2379,8 @@ void rate_He4_Ca40_to_p_Sc43_removed(const tf_t& tfactors, amrex::Real& rate, am } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ti44_to_He4_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_Ti44_to_He4_Ca40_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Ti44 --> He4 + Ca40 @@ -2416,13 +2416,13 @@ void rate_Ti44_to_He4_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amre ln_set_rate = 78.7006646483486 + -59.49768581557457 * tfactors.T9i + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + 0.833333 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 59.49768581557457 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + 0.833333 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2436,8 +2436,8 @@ void rate_Ti44_to_He4_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amre } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ti44_to_p_Sc43_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_Ti44_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Ti44 --> p + Sc43 @@ -2473,13 +2473,13 @@ void rate_Ti44_to_p_Sc43_removed(const tf_t& tfactors, amrex::Real& rate, amrex: ln_set_rate = 62.61343220623275 + -100.37294370395585 * tfactors.T9i + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + 0.833333 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 100.37294370395585 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + 0.833333 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2493,8 +2493,8 @@ void rate_Ti44_to_p_Sc43_removed(const tf_t& tfactors, amrex::Real& rate, amrex: } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Cr48_to_He4_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_Cr48_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Cr48 --> He4 + Ti44 @@ -2530,13 +2530,13 @@ void rate_Cr48_to_He4_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amre ln_set_rate = 89.75906465832496 + -89.32364150067336 * tfactors.T9i + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + 0.833333 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 89.32364150067336 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + 0.833333 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2550,8 +2550,8 @@ void rate_Cr48_to_He4_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amre } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Cr48_to_p_V47_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_Cr48_to_p_V47_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Cr48 --> p + V47 @@ -2587,13 +2587,13 @@ void rate_Cr48_to_p_V47_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: ln_set_rate = 67.75975303984967 + -100.08956223422913 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -6.20886 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 100.08956223422913 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -6.20886 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2608,13 +2608,13 @@ void rate_Cr48_to_p_V47_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: ln_set_rate = 536.5429530398497 + -99.32517223422914 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 332.227 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 99.32517223422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 332.227 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2629,13 +2629,13 @@ void rate_Cr48_to_p_V47_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: ln_set_rate = 48.911453039849675 + -93.78359723422915 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -6.9232499999999995 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 93.78359723422915 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -6.9232499999999995 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2650,13 +2650,13 @@ void rate_Cr48_to_p_V47_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: ln_set_rate = 65.64255303984967 + -94.54467623422914 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -47.9742 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 94.54467623422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -47.9742 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2670,8 +2670,8 @@ void rate_Cr48_to_p_V47_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_V47_to_He4_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_p_V47_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // V47 + p --> He4 + Ti44 @@ -2713,13 +2713,13 @@ void rate_p_V47_to_He4_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amr ln_set_rate = -76.63208838152472 + -6.086479266444236 * tfactors.T9i + 70.2835 * tfactors.T913 + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 6.086479266444236 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2733,8 +2733,8 @@ void rate_p_V47_to_He4_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amr } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Fe52_to_He4_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_Fe52_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Fe52 --> He4 + Cr48 @@ -2770,13 +2770,13 @@ void rate_Fe52_to_He4_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amre ln_set_rate = 90.149113992515 + -92.09363997638769 * tfactors.T9i + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + 0.833333 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 92.09363997638769 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + 0.833333 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2790,8 +2790,8 @@ void rate_Fe52_to_He4_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amre } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Fe52_to_p_Mn51_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_Fe52_to_p_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Fe52 --> p + Mn51 @@ -2827,13 +2827,13 @@ void rate_Fe52_to_p_Mn51_removed(const tf_t& tfactors, amrex::Real& rate, amrex: ln_set_rate = 61.74743132228039 + -85.61663846070292 * tfactors.T9i + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + 0.833333 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 85.61663846070292 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + 0.833333 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2847,8 +2847,8 @@ void rate_Fe52_to_p_Mn51_removed(const tf_t& tfactors, amrex::Real& rate, amrex: } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Mn51_to_He4_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_p_Mn51_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Mn51 + p --> He4 + Cr48 @@ -2890,13 +2890,13 @@ void rate_p_Mn51_to_He4_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, am ln_set_rate = 58.71348267023461 + -6.47700151570639 * tfactors.T9i + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 6.47700151570639 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2910,8 +2910,8 @@ void rate_p_Mn51_to_He4_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, am } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ni56_to_He4_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_Ni56_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Ni56 --> He4 + Fe52 @@ -2947,13 +2947,13 @@ void rate_Ni56_to_He4_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amre ln_set_rate = 91.62430485073777 + -92.84097094326391 * tfactors.T9i + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + 0.833333 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 92.84097094326391 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + 0.833333 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -2967,8 +2967,8 @@ void rate_Ni56_to_He4_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amre } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ni56_to_p_Co55_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_Ni56_to_p_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Ni56 --> p + Co55 @@ -3004,13 +3004,13 @@ void rate_Ni56_to_p_Co55_removed(const tf_t& tfactors, amrex::Real& rate, amrex: ln_set_rate = 63.15120404192561 + -83.16460378149378 * tfactors.T9i + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + 0.833333 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 83.16460378149378 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + 0.833333 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3024,8 +3024,8 @@ void rate_Ni56_to_p_Co55_removed(const tf_t& tfactors, amrex::Real& rate, amrex: } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Co55_to_He4_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_p_Co55_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { // Co55 + p --> He4 + Fe52 @@ -3067,13 +3067,13 @@ void rate_p_Co55_to_He4_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, am ln_set_rate = 61.42570080881217 + -9.676367161770125 * tfactors.T9i + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; - ln_set_rate += net_log_pf; + ln_set_rate += net_log_pf + log_scor; if constexpr (std::is_same_v) { dln_set_rate_dT9 = 9.676367161770125 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -3103,252 +3103,594 @@ fill_derived_rates(const tf_t& tfactors, T& rate_eval) pf_cache.index_temp_array_1 = interp_net::find_index(tfactors.T9, part_fun::temp_array_1); - rate_N13_to_p_C12_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_N13_to_p_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived) = drate_dT; + { + // N13_to_p_C12_derived + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N13_to_p_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_N13_to_p_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived) = drate_dT; + } } - rate_O16_to_He4_C12_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_O16_to_He4_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_to_He4_C12_derived) = drate_dT; - } - rate_Ne20_to_He4_O16_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ne20_to_He4_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_derived) = drate_dT; + { + // O16_to_He4_C12_derived + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O16_to_He4_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O16_to_He4_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_to_He4_C12_derived) = drate_dT; + } } - rate_Mg24_to_p_Na23_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Mg24_to_p_Na23_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23_derived) = drate_dT; - } - rate_Mg24_to_He4_Ne20_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Mg24_to_He4_Ne20_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20_derived) = drate_dT; + { + // Ne20_to_He4_O16_derived + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne20_to_He4_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne20_to_He4_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_derived) = drate_dT; + } } - rate_Si28_to_p_Al27_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Si28_to_p_Al27_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27_derived) = drate_dT; - } - rate_Si28_to_He4_Mg24_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Si28_to_He4_Mg24_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24_derived) = drate_dT; + { + // Mg24_to_p_Na23_derived + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_to_p_Na23_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23_derived) = drate_dT; + } } - rate_S32_to_p_P31_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_S32_to_p_P31_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_p_P31_derived) = drate_dT; - } - rate_S32_to_He4_Si28_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_S32_to_He4_Si28_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28_derived) = drate_dT; + { + // Mg24_to_He4_Ne20_derived + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_to_He4_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_to_He4_Ne20_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20_derived) = drate_dT; + } } - rate_C12_to_He4_He4_He4_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_C12_to_He4_He4_He4_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_to_He4_He4_He4_derived) = drate_dT; - } - rate_p_O16_to_He4_N13_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_O16_to_He4_N13_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_derived) = drate_dT; + { + // Si28_to_p_Al27_derived + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si28_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_to_p_Al27_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27_derived) = drate_dT; + } } - rate_He4_Ne20_to_p_Na23_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ne20_to_p_Na23_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_p_Na23_derived) = drate_dT; - } - rate_He4_Ne20_to_C12_C12_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ne20_to_C12_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_C12_C12_derived) = drate_dT; + { + // Si28_to_He4_Mg24_derived + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si28_to_He4_Mg24_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_to_He4_Mg24_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24_derived) = drate_dT; + } } - rate_p_Na23_to_C12_C12_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Na23_to_C12_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_C12_C12_derived) = drate_dT; - } - rate_He4_Mg24_to_p_Al27_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Mg24_to_p_Al27_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27_derived) = drate_dT; + { + // S32_to_p_P31_derived + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S32_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_to_p_P31_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_p_P31_derived) = drate_dT; + } } - rate_He4_Mg24_to_C12_O16_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Mg24_to_C12_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_C12_O16_derived) = drate_dT; - } - rate_p_Al27_to_C12_O16_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Al27_to_C12_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al27_to_C12_O16_derived) = drate_dT; + { + // S32_to_He4_Si28_derived - } - rate_He4_Si28_to_p_P31_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Si28_to_p_P31_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S32_to_He4_Si28_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_to_He4_Si28_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28_derived) = drate_dT; + } + } - } - rate_He4_Si28_to_O16_O16_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Si28_to_O16_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_O16_O16_derived) = drate_dT; + { + // C12_to_He4_He4_He4_derived - } - rate_p_P31_to_O16_O16_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_P31_to_O16_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_O16_O16_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_C12_to_He4_He4_He4_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_C12_to_He4_He4_He4_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_to_He4_He4_He4_derived) = drate_dT; + } + } - } - rate_Mg24_to_C12_C12_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Mg24_to_C12_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_C12_C12_derived) = drate_dT; - - } - rate_S32_to_O16_O16_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_S32_to_O16_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_O16_O16_derived) = drate_dT; - - } - rate_Si28_to_C12_O16_derived(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Si28_to_C12_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_C12_O16_derived) = drate_dT; - - } - rate_He4_S32_to_p_Cl35_removed(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_S32_to_p_Cl35_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_removed) = drate_dT; - - } - rate_Ar36_to_He4_S32_removed(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ar36_to_He4_S32_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_removed) = drate_dT; - - } - rate_Ar36_to_p_Cl35_removed(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ar36_to_p_Cl35_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_removed) = drate_dT; - - } - rate_He4_Ar36_to_p_K39_removed(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ar36_to_p_K39_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_removed) = drate_dT; - - } - rate_Ca40_to_He4_Ar36_removed(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ca40_to_He4_Ar36_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_removed) = drate_dT; - - } - rate_Ca40_to_p_K39_removed(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ca40_to_p_K39_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_removed) = drate_dT; - - } - rate_He4_Ca40_to_p_Sc43_removed(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_removed) = drate_dT; - - } - rate_Ti44_to_He4_Ca40_removed(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ti44_to_He4_Ca40_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_removed) = drate_dT; - - } - rate_Ti44_to_p_Sc43_removed(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ti44_to_p_Sc43_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_removed) = drate_dT; - - } - rate_Cr48_to_He4_Ti44_removed(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Cr48_to_He4_Ti44_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_removed) = drate_dT; - - } - rate_Cr48_to_p_V47_removed(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Cr48_to_p_V47_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_removed) = drate_dT; - - } - rate_p_V47_to_He4_Ti44_removed(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_V47_to_He4_Ti44_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_removed) = drate_dT; - - } - rate_Fe52_to_He4_Cr48_removed(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe52_to_He4_Cr48_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_removed) = drate_dT; - - } - rate_Fe52_to_p_Mn51_removed(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe52_to_p_Mn51_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_removed) = drate_dT; - - } - rate_p_Mn51_to_He4_Cr48_removed(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_removed) = drate_dT; - - } - rate_Ni56_to_He4_Fe52_removed(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni56_to_He4_Fe52_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_removed) = drate_dT; - - } - rate_Ni56_to_p_Co55_removed(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni56_to_p_Co55_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_removed) = drate_dT; + { + // p_O16_to_He4_N13_derived + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); + } +#endif + rate_p_O16_to_He4_N13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_p_O16_to_He4_N13_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_derived) = drate_dT; + } + } + + { + // He4_Ne20_to_p_Na23_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } +#endif + rate_He4_Ne20_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_He4_Ne20_to_p_Na23_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Ne20_to_p_Na23_derived) = drate_dT; + } + } + + { + // He4_Ne20_to_C12_C12_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } +#endif + rate_He4_Ne20_to_C12_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_He4_Ne20_to_C12_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Ne20_to_C12_C12_derived) = drate_dT; + } + } + + { + // p_Na23_to_C12_C12_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); + } +#endif + rate_p_Na23_to_C12_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_p_Na23_to_C12_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Na23_to_C12_C12_derived) = drate_dT; + } + } + + { + // He4_Mg24_to_p_Al27_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_He4_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); + } +#endif + rate_He4_Mg24_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_He4_Mg24_to_p_Al27_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27_derived) = drate_dT; + } + } + + { + // He4_Mg24_to_C12_O16_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_He4_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); + } +#endif + rate_He4_Mg24_to_C12_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_He4_Mg24_to_C12_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Mg24_to_C12_O16_derived) = drate_dT; + } + } + + { + // p_Al27_to_C12_O16_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); + } +#endif + rate_p_Al27_to_C12_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_p_Al27_to_C12_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Al27_to_C12_O16_derived) = drate_dT; + } + } + + { + // He4_Si28_to_p_P31_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_He4_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); + } +#endif + rate_He4_Si28_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_He4_Si28_to_p_P31_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31_derived) = drate_dT; + } + } + + { + // He4_Si28_to_O16_O16_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_He4_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); + } +#endif + rate_He4_Si28_to_O16_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_He4_Si28_to_O16_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Si28_to_O16_O16_derived) = drate_dT; + } + } + + { + // p_P31_to_O16_O16_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); + } +#endif + rate_p_P31_to_O16_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_p_P31_to_O16_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_P31_to_O16_O16_derived) = drate_dT; + } + } + + { + // Mg24_to_C12_C12_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_to_C12_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_to_C12_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_C12_C12_derived) = drate_dT; + } + } + + { + // S32_to_O16_O16_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S32_to_O16_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_to_O16_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_O16_O16_derived) = drate_dT; + } + } + + { + // Si28_to_C12_O16_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si28_to_C12_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_to_C12_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_C12_O16_derived) = drate_dT; + } + } + + { + // He4_S32_to_p_Cl35_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_He4_S32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); + } +#endif + rate_He4_S32_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_He4_S32_to_p_Cl35_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_derived) = drate_dT; + } + } + + { + // Ar36_to_He4_S32_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar36_to_He4_S32_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ar36_to_He4_S32_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived) = drate_dT; + } + } + + { + // Ar36_to_p_Cl35_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar36_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived) = drate_dT; + } + } + + { + // He4_Ar36_to_p_K39_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_He4_Ar36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); + } +#endif + rate_He4_Ar36_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_He4_Ar36_to_p_K39_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_derived) = drate_dT; + } + } + + { + // Ca40_to_He4_Ar36_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca40_to_He4_Ar36_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived) = drate_dT; + } + } + + { + // Ca40_to_p_K39_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca40_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ca40_to_p_K39_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived) = drate_dT; + } + } + + { + // He4_Ca40_to_p_Sc43_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_He4_Ca40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); + } +#endif + rate_He4_Ca40_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_derived) = drate_dT; + } + } + + { + // Ti44_to_He4_Ca40_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti44_to_He4_Ca40_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived) = drate_dT; + } + } + + { + // Ti44_to_p_Sc43_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti44_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived) = drate_dT; + } + } + + { + // Cr48_to_He4_Ti44_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr48_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived) = drate_dT; + } + } + + { + // Cr48_to_p_V47_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr48_to_p_V47_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Cr48_to_p_V47_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived) = drate_dT; + } + } + + { + // p_V47_to_He4_Ti44_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_V47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); + } +#endif + rate_p_V47_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived) = drate_dT; + } + } + + { + // Fe52_to_He4_Cr48_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe52_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived) = drate_dT; + } + } + + { + // Fe52_to_p_Mn51_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe52_to_p_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived) = drate_dT; + } + } + + { + // p_Mn51_to_He4_Cr48_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_Mn51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); + } +#endif + rate_p_Mn51_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived) = drate_dT; + } + } + + { + // Ni56_to_He4_Fe52_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived) = drate_dT; + } + } + + { + // Ni56_to_p_Co55_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_to_p_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni56_to_p_Co55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived) = drate_dT; + } + } + + { + // p_Co55_to_He4_Fe52_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); + } +#endif + rate_p_Co55_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived) = drate_dT; + } } - rate_p_Co55_to_He4_Fe52_removed(tfactors, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_removed) = drate_dT; - } } #endif diff --git a/networks/he-burn/ase/interp_tools.H b/networks/he-burn/ase/interp_tools.H index 5444bb552..bbc0d2685 100644 --- a/networks/he-burn/ase/interp_tools.H +++ b/networks/he-burn/ase/interp_tools.H @@ -55,7 +55,7 @@ namespace interp_net { if (x0 < x_array(left)) { idx = left; - } else if (x0 > x_array(right)) { + } else if (x0 >= x_array(right)) { idx = right - 1; } else { idx = find_index(x0, x_array); diff --git a/networks/he-burn/ase/partition_functions.H b/networks/he-burn/ase/partition_functions.H index 915f5412e..aed45f869 100644 --- a/networks/he-burn/ase/partition_functions.H +++ b/networks/he-burn/ase/partition_functions.H @@ -22,7 +22,7 @@ namespace part_fun { // this is T9 - inline AMREX_GPU_MANAGED amrex::Array1D temp_array_1 = { + inline AMREX_GPU_DEVICE amrex::Array1D temp_array_1 = { 0.01, 0.15, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.5, 2.0, 2.5, 3.0, @@ -45,7 +45,7 @@ namespace part_fun { // this is log(partition function) - inline AMREX_GPU_MANAGED amrex::Array1D O16_pf_array = { + inline AMREX_GPU_DEVICE amrex::Array1D O16_pf_array = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, @@ -69,7 +69,7 @@ namespace part_fun { // this is log(partition function) - inline AMREX_GPU_MANAGED amrex::Array1D Ne20_pf_array = { + inline AMREX_GPU_DEVICE amrex::Array1D Ne20_pf_array = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.5999872001381317e-05, 0.00038192705657577196, 0.0025407695097516073, 0.008962714607884434, @@ -93,7 +93,7 @@ namespace part_fun { // this is log(partition function) - inline AMREX_GPU_MANAGED amrex::Array1D Na23_pf_array = { + inline AMREX_GPU_DEVICE amrex::Array1D Na23_pf_array = { 0.0, 0.0, 0.0, 0.0, 3.999991999914312e-06, 5.499848755537228e-05, 0.0003019544071791481, 0.0010184811719273939, 0.002532789778269521, 0.0051397687298581594, 0.00904794362623629, 0.048651106882368046, 0.11044327651595648, 0.1779034781081781, 0.24236561796080108, @@ -117,7 +117,7 @@ namespace part_fun { // this is log(partition function) - inline AMREX_GPU_MANAGED amrex::Array1D Mg24_pf_array = { + inline AMREX_GPU_DEVICE amrex::Array1D Mg24_pf_array = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.999994999180668e-07, 0.0001259920626667995, 0.0017764212290928272, 0.008665347199341391, 0.02478529122240376, @@ -141,7 +141,7 @@ namespace part_fun { // this is log(partition function) - inline AMREX_GPU_MANAGED amrex::Array1D Al27_pf_array = { + inline AMREX_GPU_DEVICE amrex::Array1D Al27_pf_array = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.9999980000601777e-06, 7.999968000178667e-06, 2.3999712004631918e-05, 0.0007467211343664971, 0.0043365834151270505, 0.012613119117341724, 0.025879225360058624, @@ -165,7 +165,7 @@ namespace part_fun { // this is log(partition function) - inline AMREX_GPU_MANAGED amrex::Array1D Si28_pf_array = { + inline AMREX_GPU_DEVICE amrex::Array1D Si28_pf_array = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.999987500074422e-06, 0.00016398655347018683, 0.0012951609168895288, 0.005118876169847203, @@ -189,7 +189,7 @@ namespace part_fun { // this is log(partition function) - inline AMREX_GPU_MANAGED amrex::Array1D P31_pf_array = { + inline AMREX_GPU_DEVICE amrex::Array1D P31_pf_array = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.999994999180668e-07, 0.00011099383995581128, 0.0012951609168895288, 0.005682822135497365, 0.015358452840402968, @@ -213,7 +213,7 @@ namespace part_fun { // this is log(partition function) - inline AMREX_GPU_MANAGED amrex::Array1D S32_pf_array = { + inline AMREX_GPU_DEVICE amrex::Array1D S32_pf_array = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.1999928000476974e-05, 0.0001599872013651075, 0.0008965979359162839, @@ -237,7 +237,7 @@ namespace part_fun { // this is log(partition function) - inline AMREX_GPU_MANAGED amrex::Array1D Cl35_pf_array = { + inline AMREX_GPU_DEVICE amrex::Array1D Cl35_pf_array = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 4.1999118024792734e-05, 0.0004768862716642343, 0.002171640281399847, 0.006214649003101918, @@ -261,7 +261,7 @@ namespace part_fun { // this is log(partition function) - inline AMREX_GPU_MANAGED amrex::Array1D Ar36_pf_array = { + inline AMREX_GPU_DEVICE amrex::Array1D Ar36_pf_array = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.999994999180668e-07, 5.399854205248437e-05, 0.0005328580059528724, 0.0024460060865663185, @@ -285,7 +285,7 @@ namespace part_fun { // this is log(partition function) - inline AMREX_GPU_MANAGED amrex::Array1D K39_pf_array = { + inline AMREX_GPU_DEVICE amrex::Array1D K39_pf_array = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.999959500168733e-06, 7.899687966427683e-05, @@ -309,7 +309,7 @@ namespace part_fun { // this is log(partition function) - inline AMREX_GPU_MANAGED amrex::Array1D Ca40_pf_array = { + inline AMREX_GPU_DEVICE amrex::Array1D Ca40_pf_array = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.999968000178667e-06, @@ -333,7 +333,7 @@ namespace part_fun { // this is log(partition function) - inline AMREX_GPU_MANAGED amrex::Array1D Sc43_pf_array = { + inline AMREX_GPU_DEVICE amrex::Array1D Sc43_pf_array = { 0.0, 3.999991999914312e-06, 7.399726213497465e-05, 0.001402016715091746, 0.006077494560027172, 0.014618625311574956, 0.02619392408247513, 0.039701366851552046, 0.05424762604898671, 0.06923404240290812, 0.08429886812818674, 0.15680885802481764, 0.22576092300652262, 0.2958459074810483, 0.3697667707656917, @@ -357,7 +357,7 @@ namespace part_fun { // this is log(partition function) - inline AMREX_GPU_MANAGED amrex::Array1D Ti44_pf_array = { + inline AMREX_GPU_DEVICE amrex::Array1D Ti44_pf_array = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.999994999180668e-07, 3.999991999914312e-06, 1.6999855501571383e-05, 0.001148340404701717, 0.009309531525720607, 0.03254753540924965, 0.07466488847560604, @@ -381,7 +381,7 @@ namespace part_fun { // this is log(partition function) - inline AMREX_GPU_MANAGED amrex::Array1D V47_pf_array = { + inline AMREX_GPU_DEVICE amrex::Array1D V47_pf_array = { 5.799831806492598e-05, 0.0017464740260096463, 0.009732485344379859, 0.056357648868795907, 0.13811537012749586, 0.23671188375470134, 0.33785770498795076, 0.4340856062023528, 0.5224146112876673, 0.6021781642551665, 0.6737563884480131, 0.9374767156169274, 1.1057414821365488, 1.2270658944596067, 1.3241582851318665, @@ -405,7 +405,7 @@ namespace part_fun { // this is log(partition function) - inline AMREX_GPU_MANAGED amrex::Array1D Cr48_pf_array = { + inline AMREX_GPU_DEVICE amrex::Array1D Cr48_pf_array = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.9999980000601777e-06, 1.8999819502277547e-05, 9.099585975123644e-05, 0.0003069528851426514, 0.0008086729358847522, 0.01474081832149851, 0.06183142275093884, 0.143112843568674, 0.24629820135844444, @@ -429,7 +429,7 @@ namespace part_fun { // this is log(partition function) - inline AMREX_GPU_MANAGED amrex::Array1D Mn51_pf_array = { + inline AMREX_GPU_DEVICE amrex::Array1D Mn51_pf_array = { 0.0, 0.0, 9.999994999180668e-07, 0.00013899034039500225, 0.001371059667992007, 0.005417299897942013, 0.013501443923597083, 0.02583439952789853, 0.0418873468309038, 0.060801547340661864, 0.08168044277606486, 0.19327880627694072, 0.29229193070917964, 0.3745845060072903, 0.44569620808461924, @@ -453,7 +453,7 @@ namespace part_fun { // this is log(partition function) - inline AMREX_GPU_MANAGED amrex::Array1D Fe52_pf_array = { + inline AMREX_GPU_DEVICE amrex::Array1D Fe52_pf_array = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.999991999914312e-06, 2.1999758003515767e-05, 8.699621571943491e-05, 0.00026096594542543384, 0.006963697081509575, 0.035510955889664755, 0.09259923578662213, 0.17220724583011637, @@ -477,7 +477,7 @@ namespace part_fun { // this is log(partition function) - inline AMREX_GPU_MANAGED amrex::Array1D Co55_pf_array = { + inline AMREX_GPU_DEVICE amrex::Array1D Co55_pf_array = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.9999980000601777e-06, 3.299945551192844e-05, 0.0002149768908123338, @@ -501,7 +501,7 @@ namespace part_fun { // this is log(partition function) - inline AMREX_GPU_MANAGED amrex::Array1D Ni56_pf_array = { + inline AMREX_GPU_DEVICE amrex::Array1D Ni56_pf_array = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.999994999180668e-07, 1.7999838002017484e-05, 0.00014798904908051437, @@ -525,7 +525,7 @@ namespace part_fun { // interpolation routine template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void interpolate_pf(const amrex::Real t9, int idx, const T& temp_array, const T& pf_array, amrex::Real& logpf, amrex::Real& dlogpf_dT9) { @@ -571,7 +571,7 @@ namespace part_fun { amrex::Array2D data; int index_temp_array_1{-1}; - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE pf_cache_t() { // The entries will be default-initialized to -900, // log(partition_function) should never be -900. @@ -587,7 +587,7 @@ namespace part_fun { // get the partition function for nucleus inuc. Here pf_cache // should already contain the index into the temp / pf arrays -AMREX_GPU_HOST_DEVICE AMREX_INLINE +AMREX_GPU_DEVICE AMREX_INLINE void get_partition_function(const int inuc, [[maybe_unused]] const amrex::Real T9, const part_fun::pf_cache_t& pf_cache, @@ -735,7 +735,7 @@ void get_partition_function(const int inuc, // index into the arrays. Uses tfactors instead of T9 as argument, // and returns pf and dpf_dT instead of logpf and dlogpf_dT9 -AMREX_GPU_HOST_DEVICE AMREX_INLINE +AMREX_GPU_DEVICE AMREX_INLINE void get_partition_function(const int inuc, [[maybe_unused]] const tf_t& tfactors, amrex::Real& pf, amrex::Real& dpf_dT) { @@ -755,7 +755,7 @@ void get_partition_function(const int inuc, } -AMREX_GPU_HOST_DEVICE AMREX_INLINE +AMREX_GPU_DEVICE AMREX_INLINE void get_partition_function_cached(const int inuc, const amrex::Real T9, part_fun::pf_cache_t& pf_cache, amrex::Real& logpf, amrex::Real& dlogpf_dT9) { @@ -773,7 +773,7 @@ void get_partition_function_cached(const int inuc, const amrex::Real T9, template -AMREX_GPU_HOST_DEVICE AMREX_INLINE +AMREX_GPU_DEVICE AMREX_INLINE constexpr amrex::Real get_spin_state() { static_assert(spec >= 1 && spec <= NumSpec); @@ -823,7 +823,7 @@ constexpr amrex::Real get_spin_state() { // Legacy (non-templated) interface -AMREX_GPU_HOST_DEVICE AMREX_INLINE +AMREX_GPU_DEVICE AMREX_INLINE amrex::Real get_spin_state (int spec) { amrex::Real s = -1.0_rt; diff --git a/networks/he-burn/ase/pynucastro-info.txt b/networks/he-burn/ase/pynucastro-info.txt index e055581de..a8c40442c 100644 --- a/networks/he-burn/ase/pynucastro-info.txt +++ b/networks/he-burn/ase/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 2.9.0-28-gbcc09d414 +pynucastro version: 2.11.0-10-ge524a06ef diff --git a/networks/he-burn/ase/reaclib_rates.H b/networks/he-burn/ase/reaclib_rates.H index fdaa029b8..3a36f7af9 100644 --- a/networks/he-burn/ase/reaclib_rates.H +++ b/networks/he-burn/ase/reaclib_rates.H @@ -6,25 +6,14 @@ #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_p_C12_to_N13_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_p_C12_to_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // C12 + p --> N13 @@ -39,9 +28,13 @@ void rate_p_C12_to_N13_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::R ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -56,9 +49,13 @@ void rate_p_C12_to_N13_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::R ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i + 0.148883 + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -72,8 +69,8 @@ void rate_p_C12_to_N13_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::R } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_C12_to_O16_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_He4_C12_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // C12 + He4 --> O16 @@ -88,9 +85,13 @@ void rate_He4_C12_to_O16_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex: ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -105,9 +106,13 @@ void rate_He4_C12_to_O16_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex: ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -121,8 +126,8 @@ void rate_He4_C12_to_O16_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex: } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_O16_to_Ne20_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_He4_O16_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + He4 --> Ne20 @@ -137,9 +142,13 @@ void rate_He4_O16_to_Ne20_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -154,9 +163,13 @@ void rate_He4_O16_to_Ne20_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -171,9 +184,13 @@ void rate_He4_O16_to_Ne20_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -187,8 +204,8 @@ void rate_He4_O16_to_Ne20_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_Mg24_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_He4_Ne20_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Ne20 + He4 --> Mg24 @@ -203,9 +220,13 @@ void rate_He4_Ne20_to_Mg24_reaclib(const tf_t& tfactors, amrex::Real& rate, amre ln_set_rate = -8.79827 + -12.7809 * tfactors.T9i + 16.9229 * tfactors.T913 + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 12.7809 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923 + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -220,9 +241,13 @@ void rate_He4_Ne20_to_Mg24_reaclib(const tf_t& tfactors, amrex::Real& rate, amre ln_set_rate = 1.98307 + -9.22026 * tfactors.T9i + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 9.22026 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -237,9 +262,13 @@ void rate_He4_Ne20_to_Mg24_reaclib(const tf_t& tfactors, amrex::Real& rate, amre ln_set_rate = -38.7055 + -2.50605 * tfactors.T9i + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 2.50605 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -254,9 +283,13 @@ void rate_He4_Ne20_to_Mg24_reaclib(const tf_t& tfactors, amrex::Real& rate, amre ln_set_rate = 24.5058 + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -270,8 +303,8 @@ void rate_He4_Ne20_to_Mg24_reaclib(const tf_t& tfactors, amrex::Real& rate, amre } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Na23_to_Mg24_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_p_Na23_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Na23 + p --> Mg24 @@ -286,9 +319,13 @@ void rate_p_Na23_to_Mg24_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex: ln_set_rate = 9.0594 + -3.28029 * tfactors.T9i + -0.360588 * tfactors.T913 + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 3.28029 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923 + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -303,9 +340,13 @@ void rate_p_Na23_to_Mg24_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex: ln_set_rate = -5.02585 + -1.61219 * tfactors.T9i + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 1.61219 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -320,9 +361,13 @@ void rate_p_Na23_to_Mg24_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex: ln_set_rate = 18.9075 + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -336,8 +381,8 @@ void rate_p_Na23_to_Mg24_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex: } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_Si28_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_He4_Mg24_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Mg24 + He4 --> Si28 @@ -352,9 +397,13 @@ void rate_He4_Mg24_to_Si28_reaclib(const tf_t& tfactors, amrex::Real& rate, amre ln_set_rate = 8.03977 + -15.629 * tfactors.T9i + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 15.629 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -369,9 +418,13 @@ void rate_He4_Mg24_to_Si28_reaclib(const tf_t& tfactors, amrex::Real& rate, amre ln_set_rate = -50.5494 + -12.8332 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 12.8332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923 + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -385,8 +438,8 @@ void rate_He4_Mg24_to_Si28_reaclib(const tf_t& tfactors, amrex::Real& rate, amre } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Al27_to_Si28_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_p_Al27_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Al27 + p --> Si28 @@ -401,9 +454,13 @@ void rate_p_Al27_to_Si28_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex: ln_set_rate = -13.6664 + -1.90396 * tfactors.T9i + 23.8634 * tfactors.T913 + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 1.90396 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923 + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -418,9 +475,13 @@ void rate_p_Al27_to_Si28_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex: ln_set_rate = 86.0234 + -0.387313 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 0.387313 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923 + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -435,9 +496,13 @@ void rate_p_Al27_to_Si28_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex: ln_set_rate = 21.1065 + -23.2205 * tfactors.T913i + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = + -(1.0/3.0) * -23.2205 * tfactors.T943i + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -451,8 +516,8 @@ void rate_p_Al27_to_Si28_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex: } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Si28_to_S32_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_He4_Si28_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Si28 + He4 --> S32 @@ -467,9 +532,13 @@ void rate_He4_Si28_to_S32_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex ln_set_rate = 47.9212 + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -483,8 +552,8 @@ void rate_He4_Si28_to_S32_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_P31_to_S32_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_p_P31_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // P31 + p --> S32 @@ -499,9 +568,13 @@ void rate_p_P31_to_S32_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::R ln_set_rate = 0.821556 + -3.77704 * tfactors.T9i + 8.09341 * tfactors.T913 + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 3.77704 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923 + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -516,9 +589,13 @@ void rate_p_P31_to_S32_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::R ln_set_rate = -2.66839 + -2.25958 * tfactors.T9i + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 2.25958 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -533,9 +610,13 @@ void rate_p_P31_to_S32_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::R ln_set_rate = 19.2596 + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -549,8 +630,8 @@ void rate_p_P31_to_S32_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::R } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_C12_C12_to_p_Na23_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_C12_C12_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // C12 + C12 --> p + Na23 @@ -565,9 +646,13 @@ void rate_C12_C12_to_p_Na23_reaclib(const tf_t& tfactors, amrex::Real& rate, amr ln_set_rate = 60.9649 + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -581,8 +666,8 @@ void rate_C12_C12_to_p_Na23_reaclib(const tf_t& tfactors, amrex::Real& rate, amr } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_C12_C12_to_He4_Ne20_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_C12_C12_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // C12 + C12 --> He4 + Ne20 @@ -597,9 +682,13 @@ void rate_C12_C12_to_He4_Ne20_reaclib(const tf_t& tfactors, amrex::Real& rate, a ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -613,8 +702,8 @@ void rate_C12_C12_to_He4_Ne20_reaclib(const tf_t& tfactors, amrex::Real& rate, a } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_N13_to_p_O16_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_He4_N13_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // N13 + He4 --> p + O16 @@ -629,9 +718,13 @@ void rate_He4_N13_to_p_O16_reaclib(const tf_t& tfactors, amrex::Real& rate, amre ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -645,8 +738,8 @@ void rate_He4_N13_to_p_O16_reaclib(const tf_t& tfactors, amrex::Real& rate, amre } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_C12_O16_to_p_Al27_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_C12_O16_to_p_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + C12 --> p + Al27 @@ -661,9 +754,13 @@ void rate_C12_O16_to_p_Al27_reaclib(const tf_t& tfactors, amrex::Real& rate, amr ln_set_rate = 68.5253 + 0.205134 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = -0.205134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -677,8 +774,8 @@ void rate_C12_O16_to_p_Al27_reaclib(const tf_t& tfactors, amrex::Real& rate, amr } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_C12_O16_to_He4_Mg24_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_C12_O16_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + C12 --> He4 + Mg24 @@ -693,9 +790,13 @@ void rate_C12_O16_to_He4_Mg24_reaclib(const tf_t& tfactors, amrex::Real& rate, a ln_set_rate = 48.5341 + 0.37204 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = -0.37204 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -709,8 +810,8 @@ void rate_C12_O16_to_He4_Mg24_reaclib(const tf_t& tfactors, amrex::Real& rate, a } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_O16_O16_to_p_P31_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_O16_O16_to_p_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + O16 --> p + P31 @@ -725,9 +826,13 @@ void rate_O16_O16_to_p_P31_reaclib(const tf_t& tfactors, amrex::Real& rate, amre ln_set_rate = 85.2628 + 0.223453 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = -0.223453 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -741,8 +846,8 @@ void rate_O16_O16_to_p_P31_reaclib(const tf_t& tfactors, amrex::Real& rate, amre } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_O16_O16_to_He4_Si28_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_O16_O16_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + O16 --> He4 + Si28 @@ -757,9 +862,13 @@ void rate_O16_O16_to_He4_Si28_reaclib(const tf_t& tfactors, amrex::Real& rate, a ln_set_rate = 97.2435 + -0.268514 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 0.268514 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -773,8 +882,8 @@ void rate_O16_O16_to_He4_Si28_reaclib(const tf_t& tfactors, amrex::Real& rate, a } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Na23_to_He4_Ne20_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_p_Na23_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Na23 + p --> He4 + Ne20 @@ -789,9 +898,13 @@ void rate_p_Na23_to_He4_Ne20_reaclib(const tf_t& tfactors, amrex::Real& rate, am ln_set_rate = -6.58736 + -2.31577 * tfactors.T9i + 19.7297 * tfactors.T913 + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 2.31577 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -806,9 +919,13 @@ void rate_p_Na23_to_He4_Ne20_reaclib(const tf_t& tfactors, amrex::Real& rate, am ln_set_rate = 0.0178295 + -1.86103 * tfactors.T9i + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 1.86103 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -823,9 +940,13 @@ void rate_p_Na23_to_He4_Ne20_reaclib(const tf_t& tfactors, amrex::Real& rate, am ln_set_rate = 18.9756 + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -839,8 +960,8 @@ void rate_p_Na23_to_He4_Ne20_reaclib(const tf_t& tfactors, amrex::Real& rate, am } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Al27_to_He4_Mg24_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_p_Al27_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Al27 + p --> He4 + Mg24 @@ -855,9 +976,13 @@ void rate_p_Al27_to_He4_Mg24_reaclib(const tf_t& tfactors, amrex::Real& rate, am ln_set_rate = -7.02789 + -4.2425 * tfactors.T9i + 18.0416 * tfactors.T913 + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 4.2425 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -872,9 +997,13 @@ void rate_p_Al27_to_He4_Mg24_reaclib(const tf_t& tfactors, amrex::Real& rate, am ln_set_rate = -26.8683 + -0.963012 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 0.963012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -889,9 +1018,13 @@ void rate_p_Al27_to_He4_Mg24_reaclib(const tf_t& tfactors, amrex::Real& rate, am ln_set_rate = 29.4576 + -26.4162 * tfactors.T913i + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = + -(1.0/3.0) * -26.4162 * tfactors.T943i + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -905,8 +1038,8 @@ void rate_p_Al27_to_He4_Mg24_reaclib(const tf_t& tfactors, amrex::Real& rate, am } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_P31_to_He4_Si28_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_p_P31_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // P31 + p --> He4 + Si28 @@ -921,9 +1054,13 @@ void rate_p_P31_to_He4_Si28_reaclib(const tf_t& tfactors, amrex::Real& rate, amr ln_set_rate = -10.893 + -3.42575 * tfactors.T9i + 21.521 * tfactors.T913 + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 3.42575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -938,9 +1075,13 @@ void rate_p_P31_to_He4_Si28_reaclib(const tf_t& tfactors, amrex::Real& rate, amr ln_set_rate = -12.919 + -1.87716 * tfactors.T9i + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 1.87716 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -955,9 +1096,13 @@ void rate_p_P31_to_He4_Si28_reaclib(const tf_t& tfactors, amrex::Real& rate, amr ln_set_rate = 60.8829 + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -971,8 +1116,8 @@ void rate_p_P31_to_He4_Si28_reaclib(const tf_t& tfactors, amrex::Real& rate, amr } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // 3 He4 --> C12 @@ -987,9 +1132,13 @@ void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, amrex::Real& rate, am ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1004,9 +1153,13 @@ void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, amrex::Real& rate, am ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1021,9 +1174,13 @@ void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, amrex::Real& rate, am ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1037,8 +1194,8 @@ void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, amrex::Real& rate, am } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_C12_C12_to_n_Mg23_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_C12_C12_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // C12 + C12 --> n + Mg23 @@ -1053,9 +1210,13 @@ void rate_C12_C12_to_n_Mg23_removed(const tf_t& tfactors, amrex::Real& rate, amr ln_set_rate = -12.8056 + -30.1498 * tfactors.T9i + 11.4826 * tfactors.T913 + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 30.1498 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1069,8 +1230,8 @@ void rate_C12_C12_to_n_Mg23_removed(const tf_t& tfactors, amrex::Real& rate, amr } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_O16_O16_to_n_S31_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_O16_O16_to_n_S31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + O16 --> n + S31 @@ -1085,9 +1246,13 @@ void rate_O16_O16_to_n_S31_removed(const tf_t& tfactors, amrex::Real& rate, amre ln_set_rate = 77.5491 + -0.373641 * tfactors.T9i + -120.83 * tfactors.T913i + -7.72334 * tfactors.T913 + -2.27939 * tfactors.T9 + 0.167655 * tfactors.T953 + 7.62001 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 0.373641 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -120.83 * tfactors.T943i + (1.0/3.0) * -7.72334 * tfactors.T923i + -2.27939 + (5.0/3.0) * 0.167655 * tfactors.T923 + 7.62001 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1101,8 +1266,8 @@ void rate_O16_O16_to_n_S31_removed(const tf_t& tfactors, amrex::Real& rate, amre } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_C12_O16_to_n_Si27_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_C12_O16_to_n_Si27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + C12 --> n + Si27 @@ -1117,9 +1282,13 @@ void rate_C12_O16_to_n_Si27_removed(const tf_t& tfactors, amrex::Real& rate, amr ln_set_rate = -132.213 + -1.46479 * tfactors.T9i + -293.089 * tfactors.T913i + 414.404 * tfactors.T913 + -28.0562 * tfactors.T9 + 1.61807 * tfactors.T953 + -178.28 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 1.46479 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -293.089 * tfactors.T943i + (1.0/3.0) * 414.404 * tfactors.T923i + -28.0562 + (5.0/3.0) * 1.61807 * tfactors.T923 + -178.28 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1133,8 +1302,8 @@ void rate_C12_O16_to_n_Si27_removed(const tf_t& tfactors, amrex::Real& rate, amr } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_S32_to_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_He4_S32_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // S32 + He4 --> Ar36 @@ -1149,9 +1318,13 @@ void rate_He4_S32_to_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex ln_set_rate = 48.901 + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1165,8 +1338,8 @@ void rate_He4_S32_to_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Cl35_to_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_p_Cl35_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Cl35 + p --> Ar36 @@ -1181,9 +1354,13 @@ void rate_p_Cl35_to_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex: ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1198,9 +1375,13 @@ void rate_p_Cl35_to_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex: ln_set_rate = 35.6868 + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1215,9 +1396,13 @@ void rate_p_Cl35_to_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex: ln_set_rate = -7.84699 + -3.65092 * tfactors.T9i + 18.0179 * tfactors.T913 + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 3.65092 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923 + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1232,9 +1417,13 @@ void rate_p_Cl35_to_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex: ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1248,8 +1437,8 @@ void rate_p_Cl35_to_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex: } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Cl35_to_He4_S32_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_p_Cl35_to_He4_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Cl35 + p --> He4 + S32 @@ -1264,9 +1453,13 @@ void rate_p_Cl35_to_He4_S32_removed(const tf_t& tfactors, amrex::Real& rate, amr ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1281,9 +1474,13 @@ void rate_p_Cl35_to_He4_S32_removed(const tf_t& tfactors, amrex::Real& rate, amr ln_set_rate = -57.5294 + -0.532931 * tfactors.T9i + 25.5338 * tfactors.T913 + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 0.532931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1298,9 +1495,13 @@ void rate_p_Cl35_to_He4_S32_removed(const tf_t& tfactors, amrex::Real& rate, amr ln_set_rate = 32.12 + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1315,9 +1516,13 @@ void rate_p_Cl35_to_He4_S32_removed(const tf_t& tfactors, amrex::Real& rate, amr ln_set_rate = 2.29121 + -6.00976 * tfactors.T9i + 5.33756 * tfactors.T913 + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 6.00976 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1331,8 +1536,8 @@ void rate_p_Cl35_to_He4_S32_removed(const tf_t& tfactors, amrex::Real& rate, amr } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Ar36_to_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_He4_Ar36_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Ar36 + He4 --> Ca40 @@ -1347,9 +1552,13 @@ void rate_He4_Ar36_to_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amre ln_set_rate = 52.3486 + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1363,8 +1572,8 @@ void rate_He4_Ar36_to_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amre } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_K39_to_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_p_K39_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // K39 + p --> Ca40 @@ -1379,9 +1588,13 @@ void rate_p_K39_to_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: ln_set_rate = 2761.38 + -5.22234 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 + 1136.19 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 5.22234 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i + 1136.19 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1396,9 +1609,13 @@ void rate_p_K39_to_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: ln_set_rate = 588.099 + -12.5647 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 + 564.926 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 12.5647 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i + 564.926 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1413,9 +1630,13 @@ void rate_p_K39_to_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: ln_set_rate = 102.252 + -1.66508 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 59.2367 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 1.66508 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 59.2367 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1429,8 +1650,8 @@ void rate_p_K39_to_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_K39_to_He4_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_p_K39_to_He4_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // K39 + p --> He4 + Ar36 @@ -1445,9 +1666,13 @@ void rate_p_K39_to_He4_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amr ln_set_rate = 20.5166 + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1461,8 +1686,8 @@ void rate_p_K39_to_He4_Ar36_removed(const tf_t& tfactors, amrex::Real& rate, amr } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Ca40_to_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_He4_Ca40_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Ca40 + He4 --> Ti44 @@ -1477,9 +1702,13 @@ void rate_He4_Ca40_to_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amre ln_set_rate = 53.75 + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1493,8 +1722,8 @@ void rate_He4_Ca40_to_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amre } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Sc43_to_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_p_Sc43_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Sc43 + p --> Ti44 @@ -1509,9 +1738,13 @@ void rate_p_Sc43_to_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amrex: ln_set_rate = 36.8432 + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1525,8 +1758,8 @@ void rate_p_Sc43_to_Ti44_removed(const tf_t& tfactors, amrex::Real& rate, amrex: } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Sc43_to_He4_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_p_Sc43_to_He4_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Sc43 + p --> He4 + Ca40 @@ -1541,9 +1774,13 @@ void rate_p_Sc43_to_He4_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, am ln_set_rate = 34.8559 + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1557,8 +1794,8 @@ void rate_p_Sc43_to_He4_Ca40_removed(const tf_t& tfactors, amrex::Real& rate, am } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Ti44_to_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_He4_Ti44_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Ti44 + He4 --> Cr48 @@ -1573,9 +1810,13 @@ void rate_He4_Ti44_to_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amre ln_set_rate = 64.7958 + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1589,8 +1830,8 @@ void rate_He4_Ti44_to_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amre } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Ti44_to_p_V47_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_He4_Ti44_to_p_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Ti44 + He4 --> p + V47 @@ -1605,9 +1846,13 @@ void rate_He4_Ti44_to_p_V47_removed(const tf_t& tfactors, amrex::Real& rate, amr ln_set_rate = -76.5154 + -10.7931 * tfactors.T9i + 70.2835 * tfactors.T913 + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 10.7931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1621,8 +1866,8 @@ void rate_He4_Ti44_to_p_V47_removed(const tf_t& tfactors, amrex::Real& rate, amr } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_V47_to_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_p_V47_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // V47 + p --> Cr48 @@ -1637,9 +1882,13 @@ void rate_p_V47_to_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: ln_set_rate = 42.6798 + -6.0593 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -7.70886 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 6.0593 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -7.70886 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1654,9 +1903,13 @@ void rate_p_V47_to_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: ln_set_rate = 511.463 + -5.29491 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 330.727 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 5.29491 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 330.727 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1671,9 +1924,13 @@ void rate_p_V47_to_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: ln_set_rate = 23.8315 + 0.246665 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -8.42325 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = -0.246665 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -8.42325 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1688,9 +1945,13 @@ void rate_p_V47_to_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: ln_set_rate = 40.5626 + -0.514414 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -49.4742 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = 0.514414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -49.4742 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1704,8 +1965,8 @@ void rate_p_V47_to_Cr48_removed(const tf_t& tfactors, amrex::Real& rate, amrex:: } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Cr48_to_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_He4_Cr48_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Cr48 + He4 --> Fe52 @@ -1720,9 +1981,13 @@ void rate_He4_Cr48_to_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amre ln_set_rate = 65.1754 + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1736,8 +2001,8 @@ void rate_He4_Cr48_to_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amre } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Cr48_to_p_Mn51_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_He4_Cr48_to_p_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Cr48 + He4 --> p + Mn51 @@ -1752,9 +2017,13 @@ void rate_He4_Cr48_to_p_Mn51_removed(const tf_t& tfactors, amrex::Real& rate, am ln_set_rate = 59.2276 + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1768,8 +2037,8 @@ void rate_He4_Cr48_to_p_Mn51_removed(const tf_t& tfactors, amrex::Real& rate, am } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Mn51_to_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_p_Mn51_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Mn51 + p --> Fe52 @@ -1784,9 +2053,13 @@ void rate_p_Mn51_to_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amrex: ln_set_rate = 36.2596 + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1800,8 +2073,8 @@ void rate_p_Mn51_to_Fe52_removed(const tf_t& tfactors, amrex::Real& rate, amrex: } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Fe52_to_Ni56_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_He4_Fe52_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Fe52 + He4 --> Ni56 @@ -1816,9 +2089,13 @@ void rate_He4_Fe52_to_Ni56_removed(const tf_t& tfactors, amrex::Real& rate, amre ln_set_rate = 66.6417 + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1832,8 +2109,8 @@ void rate_He4_Fe52_to_Ni56_removed(const tf_t& tfactors, amrex::Real& rate, amre } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_He4_Fe52_to_p_Co55_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_He4_Fe52_to_p_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Fe52 + He4 --> p + Co55 @@ -1848,9 +2125,13 @@ void rate_He4_Fe52_to_p_Co55_removed(const tf_t& tfactors, amrex::Real& rate, am ln_set_rate = 62.2207 + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1864,8 +2145,8 @@ void rate_He4_Fe52_to_p_Co55_removed(const tf_t& tfactors, amrex::Real& rate, am } template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_p_Co55_to_Ni56_removed(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { +AMREX_GPU_DEVICE AMREX_INLINE +void rate_p_Co55_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Co55 + p --> Ni56 @@ -1880,9 +2161,13 @@ void rate_p_Co55_to_Ni56_removed(const tf_t& tfactors, amrex::Real& rate, amrex: ln_set_rate = 37.3736 + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { dln_set_rate_dT9 = + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; } // avoid underflows by zeroing rates in [0.0, 1.e-100] @@ -1895,623 +2180,755 @@ void rate_p_Co55_to_Ni56_removed(const tf_t& tfactors, amrex::Real& rate, amrex: } -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_C12_C12_to_Mg24_modified(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // C12 + C12 --> Mg24 (calls the underlying rate) - - rate_C12_C12_to_n_Mg23_removed(tfactors, rate, drate_dT); -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_O16_O16_to_S32_modified(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // O16 + O16 --> S32 (calls the underlying rate) - - rate_O16_O16_to_n_S31_removed(tfactors, rate, drate_dT); -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_C12_O16_to_Si28_modified(const tf_t& tfactors, amrex::Real& rate, amrex::Real& drate_dT) { - - // O16 + C12 --> Si28 (calls the underlying rate) - - rate_C12_O16_to_n_Si27_removed(tfactors, rate, drate_dT); -} - - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_S32_He4_to_Ar36_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_ag = rate_eval.screened_rates(k_He4_S32_to_Ar36_removed); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_S32_to_p_Cl35_removed); - amrex::Real r_pg = rate_eval.screened_rates(k_p_Cl35_to_Ar36_removed); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_removed); - amrex::Real dd = 1.0_rt / (r_pg + r_pa); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_removed); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_removed); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_removed); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_removed); - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa); - } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ar36_to_S32_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_ga = rate_eval.screened_rates(k_Ar36_to_He4_S32_removed); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_removed); - amrex::Real r_gp = rate_eval.screened_rates(k_Ar36_to_p_Cl35_removed); - amrex::Real r_pg = rate_eval.screened_rates(k_p_Cl35_to_Ar36_removed); - amrex::Real dd = 1.0_rt / (r_pg + r_pa); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_removed); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_removed); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_removed); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_removed); - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa); - } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ar36_He4_to_Ca40_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ar36_to_Ca40_removed); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ar36_to_p_K39_removed); - amrex::Real r_pg = rate_eval.screened_rates(k_p_K39_to_Ca40_removed); - amrex::Real r_pa = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_removed); - amrex::Real dd = 1.0_rt / (r_pg + r_pa); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_removed); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_removed); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_removed); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_removed); - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa); - } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ca40_to_Ar36_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_ga = rate_eval.screened_rates(k_Ca40_to_He4_Ar36_removed); - amrex::Real r_pa = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_removed); - amrex::Real r_gp = rate_eval.screened_rates(k_Ca40_to_p_K39_removed); - amrex::Real r_pg = rate_eval.screened_rates(k_p_K39_to_Ca40_removed); - amrex::Real dd = 1.0_rt / (r_pg + r_pa); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_removed); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_removed); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_removed); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_removed); - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa); - } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ca40_He4_to_Ti44_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ca40_to_Ti44_removed); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_removed); - amrex::Real r_pg = rate_eval.screened_rates(k_p_Sc43_to_Ti44_removed); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_removed); - amrex::Real dd = 1.0_rt / (r_pg + r_pa); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_removed); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_removed); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_removed); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_removed); - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa); - } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ti44_to_Ca40_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_ga = rate_eval.screened_rates(k_Ti44_to_He4_Ca40_removed); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_removed); - amrex::Real r_gp = rate_eval.screened_rates(k_Ti44_to_p_Sc43_removed); - amrex::Real r_pg = rate_eval.screened_rates(k_p_Sc43_to_Ti44_removed); - amrex::Real dd = 1.0_rt / (r_pg + r_pa); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_removed); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_removed); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_removed); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_removed); - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa); - } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ti44_He4_to_Cr48_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ti44_to_Cr48_removed); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ti44_to_p_V47_removed); - amrex::Real r_pg = rate_eval.screened_rates(k_p_V47_to_Cr48_removed); - amrex::Real r_pa = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_removed); - amrex::Real dd = 1.0_rt / (r_pg + r_pa); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_removed); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_removed); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_removed); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_removed); - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa); - } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Cr48_to_Ti44_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_ga = rate_eval.screened_rates(k_Cr48_to_He4_Ti44_removed); - amrex::Real r_pa = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_removed); - amrex::Real r_gp = rate_eval.screened_rates(k_Cr48_to_p_V47_removed); - amrex::Real r_pg = rate_eval.screened_rates(k_p_V47_to_Cr48_removed); - amrex::Real dd = 1.0_rt / (r_pg + r_pa); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_removed); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_removed); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_removed); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_removed); - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa); - } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Cr48_He4_to_Fe52_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Cr48_to_Fe52_removed); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Cr48_to_p_Mn51_removed); - amrex::Real r_pg = rate_eval.screened_rates(k_p_Mn51_to_Fe52_removed); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_removed); - amrex::Real dd = 1.0_rt / (r_pg + r_pa); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Cr48_to_Fe52_removed); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Cr48_to_p_Mn51_removed); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_removed); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_removed); - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa); - } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Fe52_to_Cr48_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_ga = rate_eval.screened_rates(k_Fe52_to_He4_Cr48_removed); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_removed); - amrex::Real r_gp = rate_eval.screened_rates(k_Fe52_to_p_Mn51_removed); - amrex::Real r_pg = rate_eval.screened_rates(k_p_Mn51_to_Fe52_removed); - amrex::Real dd = 1.0_rt / (r_pg + r_pa); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_removed); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_removed); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_removed); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_removed); - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa); - } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Fe52_He4_to_Ni56_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Fe52_to_Ni56_removed); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Fe52_to_p_Co55_removed); - amrex::Real r_pg = rate_eval.screened_rates(k_p_Co55_to_Ni56_removed); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_removed); - amrex::Real dd = 1.0_rt / (r_pg + r_pa); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Fe52_to_Ni56_removed); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_Co55_removed); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_removed); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_removed); - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa); - } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void rate_Ni56_to_Fe52_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_ga = rate_eval.screened_rates(k_Ni56_to_He4_Fe52_removed); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_removed); - amrex::Real r_gp = rate_eval.screened_rates(k_Ni56_to_p_Co55_removed); - amrex::Real r_pg = rate_eval.screened_rates(k_p_Co55_to_Ni56_removed); - amrex::Real dd = 1.0_rt / (r_pg + r_pa); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_removed); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_removed); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_removed); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_removed); - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa); - } -} - template AMREX_GPU_HOST_DEVICE AMREX_INLINE void -fill_reaclib_rates(const tf_t& tfactors, T& rate_eval) +fill_reaclib_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) { - amrex::Real rate; - amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; - rate_p_C12_to_N13_reaclib(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_C12_to_N13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C12_to_N13_reaclib) = drate_dT; - - } - rate_He4_C12_to_O16_reaclib(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_C12_to_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_C12_to_O16_reaclib) = drate_dT; - - } - rate_He4_O16_to_Ne20_reaclib(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_O16_to_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20_reaclib) = drate_dT; - - } - rate_He4_Ne20_to_Mg24_reaclib(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne20_to_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24_reaclib) = drate_dT; - - } - rate_p_Na23_to_Mg24_reaclib(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_Na23_to_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24_reaclib) = drate_dT; - - } - rate_He4_Mg24_to_Si28_reaclib(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mg24_to_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_Si28_reaclib) = drate_dT; - - } - rate_p_Al27_to_Si28_reaclib(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_Al27_to_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28_reaclib) = drate_dT; - - } - rate_He4_Si28_to_S32_reaclib(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_Si28_to_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_S32_reaclib) = drate_dT; - - } - rate_p_P31_to_S32_reaclib(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_P31_to_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_S32_reaclib) = drate_dT; - - } - rate_C12_C12_to_p_Na23_reaclib(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_p_Na23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23_reaclib) = drate_dT; - - } - rate_C12_C12_to_He4_Ne20_reaclib(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_He4_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20_reaclib) = drate_dT; - - } - rate_He4_N13_to_p_O16_reaclib(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_N13_to_p_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16_reaclib) = drate_dT; - - } - rate_C12_O16_to_p_Al27_reaclib(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_p_Al27_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_p_Al27_reaclib) = drate_dT; - - } - rate_C12_O16_to_He4_Mg24_reaclib(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_He4_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_He4_Mg24_reaclib) = drate_dT; - - } - rate_O16_O16_to_p_P31_reaclib(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_p_P31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_p_P31_reaclib) = drate_dT; - - } - rate_O16_O16_to_He4_Si28_reaclib(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_He4_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_He4_Si28_reaclib) = drate_dT; - - } - rate_p_Na23_to_He4_Ne20_reaclib(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_Na23_to_He4_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20_reaclib) = drate_dT; - - } - rate_p_Al27_to_He4_Mg24_reaclib(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_Al27_to_He4_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24_reaclib) = drate_dT; - - } - rate_p_P31_to_He4_Si28_reaclib(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_P31_to_He4_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28_reaclib) = drate_dT; - - } - rate_He4_He4_He4_to_C12_reaclib(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_He4_He4_to_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = drate_dT; - - } - rate_C12_C12_to_n_Mg23_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_n_Mg23_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_n_Mg23_removed) = drate_dT; - - } - rate_O16_O16_to_n_S31_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_n_S31_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_n_S31_removed) = drate_dT; - - } - rate_C12_O16_to_n_Si27_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_n_Si27_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_n_Si27_removed) = drate_dT; - - } - rate_He4_S32_to_Ar36_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_S32_to_Ar36_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_removed) = drate_dT; - - } - rate_p_Cl35_to_Ar36_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_Cl35_to_Ar36_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_removed) = drate_dT; - - } - rate_p_Cl35_to_He4_S32_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_Cl35_to_He4_S32_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_removed) = drate_dT; - - } - rate_He4_Ar36_to_Ca40_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ar36_to_Ca40_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_removed) = drate_dT; - - } - rate_p_K39_to_Ca40_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_K39_to_Ca40_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_removed) = drate_dT; - - } - rate_p_K39_to_He4_Ar36_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_K39_to_He4_Ar36_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_removed) = drate_dT; - - } - rate_He4_Ca40_to_Ti44_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca40_to_Ti44_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_removed) = drate_dT; - - } - rate_p_Sc43_to_Ti44_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc43_to_Ti44_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_removed) = drate_dT; - - } - rate_p_Sc43_to_He4_Ca40_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_removed) = drate_dT; - - } - rate_He4_Ti44_to_Cr48_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti44_to_Cr48_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_removed) = drate_dT; - - } - rate_He4_Ti44_to_p_V47_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti44_to_p_V47_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_removed) = drate_dT; - - } - rate_p_V47_to_Cr48_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_V47_to_Cr48_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_removed) = drate_dT; - - } - rate_He4_Cr48_to_Fe52_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr48_to_Fe52_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr48_to_Fe52_removed) = drate_dT; - - } - rate_He4_Cr48_to_p_Mn51_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr48_to_p_Mn51_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr48_to_p_Mn51_removed) = drate_dT; - - } - rate_p_Mn51_to_Fe52_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_Mn51_to_Fe52_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_removed) = drate_dT; - - } - rate_He4_Fe52_to_Ni56_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe52_to_Ni56_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe52_to_Ni56_removed) = drate_dT; - - } - rate_He4_Fe52_to_p_Co55_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe52_to_p_Co55_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_Co55_removed) = drate_dT; - - } - rate_p_Co55_to_Ni56_removed(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_p_Co55_to_Ni56_removed) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_removed) = drate_dT; - - } - rate_C12_C12_to_Mg24_modified(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_Mg24_modified) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_Mg24_modified) = drate_dT; - - } - rate_O16_O16_to_S32_modified(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_S32_modified) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_S32_modified) = drate_dT; - - } - rate_C12_O16_to_Si28_modified(tfactors, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_Si28_modified) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_Si28_modified) = drate_dT; - - } - -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_approx_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] const amrex::Real rho, - [[maybe_unused]] const amrex::Array1D& Y, - [[maybe_unused]] T& rate_eval) -{ - - [[maybe_unused]] amrex::Real rate{}; - [[maybe_unused]] amrex::Real drate_dT{}; - - rate_S32_He4_to_Ar36_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_S32_He4_to_Ar36_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_approx) = drate_dT; - - } - rate_Ar36_to_S32_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ar36_to_S32_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_S32_He4_approx) = drate_dT; - - } - rate_Ar36_He4_to_Ca40_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ar36_He4_to_Ca40_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_approx) = drate_dT; - - } - rate_Ca40_to_Ar36_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ca40_to_Ar36_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_Ar36_He4_approx) = drate_dT; - - } - rate_Ca40_He4_to_Ti44_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ca40_He4_to_Ti44_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_approx) = drate_dT; - - } - rate_Ti44_to_Ca40_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ti44_to_Ca40_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_Ca40_He4_approx) = drate_dT; - - } - rate_Ti44_He4_to_Cr48_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ti44_He4_to_Cr48_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_approx) = drate_dT; - - } - rate_Cr48_to_Ti44_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Cr48_to_Ti44_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_Ti44_He4_approx) = drate_dT; - - } - rate_Cr48_He4_to_Fe52_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Cr48_He4_to_Fe52_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_approx) = drate_dT; - - } - rate_Fe52_to_Cr48_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Fe52_to_Cr48_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_Cr48_He4_approx) = drate_dT; - - } - rate_Fe52_He4_to_Ni56_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Fe52_He4_to_Ni56_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_approx) = drate_dT; + { + // p_C12_to_N13_reaclib + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C12); + } +#endif + rate_p_C12_to_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_p_C12_to_N13_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_C12_to_N13_reaclib) = drate_dT; + } + } + + { + // He4_C12_to_O16_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_He4_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); + } +#endif + rate_He4_C12_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_C12_to_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_C12_to_O16_reaclib) = drate_dT; + } + } + + { + // He4_O16_to_Ne20_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_He4_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); + } +#endif + rate_He4_O16_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_O16_to_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20_reaclib) = drate_dT; + } + } + + { + // He4_Ne20_to_Mg24_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } +#endif + rate_He4_Ne20_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_Ne20_to_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24_reaclib) = drate_dT; + } + } + + { + // p_Na23_to_Mg24_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); + } +#endif + rate_p_Na23_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_p_Na23_to_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24_reaclib) = drate_dT; + } + } + + { + // He4_Mg24_to_Si28_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_He4_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); + } +#endif + rate_He4_Mg24_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_Mg24_to_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Mg24_to_Si28_reaclib) = drate_dT; + } + } + + { + // p_Al27_to_Si28_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); + } +#endif + rate_p_Al27_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_p_Al27_to_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28_reaclib) = drate_dT; + } + } + + { + // He4_Si28_to_S32_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_He4_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); + } +#endif + rate_He4_Si28_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_Si28_to_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Si28_to_S32_reaclib) = drate_dT; + } + } + + { + // p_P31_to_S32_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); + } +#endif + rate_p_P31_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_p_P31_to_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_P31_to_S32_reaclib) = drate_dT; + } + } + + { + // C12_C12_to_p_Na23_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } +#endif + rate_C12_C12_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_p_Na23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23_reaclib) = drate_dT; + } + } + + { + // C12_C12_to_He4_Ne20_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } +#endif + rate_C12_C12_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_He4_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20_reaclib) = drate_dT; + } + } + + { + // He4_N13_to_p_O16_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_He4_N13); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N13); + } +#endif + rate_He4_N13_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_N13_to_p_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16_reaclib) = drate_dT; + } + } + + { + // C12_O16_to_p_Al27_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } +#endif + rate_C12_O16_to_p_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_O16_to_p_Al27_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_O16_to_p_Al27_reaclib) = drate_dT; + } + } + + { + // C12_O16_to_He4_Mg24_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } +#endif + rate_C12_O16_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_O16_to_He4_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_O16_to_He4_Mg24_reaclib) = drate_dT; + } + } + + { + // O16_O16_to_p_P31_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } +#endif + rate_O16_O16_to_p_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_p_P31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_p_P31_reaclib) = drate_dT; + } + } + + { + // O16_O16_to_He4_Si28_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } +#endif + rate_O16_O16_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_He4_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_He4_Si28_reaclib) = drate_dT; + } + } + + { + // p_Na23_to_He4_Ne20_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); + } +#endif + rate_p_Na23_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_p_Na23_to_He4_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20_reaclib) = drate_dT; + } + } + + { + // p_Al27_to_He4_Mg24_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); + } +#endif + rate_p_Al27_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_p_Al27_to_He4_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24_reaclib) = drate_dT; + } + } + + { + // p_P31_to_He4_Si28_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); + } +#endif + rate_p_P31_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_p_P31_to_He4_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28_reaclib) = drate_dT; + } + } + + { + // He4_He4_He4_to_C12_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_He4_Be8); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_He4_Be8); + } +#endif + rate_He4_He4_He4_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_He4_He4_to_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = drate_dT; + } + } + + { + // C12_C12_to_n_Mg23_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } +#endif + rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_n_Mg23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_n_Mg23_reaclib) = drate_dT; + } + } + + { + // O16_O16_to_n_S31_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } +#endif + rate_O16_O16_to_n_S31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_n_S31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_n_S31_reaclib) = drate_dT; + } + } + + { + // C12_O16_to_n_Si27_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } +#endif + rate_C12_O16_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_O16_to_n_Si27_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_O16_to_n_Si27_reaclib) = drate_dT; + } + } + + { + // He4_S32_to_Ar36_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_He4_S32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); + } +#endif + rate_He4_S32_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_S32_to_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_reaclib) = drate_dT; + } + } + + { + // p_Cl35_to_Ar36_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_Cl35); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); + } +#endif + rate_p_Cl35_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_p_Cl35_to_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_reaclib) = drate_dT; + } + } + + { + // p_Cl35_to_He4_S32_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_Cl35); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); + } +#endif + rate_p_Cl35_to_He4_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_p_Cl35_to_He4_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_reaclib) = drate_dT; + } + } + + { + // He4_Ar36_to_Ca40_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_He4_Ar36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); + } +#endif + rate_He4_Ar36_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_Ar36_to_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_reaclib) = drate_dT; + } + } + + { + // p_K39_to_Ca40_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_K39); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); + } +#endif + rate_p_K39_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_p_K39_to_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_reaclib) = drate_dT; + } + } + + { + // p_K39_to_He4_Ar36_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_K39); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); + } +#endif + rate_p_K39_to_He4_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_p_K39_to_He4_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_reaclib) = drate_dT; + } + } + + { + // He4_Ca40_to_Ti44_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_He4_Ca40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); + } +#endif + rate_He4_Ca40_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_Ca40_to_Ti44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_reaclib) = drate_dT; + } + } + + { + // p_Sc43_to_Ti44_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_Sc43); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); + } +#endif + rate_p_Sc43_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_p_Sc43_to_Ti44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_reaclib) = drate_dT; + } + } + + { + // p_Sc43_to_He4_Ca40_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_Sc43); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); + } +#endif + rate_p_Sc43_to_He4_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_reaclib) = drate_dT; + } + } + + { + // He4_Ti44_to_Cr48_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_He4_Ti44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); + } +#endif + rate_He4_Ti44_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_Ti44_to_Cr48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_reaclib) = drate_dT; + } + } + + { + // He4_Ti44_to_p_V47_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_He4_Ti44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); + } +#endif + rate_He4_Ti44_to_p_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_Ti44_to_p_V47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_reaclib) = drate_dT; + } + } + + { + // p_V47_to_Cr48_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_V47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); + } +#endif + rate_p_V47_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_p_V47_to_Cr48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_reaclib) = drate_dT; + } + } + + { + // He4_Cr48_to_Fe52_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_He4_Cr48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); + } +#endif + rate_He4_Cr48_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_Cr48_to_Fe52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Cr48_to_Fe52_reaclib) = drate_dT; + } + } + + { + // He4_Cr48_to_p_Mn51_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_He4_Cr48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); + } +#endif + rate_He4_Cr48_to_p_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_Cr48_to_p_Mn51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Cr48_to_p_Mn51_reaclib) = drate_dT; + } + } + + { + // p_Mn51_to_Fe52_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_Mn51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); + } +#endif + rate_p_Mn51_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_p_Mn51_to_Fe52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_reaclib) = drate_dT; + } + } + + { + // He4_Fe52_to_Ni56_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_He4_Fe52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); + } +#endif + rate_He4_Fe52_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_Fe52_to_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Fe52_to_Ni56_reaclib) = drate_dT; + } + } + + { + // He4_Fe52_to_p_Co55_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_He4_Fe52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); + } +#endif + rate_He4_Fe52_to_p_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_Fe52_to_p_Co55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_Co55_reaclib) = drate_dT; + } + } + + { + // p_Co55_to_Ni56_reaclib + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); + } +#endif + rate_p_Co55_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_p_Co55_to_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_reaclib) = drate_dT; + } } - rate_Ni56_to_Fe52_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ni56_to_Fe52_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_Fe52_He4_approx) = drate_dT; - } } diff --git a/networks/he-burn/ase/table_rates.H b/networks/he-burn/ase/table_rates.H index 6d3fff3c9..27520b6fb 100644 --- a/networks/he-burn/ase/table_rates.H +++ b/networks/he-burn/ase/table_rates.H @@ -57,7 +57,7 @@ namespace rate_tables } -AMREX_INLINE AMREX_GPU_HOST_DEVICE +AMREX_INLINE AMREX_GPU_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) { @@ -70,7 +70,7 @@ evaluate_linear_1d(const amrex::Real fhi, const amrex::Real flo, const amrex::Re return f; } -AMREX_INLINE AMREX_GPU_HOST_DEVICE +AMREX_INLINE AMREX_GPU_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, @@ -102,7 +102,7 @@ evaluate_linear_2d(const amrex::Real fip1jp1, const amrex::Real fip1j, const amr template -AMREX_INLINE AMREX_GPU_HOST_DEVICE +AMREX_INLINE AMREX_GPU_DEVICE amrex::Real evaluate_vars(const int irhoy_lo, const int jtemp_lo, const R& log_rhoy_table, const T& log_temp_table, const D& data, @@ -132,7 +132,7 @@ evaluate_vars(const int irhoy_lo, const int jtemp_lo, template -AMREX_INLINE AMREX_GPU_HOST_DEVICE +AMREX_INLINE AMREX_GPU_DEVICE amrex::Real evaluate_dr_dtemp(const int irhoy_lo, const int jtemp_lo, const table_t& table_meta, const R& log_rhoy_table, const T& log_temp_table, const D& data, @@ -275,7 +275,7 @@ evaluate_dr_dtemp(const int irhoy_lo, const int jtemp_lo, template -AMREX_INLINE AMREX_GPU_HOST_DEVICE +AMREX_INLINE AMREX_GPU_DEVICE void get_entries(const int irhoy_lo, const int jtemp_lo, const table_t& table_meta, const R& log_rhoy_table, const T& log_temp_table, const D& data, @@ -303,7 +303,7 @@ get_entries(const int irhoy_lo, const int jtemp_lo, } template -AMREX_INLINE AMREX_GPU_HOST_DEVICE +AMREX_INLINE AMREX_GPU_DEVICE void tabular_evaluate(const table_t& table_meta, const R& log_rhoy_table, const T& log_temp_table, const D& data, diff --git a/networks/he-burn/ase/temperature_table_rates.H b/networks/he-burn/ase/temperature_table_rates.H index 4fdd0d89c..849033267 100644 --- a/networks/he-burn/ase/temperature_table_rates.H +++ b/networks/he-burn/ase/temperature_table_rates.H @@ -5,7 +5,7 @@ #include #include - +#include using namespace amrex::literals; @@ -28,6 +28,7 @@ namespace temp_tabular { [[maybe_unused]] amrex::Real drate_dT; + } From fb17c96e187d94f0bb01e64821f8e6ba331ff214 Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Sun, 31 May 2026 09:52:00 -0400 Subject: [PATCH 3/8] update --- networks/he-burn/ase/actual_network_data.cpp | 6 - networks/he-burn/ase/approximate_rates.H | 355 +++++++++++++++++++ networks/he-burn/ase/modified_rates.H | 112 ++++++ networks/he-burn/ase/rate_type.H | 25 ++ 4 files changed, 492 insertions(+), 6 deletions(-) delete mode 100644 networks/he-burn/ase/actual_network_data.cpp create mode 100644 networks/he-burn/ase/approximate_rates.H create mode 100644 networks/he-burn/ase/modified_rates.H create mode 100644 networks/he-burn/ase/rate_type.H diff --git a/networks/he-burn/ase/actual_network_data.cpp b/networks/he-burn/ase/actual_network_data.cpp deleted file mode 100644 index 143fe945b..000000000 --- a/networks/he-burn/ase/actual_network_data.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include - -void actual_network_init() -{ - -} diff --git a/networks/he-burn/ase/approximate_rates.H b/networks/he-burn/ase/approximate_rates.H new file mode 100644 index 000000000..cb7a05d24 --- /dev/null +++ b/networks/he-burn/ase/approximate_rates.H @@ -0,0 +1,355 @@ +#ifndef APPROXIMATE_RATES_H +#define APPROXIMATE_RATES_H + +#include +#include + +#include +#include +#include + +using namespace Rates; +using namespace Species; + +template +AMREX_GPU_DEVICE AMREX_INLINE +void rate_S32_He4_to_Ar36_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_p_Cl35_to_Ar36_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_He4_S32_to_Ar36_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_He4_S32_to_p_Cl35_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } +} + +template +AMREX_GPU_DEVICE AMREX_INLINE +void rate_Ar36_to_S32_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_p_Cl35_to_Ar36_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ar36_to_He4_S32_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_reaclib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } +} + +template +AMREX_GPU_DEVICE AMREX_INLINE +void rate_Ar36_He4_to_Ca40_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_p_K39_to_Ca40_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ar36_to_Ca40_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ar36_to_p_K39_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } +} + +template +AMREX_GPU_DEVICE AMREX_INLINE +void rate_Ca40_to_Ar36_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_p_K39_to_Ca40_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ca40_to_p_K39_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_reaclib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } +} + +template +AMREX_GPU_DEVICE AMREX_INLINE +void rate_Ca40_He4_to_Ti44_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_p_Sc43_to_Ti44_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ca40_to_Ti44_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } +} + +template +AMREX_GPU_DEVICE AMREX_INLINE +void rate_Ti44_to_Ca40_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_p_Sc43_to_Ti44_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_reaclib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } +} + +template +AMREX_GPU_DEVICE AMREX_INLINE +void rate_Ti44_He4_to_Cr48_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_p_V47_to_Cr48_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ti44_to_Cr48_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ti44_to_p_V47_reaclib); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_reaclib); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } +} + +template +AMREX_GPU_DEVICE AMREX_INLINE +void rate_Cr48_to_Ti44_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_p_V47_to_Cr48_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Cr48_to_p_V47_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } +} + +template +AMREX_GPU_DEVICE AMREX_INLINE +void rate_Cr48_He4_to_Fe52_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_p_Mn51_to_Fe52_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_He4_Cr48_to_Fe52_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_He4_Cr48_to_p_Mn51_reaclib); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Cr48_to_Fe52_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Cr48_to_p_Mn51_reaclib); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } +} + +template +AMREX_GPU_DEVICE AMREX_INLINE +void rate_Fe52_to_Cr48_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_p_Mn51_to_Fe52_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } +} + +template +AMREX_GPU_DEVICE AMREX_INLINE +void rate_Fe52_He4_to_Ni56_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_p_Co55_to_Ni56_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_He4_Fe52_to_Ni56_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_He4_Fe52_to_p_Co55_reaclib); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Fe52_to_Ni56_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_Co55_reaclib); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } +} + +template +AMREX_GPU_DEVICE AMREX_INLINE +void rate_Ni56_to_Fe52_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_p_Co55_to_Ni56_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ni56_to_p_Co55_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } +} + + + +template +AMREX_GPU_HOST_DEVICE AMREX_INLINE +void +fill_approx_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] const amrex::Real rho, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) +{ + + [[maybe_unused]] amrex::Real rate{}; + [[maybe_unused]] amrex::Real drate_dT{}; + + rate_S32_He4_to_Ar36_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_S32_He4_to_Ar36_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_approx) = drate_dT; + } + + rate_Ar36_to_S32_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_to_S32_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_S32_He4_approx) = drate_dT; + } + + rate_Ar36_He4_to_Ca40_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_He4_to_Ca40_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_approx) = drate_dT; + } + + rate_Ca40_to_Ar36_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_to_Ar36_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_Ar36_He4_approx) = drate_dT; + } + + rate_Ca40_He4_to_Ti44_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_He4_to_Ti44_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_approx) = drate_dT; + } + + rate_Ti44_to_Ca40_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_to_Ca40_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_Ca40_He4_approx) = drate_dT; + } + + rate_Ti44_He4_to_Cr48_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_He4_to_Cr48_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_approx) = drate_dT; + } + + rate_Cr48_to_Ti44_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_to_Ti44_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_Ti44_He4_approx) = drate_dT; + } + + rate_Cr48_He4_to_Fe52_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_He4_to_Fe52_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_approx) = drate_dT; + } + + rate_Fe52_to_Cr48_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_to_Cr48_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_Cr48_He4_approx) = drate_dT; + } + + rate_Fe52_He4_to_Ni56_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_He4_to_Ni56_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_approx) = drate_dT; + } + + rate_Ni56_to_Fe52_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_to_Fe52_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_Fe52_He4_approx) = drate_dT; + } + + +} + +#endif diff --git a/networks/he-burn/ase/modified_rates.H b/networks/he-burn/ase/modified_rates.H new file mode 100644 index 000000000..e63de5077 --- /dev/null +++ b/networks/he-burn/ase/modified_rates.H @@ -0,0 +1,112 @@ +#ifndef MODIFIED_RATES_H +#define MODIFIED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace modified_rates { + + using namespace temp_tabular; + + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_Mg24_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + + // C12 + C12 --> Mg24 (calls the underlying rate) + + rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + } + + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_O16_to_S32_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + + // O16 + O16 --> S32 (calls the underlying rate) + + rate_O16_O16_to_n_S31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + } + + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_O16_to_Si28_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + + // O16 + C12 --> Si28 (calls the underlying rate) + + rate_C12_O16_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + } + + + template + AMREX_GPU_HOST_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { + + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; + + { + // C12_C12_to_Mg24_modified + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } +#endif + rate_C12_C12_to_Mg24_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_Mg24_modified) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_Mg24_modified) = drate_dT; + } + } + + { + // O16_O16_to_S32_modified + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } +#endif + rate_O16_O16_to_S32_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_S32_modified) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_S32_modified) = drate_dT; + } + } + + { + // C12_O16_to_Si28_modified + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } +#endif + rate_C12_O16_to_Si28_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_O16_to_Si28_modified) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_O16_to_Si28_modified) = drate_dT; + } + } + + + } +} +#endif diff --git a/networks/he-burn/ase/rate_type.H b/networks/he-burn/ase/rate_type.H new file mode 100644 index 000000000..4819ade44 --- /dev/null +++ b/networks/he-burn/ase/rate_type.H @@ -0,0 +1,25 @@ +#ifndef NET_RATE_TYPE_H +#define NET_RATE_TYPE_H + +#include + +struct rate_t { + amrex::Array1D screened_rates; +#ifdef SCREENING + amrex::Array1D log_screen; +#endif + amrex::Real enuc_weak; +}; + +struct rate_derivs_t { + amrex::Array1D screened_rates; + amrex::Array1D dscreened_rates_dT; +#ifdef SCREENING + amrex::Array1D log_screen; + amrex::Array1D dlog_screen_dT; +#endif + amrex::Real enuc_weak; +}; + + +#endif \ No newline at end of file From b45d674edc67f230d66a4fcc411b071aa06aaf87 Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Mon, 1 Jun 2026 07:50:43 -0400 Subject: [PATCH 4/8] switch to test_react --- .github/workflows/cuda.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cuda.yml b/.github/workflows/cuda.yml index 2900e1d34..c7ab21beb 100644 --- a/.github/workflows/cuda.yml +++ b/.github/workflows/cuda.yml @@ -41,8 +41,8 @@ jobs: make realclean make NETWORK_DIR=ignition_reaclib/URCA-simple USE_CUDA=TRUE COMP=gnu USE_MPI=FALSE -j 4 - - name: compile nse_net_cell (ase) + - name: compile test_sdc (ase) run: | export PATH=/usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH} - cd unit_test/nse_net_cell + cd unit_test/test_sdc make USE_CUDA=TRUE COMP=gnu USE_MPI=FALSE -j 4 From 25ee97cf7dbc26f20ec1b881ba063ebef05e222f Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Mon, 1 Jun 2026 07:51:45 -0400 Subject: [PATCH 5/8] restore --- nse_solver/nse_eqns.H | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nse_solver/nse_eqns.H b/nse_solver/nse_eqns.H index 90ac76fea..3395cbd0b 100644 --- a/nse_solver/nse_eqns.H +++ b/nse_solver/nse_eqns.H @@ -28,7 +28,7 @@ struct nse_solver_data template -AMREX_GPU_DEVICE AMREX_INLINE +AMREX_GPU_HOST_DEVICE AMREX_INLINE T get_T_independent_nse_state(const T& state) { // Computes (2J + 1) m^{5/2} (kB 1e9 / 2 π ħ^2)^{3/2} / ρ // a portion of the nse_state that is not dependent on Temperature. @@ -114,7 +114,7 @@ void compute_coulomb_contribution(amrex::Array1D& u_c, template -AMREX_GPU_DEVICE AMREX_INLINE +AMREX_GPU_HOST_DEVICE AMREX_INLINE void get_T_dependent_nse_state(nse_solver_data& state_data) { // It does two things: // 1. Applies T9^{3/2} to the input state, From 18a090a3eae1c0826ffbada5513b60e31a021c79 Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Mon, 1 Jun 2026 09:51:26 -0400 Subject: [PATCH 6/8] update --- unit_test/test_sdc/main.cpp | 4 ++-- unit_test/test_sdc/react_zones.H | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/unit_test/test_sdc/main.cpp b/unit_test/test_sdc/main.cpp index cbcdcaada..c2d30c5d3 100644 --- a/unit_test/test_sdc/main.cpp +++ b/unit_test/test_sdc/main.cpp @@ -145,7 +145,7 @@ void main_main () auto state_arr = state.array(mfi); amrex::ParallelFor(bx, - [=] AMREX_GPU_HOST_DEVICE (int i, int j, int k) + [=] AMREX_GPU_DEVICE (int i, int j, int k) { state_arr(i, j, k, vars.itemp) = @@ -199,7 +199,7 @@ void main_main () auto n_rhs = integrator_n_rhs.array(mfi); amrex::ParallelFor(bx, - [=] AMREX_GPU_HOST_DEVICE (int i, int j, int k) + [=] AMREX_GPU_DEVICE (int i, int j, int k) { bool success = do_react(vars, i, j, k, s, n_rhs); diff --git a/unit_test/test_sdc/react_zones.H b/unit_test/test_sdc/react_zones.H index 49041b34b..de78ccc99 100644 --- a/unit_test/test_sdc/react_zones.H +++ b/unit_test/test_sdc/react_zones.H @@ -9,7 +9,7 @@ #include #include -AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE +AMREX_GPU_DEVICE AMREX_FORCE_INLINE bool do_react (const plot_t& p, const int i, const int j, const int k, Array4 const& state, Array4 const& n_rhs) { From 402cde1d0aee8b4716d8a41718275fbc6dd3cf92 Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Mon, 1 Jun 2026 09:53:27 -0400 Subject: [PATCH 7/8] more work --- .github/workflows/cuda.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cuda.yml b/.github/workflows/cuda.yml index c7ab21beb..2277f117c 100644 --- a/.github/workflows/cuda.yml +++ b/.github/workflows/cuda.yml @@ -45,4 +45,4 @@ jobs: run: | export PATH=/usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH} cd unit_test/test_sdc - make USE_CUDA=TRUE COMP=gnu USE_MPI=FALSE -j 4 + make USE_CUDA=TRUE COMP=gnu USE_MPI=FALSE NETWORK_DIR=ase USE_NSE_NET=TRUE SCREEN_METHOD=chabrier1998 -j 4 From a29e22fa637fe11d65a24b474061a8f3e5c2ebfb Mon Sep 17 00:00:00 2001 From: Michael Zingale Date: Mon, 1 Jun 2026 10:57:34 -0400 Subject: [PATCH 8/8] update --- nse_solver/nse_eqns.H | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nse_solver/nse_eqns.H b/nse_solver/nse_eqns.H index 3395cbd0b..90ac76fea 100644 --- a/nse_solver/nse_eqns.H +++ b/nse_solver/nse_eqns.H @@ -28,7 +28,7 @@ struct nse_solver_data template -AMREX_GPU_HOST_DEVICE AMREX_INLINE +AMREX_GPU_DEVICE AMREX_INLINE T get_T_independent_nse_state(const T& state) { // Computes (2J + 1) m^{5/2} (kB 1e9 / 2 π ħ^2)^{3/2} / ρ // a portion of the nse_state that is not dependent on Temperature. @@ -114,7 +114,7 @@ void compute_coulomb_contribution(amrex::Array1D& u_c, template -AMREX_GPU_HOST_DEVICE AMREX_INLINE +AMREX_GPU_DEVICE AMREX_INLINE void get_T_dependent_nse_state(nse_solver_data& state_data) { // It does two things: // 1. Applies T9^{3/2} to the input state,