diff --git a/networks/triple_alpha_plus_cago/Make.package b/networks/triple_alpha_plus_cago/Make.package index f2ee53d848..567364d0e8 100644 --- a/networks/triple_alpha_plus_cago/Make.package +++ b/networks/triple_alpha_plus_cago/Make.package @@ -1,11 +1,9 @@ CEXE_headers += network_properties.H ifeq ($(USE_REACT),TRUE) - CEXE_sources += actual_network_data.cpp CEXE_headers += actual_network.H - - CEXE_sources += actual_rhs_data.cpp CEXE_headers += actual_rhs.H + USE_RATES = TRUE USE_SCREENING = TRUE endif diff --git a/networks/triple_alpha_plus_cago/actual_network.H b/networks/triple_alpha_plus_cago/actual_network.H index f06a0cd999..3ec850ba0a 100644 --- a/networks/triple_alpha_plus_cago/actual_network.H +++ b/networks/triple_alpha_plus_cago/actual_network.H @@ -1,33 +1,187 @@ #ifndef actual_network_H #define actual_network_H +#define NEW_NETWORK_IMPLEMENTATION + #include #include #include #include #include +#include +#include using namespace amrex; -void actual_network_init(); +AMREX_INLINE +void actual_network_init() {} const std::string network_name = "triple_alpha_plus_cago"; namespace network { - extern AMREX_GPU_MANAGED amrex::Array1D bion; + template + AMREX_GPU_HOST_DEVICE AMREX_INLINE + constexpr Real bion () { + using namespace Species; + + static_assert(spec >= 1 && spec <= NumSpec); + + // Set the binding energy of the element + if constexpr (spec == He4) { + return 28.29603_rt; + } + else if constexpr (spec == C12) { + return 92.16294_rt; + } + else if constexpr (spec == O16) { + return 127.62093_rt; + } + else if constexpr (spec == Fe56) { + return 492.25389_rt; + } + + // Return zero if we don't recognize the species. + + return 0.0_rt; + } + + template + AMREX_GPU_HOST_DEVICE AMREX_INLINE + constexpr Real mion () { + static_assert(spec >= 1 && spec <= NumSpec); + + constexpr Real A = NetworkProperties::aion(spec); + constexpr Real Z = NetworkProperties::zion(spec); + + return (A - Z) * C::Legacy::m_n + Z * (C::Legacy::m_p + C::Legacy::m_e) - bion() * C::Legacy::MeV2gr; + } + + // Legacy (non-templated) interfaces + + AMREX_GPU_HOST_DEVICE AMREX_INLINE + Real bion (int spec) { + using namespace Species; + + Real b = 0.0_rt; + + // Set the binding energy of the element + constexpr_for<1, NumSpec+1>([&] (auto n) { + if (n == spec) { + b = bion(); + } + }); + + return b; + } + + AMREX_GPU_HOST_DEVICE AMREX_INLINE + Real mion (int spec) { + using namespace Species; + + Real m = 0.0_rt; + + constexpr_for<1, NumSpec+1>([&] (auto n) { + if (n == spec) { + m = mion(); + } + }); + + return m; + } } namespace Rates { enum NetworkRates { - ir3a = 1, - ircago = 2, - NumRates = ircago + He4_He4_He4_to_C12 = 1, + C12_He4_to_O16, + NumRates = C12_He4_to_O16 }; - - const int NumGroups = 2; }; +namespace RHS { + + AMREX_GPU_HOST_DEVICE AMREX_INLINE + constexpr rhs_t rhs_data (int rate) + { + using namespace Species; + using namespace Rates; + + rhs_t data; + + switch (rate) { + + case He4_He4_He4_to_C12: + data.species_A = He4; + data.species_D = C12; + + data.number_A = 3; + data.number_D = 1; + + data.exponent_A = 3; + data.exponent_D = 1; + + // This network doesn't allow the reverse reaction + data.reverse_branching_ratio = 0.0_rt; + break; + + case C12_He4_to_O16: + data.species_A = C12; + data.species_B = He4; + data.species_D = O16; + + data.number_A = 1; + data.number_B = 1; + data.number_D = 1; + + data.exponent_A = 1; + data.exponent_B = 1; + data.exponent_D = 1; + + // This network doesn't allow the reverse reaction + data.reverse_branching_ratio = 0.0_rt; + break; + + } + + return data; + } + + template + AMREX_GPU_HOST_DEVICE AMREX_INLINE + void evaluate_analytical_rate (const rhs_state_t& state, rate_t& rates) + { + using namespace Species; + using namespace Rates; + + if constexpr (rate == He4_He4_He4_to_C12) { + rate_triplealf(state.tf, 1.0_rt, rates.fr, rates.frdt, rates.rr, rates.rrdt); + } + else if constexpr (rate == C12_He4_to_O16) { + rate_c12ag(state.tf, 1.0_rt, rates.fr, rates.frdt, rates.rr, rates.rrdt); + } + } + + template + AMREX_GPU_HOST_DEVICE AMREX_INLINE + void postprocess_rate ([[maybe_unused]] const rhs_state_t& state, rate_t& rates, + rate_t& rates1, rate_t& rates2, rate_t& rates3) + { + using namespace Species; + using namespace Rates; + + // Nothing to do for this network. + } + + template + AMREX_GPU_HOST_DEVICE AMREX_INLINE + Real ener_gener_rate (Real const& dydt) + { + return dydt * network::mion() * C::Legacy::enuc_conv2; + } + +} // namespace RHS + #endif diff --git a/networks/triple_alpha_plus_cago/actual_network_data.cpp b/networks/triple_alpha_plus_cago/actual_network_data.cpp deleted file mode 100644 index a6e8ef21c3..0000000000 --- a/networks/triple_alpha_plus_cago/actual_network_data.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#include -#include - -namespace network -{ - AMREX_GPU_MANAGED amrex::Array1D bion; -} - -void actual_network_init () -{ - using namespace Species; - using namespace network; - - // our convention is that binding energy is negative. The following are - // the binding energies per unit mass (erg / g) obtained by converting - // the energies in MeV to erg then multiplying by (N_A / aion) where - // N_A = 6.0221415e23 is Avogadro's number - bion(He4) = 28.29603_rt; // MeV / nucleus - bion(C12) = 92.16294_rt; // MeV / nucleus - bion(O16) = 127.62093_rt; // MeV / nucleus - bion(Fe56) = 492.25389_rt; // MeV / nucleus -} diff --git a/networks/triple_alpha_plus_cago/actual_rhs.H b/networks/triple_alpha_plus_cago/actual_rhs.H index 8525ba8210..2cf0ad127e 100644 --- a/networks/triple_alpha_plus_cago/actual_rhs.H +++ b/networks/triple_alpha_plus_cago/actual_rhs.H @@ -1,429 +1,6 @@ #ifndef actual_rhs_H #define actual_rhs_H -#include -#include -#include -#include -#include - -#include -#include #include -#include -#include -#include -#include -#include - -using namespace amrex; -using namespace ArrayUtil; -using namespace Rates; - -using namespace network_rp; - -void actual_rhs_init (); - -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void screen (const Real& temp, const Real& dens, const Array1D& ymol, - Array1D& rates, Array1D& dratesdt) -{ - using namespace Species; - using namespace Rates; - - Real scorr1, dscorr1dt, dscorr1dd; - Real scorr2, dscorr2dt, dscorr2dd; - Real scorr, dscorrdt, dscorrdd; - - Array1D rates_in, dratesdt_in; - - for (int i = 1; i <= NumRates; ++i) { - rates_in(i) = rates(i); - dratesdt_in(i) = dratesdt(i); - } - - plasma_state_t state; - fill_plasma_state(state, temp, dens, ymol); - - int jscr = 0; - screen(state, jscr, - zion[He4-1], aion[He4-1], zion[He4-1], aion[He4-1], - scorr1, dscorr1dt, dscorr1dd); - - jscr++; - screen(state, jscr, - zion[He4-1], aion[He4-1], 4.0e0_rt, 8.0e0_rt, - scorr2, dscorr2dt, dscorr2dd); - - scorr = scorr1 * scorr2; - dscorrdt = dscorr1dt * scorr2 + scorr1 * dscorr2dt; - - rates(ir3a) = rates_in(ir3a) * scorr; - dratesdt(ir3a) = dratesdt_in(ir3a) * scorr + rates_in(ir3a) * dscorrdt; - - // C12 + alpha --> O16 - jscr++; - screen(state, jscr, - zion[C12-1], aion[C12-1], zion[He4-1], aion[He4-1], - scorr, dscorrdt, dscorrdd); - - rates(ircago) = rates_in(ircago) * scorr; - dratesdt(ircago) = dratesdt_in(ircago) * scorr + rates_in(ircago) * dscorrdt; -} - - -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void make_rates (const Real& temp, const Real& dens, - Array1D& rates, - Array1D& dratesdt) -{ - using namespace Rates; - - // rates given in terms of molar fractions - - Real t9r, t9r32, t9ri, t9ri2, t9, t9i, t913, t9i13, t923; - Real t9i23, t943, t9i43, t932, t9i32, t953, t9i53, t92, t9i2; - - Real term, dtermdt; - Real r2abe, dr2abedt; - Real rbeac, drbeacdt; - - // some scratch terms - Real a, b, b1, b2, c; - Real dadt, dbdt, db1dt, db2dt, dcdt; - - constexpr Real ONE_TWELVTH = 1.0_rt / 12.0_rt; - constexpr Real FIVE_SIXTHS = 5.0_rt / 6.0_rt; - constexpr Real FIVE_THIRDS = 5.0_rt / 3.0_rt; - constexpr Real THREE_HALVES = 3.0_rt / 2.0_rt; - constexpr Real T2T9 = 1.0e-9_rt; - - t9r = temp * T2T9; - t9r32 = std::pow(t9r, THREE_HALVES); - t9ri = 1.0_rt / t9r; - t9ri2 = t9ri * t9ri; - t9 = amrex::min(t9r, 10.0e0_rt); - t9i = 1.0_rt / t9; - t913 = std::pow(t9, (1.0_rt / 3.0_rt)); - t9i13 = 1.0_rt / t913; - t923 = std::pow(t9, (2.0_rt / 3.0_rt)); - t9i23 = 1.0_rt / t923; - t943 = std::pow(t9, (4.0_rt / 3.0_rt)); - t9i43 = 1.0_rt / t943; - t932 = std::pow(t9, THREE_HALVES); - t9i32 = 1.0_rt / t932; - t953 = std::pow(t9, FIVE_THIRDS); - t9i53 = 1.0_rt / t953; - t92 = t9 * t9; - t9i2 = 1.0_rt / t92; - - for (int i = 1; i <= NumRates; ++i) { - rates(i) = 0.0_rt; - dratesdt(i) = 0.0_rt; - } - - // triple alpha to c12 (divided by 3! = 6) - // from cf88 - - // q = -0.092; 2 He4 --> Be8 - a = (7.4e5_rt * t9i32) * std::exp(-1.0663_rt * t9i); - dadt = -a * THREE_HALVES * t9i + a * t9i2 * 1.0663_rt; - - b = 4.164e9_rt * t9i23 * std::exp(-13.49_rt * t9i13 - t92 / 9.604e-3_rt); - dbdt = -b * (2.0_rt / 3.0_rt) * t9i + b * (13.49_rt * (1.0_rt / 3.0_rt) * t9i43 - 2.0_rt * t9 / 9.604e-3_rt); - - c = 1.0_rt + 3.1e-2_rt * t913 + 8.009_rt * t923 + 1.732_rt * t9 + 49.883_rt * t943 + 27.426_rt * t953; - dcdt = 3.1e-2_rt * (1.0_rt / 3.0_rt) * t9i23 + 8.009_rt * (2.0_rt / 3.0_rt) * t9i13 + - 1.732_rt + 49.883_rt * (4.0_rt / 3.0_rt) * t913 + 27.426_rt * FIVE_THIRDS * t923; - - r2abe = a + b * c; - dr2abedt = dadt + dbdt * c + b * dcdt; - - - // q = 7.367; He4 + Be8 --> C12 - a = (130_rt * t9i32) * std::exp(-3.3364_rt * t9i); - dadt = -a * THREE_HALVES * t9i + a * 3.3364_rt * t9i2; - - b = 2.51e7_rt * t9i23 * std::exp(-23.57_rt * t9i13 - t92 / 0.055225_rt); - dbdt = b * (2.0_rt / 3.0_rt) * t9i + b * (23.57_rt * (1.0_rt / 3.0_rt) * t9i43 - 2.0_rt * t9 / 0.055225_rt); - - c = 1.0_rt + 0.018_rt * t913 + 5.249_rt * t923 + 0.65_rt * t9 + 19.176_rt * t943 + 6.034_rt * t953; - dcdt = 0.018_rt * (1.0_rt / 3.0_rt) * t9i23 + 5.249_rt * (2.0_rt / 3.0_rt) * t9i13 + - 0.65_rt + 19.176_rt * (4.0_rt / 3.0_rt) * t913 + 6.034_rt * FIVE_THIRDS * t923; - - rbeac = a + b * c; - drbeacdt = dadt + dbdt * c + b * dcdt; - - // q = 7.275; total reaction - - a = 2.9e-16_rt * r2abe * rbeac; - dadt = 2.9e-16_rt * (dr2abedt * rbeac + r2abe * drbeacdt); - - if (t9 > 8e-2_rt) { - b = 0.1_rt * 1.35e-7_rt * t9i32 * std::exp(-24.811_rt * t9i); - dbdt = -b * (2.0_rt / 3.0_rt) * t9i + 24.811_rt * b * t9i2; - - term = a + b; - dtermdt = dadt + dbdt; - } else { - b1 = 1.0_rt + 4.0_rt * std::exp(-std::pow(2.5e-2_rt * t9i, 3.263_rt)); - db1dt = 4.0_rt * 3.263_rt * std::pow(2.5e-2_rt * t9i, 3.263_rt) * - t9i * std::exp(-std::pow(2.5e-2_rt * t9i, 3.263_rt)); - - b2 = 1.0_rt + 4.0_rt * std::exp(-std::pow(t9 / 2.5e-2_rt, 9.227_rt)); - db2dt = -4.0_rt * 9.227_rt * std::pow(t9 / 2.5e-2_rt, 9.227_rt) * - t9i * std::exp(-std::pow(t9 / 2.5e-2_rt, 9.227_rt)); - - b = 1.e-2_rt + 0.2_rt * b1 / b2; - dbdt = 0.2_rt * (db1dt / b2 - b1 * db2dt / (b2 * b2)); - - c = 0.1_rt * 1.35e-7_rt * t9i32 * std::exp(-24.811_rt * t9i); - dcdt = -c * THREE_HALVES * t9i + 24.811_rt * c * t9i2; - - term = a * b + c; - dtermdt = dadt * b + a * dbdt + dcdt; - } - - rates(ir3a) = term * (dens * dens) / 6.0_rt; - dratesdt(ir3a) = dtermdt * T2T9 * (dens * dens) / 6.0_rt; - - - // c12 + he4 to o16 - // 1.7 time cf88 rate: see Weaver & Woosley Phy. Rep. 227 (1993) - // and Garnett Nuc. Phys. A. 621 (1997) - // q = 7.162 - b1 = 1.0_rt + 0.0489_rt * t9i23; - db1dt = -0.0489_rt * (2.0_rt / 3.0_rt) * t9i53; - - b2 = -32.120_rt * t9i13 - t92/(3.496_rt * 3.496_rt); - db2dt = 32.120_rt * (1.0_rt / 3.0_rt) * t9i43 - 2.0_rt * t9 / (3.496_rt * 3.496_rt); - - a = t9i2 * b1 * b1 * std::exp(b2); - dadt = a * (-2.0_rt * t9i + 2.0_rt * db1dt / b1 + db2dt); - - //------------------------ - - b2 = 1.0_rt + 0.2654_rt * t9i23; - db2dt = -0.2654_rt * (2.0_rt / 3.0_rt) * t9i53; - - c = -32.120_rt * t9i13; - dcdt = -(1.0_rt / 3.0_rt) * c * t9i; - - b1 = t9i2 * b2 * b2 * std::exp(c); - db1dt = b1 * (-2.0_rt * t9i + 2.0_rt * db2dt / b2 + dcdt); - - //------------------------ - - c = -27.499_rt * t9i; - dcdt = - c * t9i; - - b2 = t9i32 * std::exp(c); - db2dt = b2 * (-THREE_HALVES * t9i + dcdt); - - //------------------------ - - c = t92 * t92 * t9 * std::exp(-15.541_rt * t9i); - dcdt = c * (5.0_rt * t9i + 15.541_rt * t9i2); - - //------------------------ - - term = 1.04e8_rt * a + 1.76e8_rt * b1 + 1.25e3_rt * b2 + 1.43e-2_rt * c; - dtermdt = 1.04e8_rt * dadt + 1.76e8_rt * db1dt + 1.25e3_rt * db2dt + 1.43e-2_rt * dcdt; - - term = 1.7_rt * term; - dtermdt = 1.7_rt * term; - - rates(ircago) = term * dens; - dratesdt(ircago) = dtermdt * T2T9 * dens; -} - - -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void get_rates (burn_t& state, Array1D& rr) -{ - using namespace Rates; - - Real temp = state.T; - Real dens = state.rho; - - Array1D ymol; - for (int i = 1; i <= NumSpec; ++i) { - ymol(i) = state.xn[i-1] * aion_inv[i-1]; - } - - Array1D rates, dratesdt; - make_rates(temp, dens, rates, dratesdt); - - screen(temp, dens, ymol, rates, dratesdt); - - for (int i = 1; i <= NumRates; ++i) { - rr(1).rates(i) = rates(i); - rr(2).rates(i) = dratesdt(i); - } -} - - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void ener_gener_rate (T& dydt, Real& enuc) -{ - using namespace network; - - enuc = 0.0_rt; - - for (int i = 1; i <= NumSpec; ++i) { - enuc += dydt(i) * bion(i); - } - enuc *= C::MeV2eV * C::ev2erg * C::n_A; -} - - -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void dydt (const Array1D& ymol, const Array1D& rates, - Array1D& ydot) -{ - using namespace Species; - using namespace Rates; - - for (int i = 1; i <= NumSpec; ++i) { - ydot(i) = 0.0_rt; - } - - // He4 reactions - ydot(He4) = -3.0_rt * ymol(He4) * ymol(He4) * ymol(He4) * rates(ir3a) - -1.0_rt * ymol(C12) * ymol(He4) * rates(ircago); - - // C12 reactions - ydot(C12) = 1.0_rt * ymol(He4) * ymol(He4) * ymol(He4) * rates(ir3a) - -1.0_rt * ymol(C12) * ymol(He4) * rates(ircago); - - // O16 reactions - ydot(O16) = 1.0_rt * ymol(C12) * ymol(He4) * rates(ircago); -} - - -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void actual_rhs (burn_t& state, Array1D& ydot) -{ - using namespace Rates; - - for (int i = 1; i <= neqs; ++i) { - ydot(i) = 0.0_rt; - } - - Array1D ymol; - for (int i = 1; i <= NumSpec; ++i) { - ymol(i) = state.xn[i-1] * aion_inv[i-1]; - } - - // set up the species ODEs for the reaction network - // species inputs are in molar fractions but come out in mass fractions - - Array1D rr; - get_rates(state, rr); - - Array1D rates; - for (int i = 1; i <= NumRates; ++i) { - rates(i) = rr(1).rates(i); - } - - Array1D yderivs; - dydt(ymol, rates, yderivs); - - for (int i = 1; i <= NumSpec; ++i) { - ydot(i) = yderivs(i); - } - - // Energy generation rate - - ener_gener_rate(ydot, ydot(net_ienuc)); - -} - - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void actual_jac (burn_t& state, MatrixType& jac) -{ - using namespace Species; - using namespace Rates; - - Array1D rr; - get_rates(state, rr); - - Array1D rates, dratesdt; - for (int i = 1; i <= NumRates; ++i) { - rates(i) = rr(1).rates(i); - dratesdt(i) = rr(2).rates(i); - } - - // initialize - jac.zero(); - - Array1D ymol; - for (int i = 1; i <= NumSpec; ++i) { - ymol(i) = state.xn[i-1] * aion_inv[i-1]; - } - - // ====================================================================== - // THESE ARE IN TERMS OF MOLAR FRACTIONS - - // helium jacobian elements - jac(He4, He4) = -9.0_rt * ymol(He4) * ymol(He4) * rates(ir3a) - 1.0_rt * ymol(C12) * rates(ircago); - jac(He4, C12) = -1.0_rt * ymol(He4) * rates(ircago); - - // carbon jacobian elements - jac(C12,He4) = 3.0_rt * ymol(He4) * ymol(He4) * rates(ir3a) - 1.0_rt * ymol(C12) * rates(ircago); - jac(C12,C12) = -1.0_rt * ymol(He4) * rates(ircago); - - // oxygen jacobian elements - jac(O16, He4) = 1.0_rt * ymol(C12) * rates(ircago); - jac(O16, C12) = 1.0_rt * ymol(He4) * rates(ircago); - - // ====================================================================== - - // Add the temperature derivatives: df(y_i) / dT, then convert to energy - - Array1D ydot; - dydt(ymol, dratesdt, ydot); - - for (int j = 1; j <= NumSpec; ++j) { - jac(j, net_ienuc) = temperature_to_energy_jacobian(state, ydot(j)); - } - - // Energy generation rate Jacobian elements with respect to species - - for (int j = 1; j <= NumSpec; ++j) { - auto jac_slice_2 = [&](int i) -> Real { return jac.get(i, j); }; - ener_gener_rate(jac_slice_2, jac(net_ienuc, j)); - } - - // Energy generation rate Jacobian element with respect to energy - - Real jac_e_T; - ener_gener_rate(ydot, jac_e_T); - jac(net_ienuc, net_ienuc) = temperature_to_energy_jacobian(state, jac_e_T); - -} - - -// Compute and store the more expensive screening factors - -AMREX_INLINE -void set_up_screening_factors () -{ - using namespace Species; - - // note: it is critical that these are called in the exact order - // that the screening calls are done in the RHS routine, since we - // use that order in the screening - - int jscr = 0; - add_screening_factor(jscr++, zion[He4-1], aion[He4-1], zion[He4-1], aion[He4-1]); - - add_screening_factor(jscr++, zion[He4-1], aion[He4-1], 4.0e0_rt, 8.0e0_rt); - - add_screening_factor(jscr++, zion[C12-1], aion[C12-1], zion[He4-1], aion[He4-1]); -} #endif diff --git a/networks/triple_alpha_plus_cago/actual_rhs_data.cpp b/networks/triple_alpha_plus_cago/actual_rhs_data.cpp deleted file mode 100644 index 01de318328..0000000000 --- a/networks/triple_alpha_plus_cago/actual_rhs_data.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include - -void actual_rhs_init() -{ - set_up_screening_factors(); - - screening_init(); -} diff --git a/unit_test/burn_cell/ci-benchmarks/triple_alpha_plus_cago_FE_unit_test.out b/unit_test/burn_cell/ci-benchmarks/triple_alpha_plus_cago_FE_unit_test.out index ad0b04fee9..d07b621b44 100644 --- a/unit_test/burn_cell/ci-benchmarks/triple_alpha_plus_cago_FE_unit_test.out +++ b/unit_test/burn_cell/ci-benchmarks/triple_alpha_plus_cago_FE_unit_test.out @@ -1,4 +1,4 @@ -AMReX (23.07-3-g22a1a3a1d4b0) initialized +AMReX (23.07-7-g88f03408f18a) initialized starting the single zone burn... Maximum Time (s): 0.001 State Density (g/cm^3): 1000000 @@ -10,7 +10,7 @@ Mass Fraction (Fe56): 0 RHS at t = 0 He4 -1.897392574 C12 0.6324641915 - O16 1.844542224e-27 + O16 1.767918298e-27 Fe56 0 ------------------------------------ successful? 1 @@ -22,18 +22,18 @@ e initial = 1.389440599e+18 e final = 1.121022454e+34 ------------------------------------ new mass fractions: -He4 0.9976922702 -C12 7.565668024e-05 -O16 0.002232073101 +He4 0.9994356028 +C12 1.497617246e-05 +O16 0.0005494210118 Fe56 1e-30 ------------------------------------ species creation rates: -omegadot(He4): -2.307729781 -omegadot(C12): 0.07565668024 -omegadot(O16): 2.232073101 +omegadot(He4): -0.5643971843 +omegadot(C12): 0.01497617246 +omegadot(O16): 0.5494210118 omegadot(Fe56): 0 -number of steps taken: 204653 +number of steps taken: 85669 Unused ParmParse Variables: [TOP]::unit_test.x4(nvals = 1) :: [0.0] -AMReX (23.07-3-g22a1a3a1d4b0) finalized +AMReX (23.07-7-g88f03408f18a) finalized diff --git a/unit_test/test_rhs/ci-benchmarks/triple_alpha_plus_cago.out b/unit_test/test_rhs/ci-benchmarks/triple_alpha_plus_cago.out index 3830310865..df9e02c0ca 100644 --- a/unit_test/test_rhs/ci-benchmarks/triple_alpha_plus_cago.out +++ b/unit_test/test_rhs/ci-benchmarks/triple_alpha_plus_cago.out @@ -3,38 +3,38 @@ variables minimum value maximum value density 10000 100000000 temperature 50000000 5000000000 - Ydot_helium-4 -711999.15989 -8.6944350433e-26 - Ydot_carbon-12 -711987.1533 9507.8187509 - Ydot_oxygen-16 8.694434872e-26 711990.15495 + Ydot_helium-4 -707089.53249 -3.8372451252e-27 + Ydot_carbon-12 -707077.5259 9510.0124105 + Ydot_oxygen-16 3.837243412e-27 707080.52755 Ydot_iron-56 0 0 Xold_helium-4 0.1 0.7 Xold_carbon-12 0.1 0.7 Xold_oxygen-16 0.1 0.7 Xold_iron-56 0.1 0.6 - Edot 6.0080639566e-07 4.9200445345e+24 - J_helium-4_helium-4 -28480686.791 -3.0746353512e-24 - J_carbon-12_helium-4 -28479246 163043.85402 - J_oxygen-16_helium-4 3.0746274159e-24 28479606.198 + Edot 2.6516282471e-08 4.8861182359e+24 + J_helium-4_helium-4 -28284301.695 -1.3570501009e-25 + J_carbon-12_helium-4 -28282860.904 163056.38921 + J_oxygen-16_helium-4 1.3569707485e-25 28283221.102 J_iron-56_helium-4 0 0 - J_E_helium-4 2.1246434586e-05 1.968034669e+26 - J_helium-4_carbon-12 -83750353.203 -1.0043548971e-23 - J_carbon-12_carbon-12 -83750353.203 -1.0043548971e-23 - J_oxygen-16_carbon-12 1.0043548971e-23 83750353.203 + J_E_helium-4 9.3771811692e-07 1.9544641496e+26 + J_helium-4_carbon-12 -83172840.964 -4.4326678722e-25 + J_carbon-12_carbon-12 -83172840.964 -4.4326678722e-25 + J_oxygen-16_carbon-12 4.4326678722e-25 83172840.964 J_iron-56_carbon-12 0 0 - J_E_carbon-12 6.9403342548e-05 5.7873511331e+26 + J_E_carbon-12 3.0630805245e-06 5.7474441278e+26 J_helium-4_oxygen-16 0 0 J_carbon-12_oxygen-16 0 0 J_oxygen-16_oxygen-16 0 0 J_iron-56_oxygen-16 0 0 - J_E_oxygen-16 0 0 + J_E_oxygen-16 -0 -0 J_helium-4_iron-56 0 0 J_carbon-12_iron-56 0 0 J_oxygen-16_iron-56 0 0 J_iron-56_iron-56 0 0 - J_E_iron-56 0 0 - J_helium-4_E -9.2068265904e-12 2.9771882829e-13 - J_carbon-12_E -9.2068599038e-12 7.2504009603e-13 - J_oxygen-16_E -2.4841469758e-19 9.2068515755e-12 + J_E_iron-56 -0 -0 + J_helium-4_E -7.8037009251e-12 2.9599266218e-13 + J_carbon-12_E -7.8037355427e-12 7.2503604192e-13 + J_oxygen-16_E 3.1567282452e-41 7.8037268883e-12 J_iron-56_E 0 0 - J_E_E -691898.93303 63621503.552 + J_E_E -679969.8743 53925576.227