1010#include < jacobian_utilities.H>
1111#include < screen.H>
1212#include < microphysics_autodiff.H>
13+ #ifdef NEUTRINOS
1314#include < sneut5.H>
15+ #endif
1416#include < reaclib_rates.H>
1517#include < table_rates.H>
1618
@@ -269,14 +271,22 @@ void evaluate_rates(const burn_t& state, T& rate_eval) {
269271
270272 // Fill approximate rates
271273
272- fill_approx_rates<do_T_derivatives, T>(tfactors, rate_eval);
274+ fill_approx_rates<do_T_derivatives, T>(tfactors, state. rho , Y, rate_eval);
273275
274276 // Calculate tabular rates
275277
276278 [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma;
277279
278280 rate_eval.enuc_weak = 0 .0_rt;
279281
282+ tabular_evaluate (j_F20_Ne20_meta, j_F20_Ne20_rhoy, j_F20_Ne20_temp, j_F20_Ne20_data,
283+ rhoy, state.T , rate, drate_dt, edot_nu, edot_gamma);
284+ rate_eval.screened_rates (k_F20_to_Ne20) = rate;
285+ if constexpr (std::is_same_v<T, rate_derivs_t >) {
286+ rate_eval.dscreened_rates_dT (k_F20_to_Ne20) = drate_dt;
287+ }
288+ rate_eval.enuc_weak += C::Legacy::n_A * Y (F20 ) * (edot_nu + edot_gamma);
289+
280290 tabular_evaluate (j_F20_O20_meta, j_F20_O20_rhoy, j_F20_O20_temp, j_F20_O20_data,
281291 rhoy, state.T , rate, drate_dt, edot_nu, edot_gamma);
282292 rate_eval.screened_rates (k_F20_to_O20) = rate;
@@ -301,14 +311,6 @@ void evaluate_rates(const burn_t& state, T& rate_eval) {
301311 }
302312 rate_eval.enuc_weak += C::Legacy::n_A * Y (O20 ) * (edot_nu + edot_gamma);
303313
304- tabular_evaluate (j_F20_Ne20_meta, j_F20_Ne20_rhoy, j_F20_Ne20_temp, j_F20_Ne20_data,
305- rhoy, state.T , rate, drate_dt, edot_nu, edot_gamma);
306- rate_eval.screened_rates (k_F20_to_Ne20) = rate;
307- if constexpr (std::is_same_v<T, rate_derivs_t >) {
308- rate_eval.dscreened_rates_dT (k_F20_to_Ne20) = drate_dt;
309- }
310- rate_eval.enuc_weak += C::Legacy::n_A * Y (F20 ) * (edot_nu + edot_gamma);
311-
312314
313315}
314316
@@ -340,6 +342,11 @@ void get_ydot_weak(const burn_t& state,
340342
341343 // Calculate tabular rates and get ydot_weak
342344
345+ tabular_evaluate (j_F20_Ne20_meta, j_F20_Ne20_rhoy, j_F20_Ne20_temp, j_F20_Ne20_data,
346+ rhoy, state.T , rate, drate_dt, edot_nu, edot_gamma);
347+ rate_eval.screened_rates (k_F20_to_Ne20) = rate;
348+ rate_eval.enuc_weak += C::Legacy::n_A * Y (F20 ) * (edot_nu + edot_gamma);
349+
343350 tabular_evaluate (j_F20_O20_meta, j_F20_O20_rhoy, j_F20_O20_temp, j_F20_O20_data,
344351 rhoy, state.T , rate, drate_dt, edot_nu, edot_gamma);
345352 rate_eval.screened_rates (k_F20_to_O20) = rate;
@@ -355,11 +362,6 @@ void get_ydot_weak(const burn_t& state,
355362 rate_eval.screened_rates (k_O20_to_F20) = rate;
356363 rate_eval.enuc_weak += C::Legacy::n_A * Y (O20 ) * (edot_nu + edot_gamma);
357364
358- tabular_evaluate (j_F20_Ne20_meta, j_F20_Ne20_rhoy, j_F20_Ne20_temp, j_F20_Ne20_data,
359- rhoy, state.T , rate, drate_dt, edot_nu, edot_gamma);
360- rate_eval.screened_rates (k_F20_to_Ne20) = rate;
361- rate_eval.enuc_weak += C::Legacy::n_A * Y (F20 ) * (edot_nu + edot_gamma);
362-
363365 auto screened_rates = rate_eval.screened_rates ;
364366
365367 ydot_nuc (H1 ) = 0 .0_rt;
@@ -372,8 +374,8 @@ void get_ydot_weak(const burn_t& state,
372374 (-screened_rates (k_O20_to_F20)*Y (O20 ) + screened_rates (k_F20_to_O20)*Y (F20 ));
373375
374376 ydot_nuc (F20 ) =
375- (screened_rates (k_O20_to_F20 )*Y (O20 ) + - screened_rates (k_F20_to_O20 )*Y (F20 )) +
376- (- screened_rates (k_F20_to_Ne20 )*Y (F20 ) + screened_rates (k_Ne20_to_F20 )*Y (Ne20 ));
377+ (- screened_rates (k_F20_to_Ne20 )*Y (F20 ) + screened_rates (k_Ne20_to_F20 )*Y (Ne20 )) +
378+ (screened_rates (k_O20_to_F20 )*Y (O20 ) + - screened_rates (k_F20_to_O20 )*Y (F20 ));
377379
378380 ydot_nuc (Ne20) =
379381 (screened_rates (k_F20_to_Ne20)*Y (F20 ) + -screened_rates (k_Ne20_to_F20)*Y (Ne20));
@@ -427,13 +429,13 @@ void rhs_nuc(const burn_t& state,
427429 (-screened_rates (k_O20_to_F20)*Y (O20 ) + screened_rates (k_F20_to_O20)*Y (F20 ));
428430
429431 ydot_nuc (F20 ) =
430- (screened_rates (k_O20_to_F20 )*Y (O20 ) + - screened_rates (k_F20_to_O20 )*Y (F20 )) +
431- (- screened_rates (k_F20_to_Ne20 )*Y (F20 ) + screened_rates (k_Ne20_to_F20 )*Y (Ne20 ));
432+ (- screened_rates (k_F20_to_Ne20 )*Y (F20 ) + screened_rates (k_Ne20_to_F20 )*Y (Ne20 )) +
433+ (screened_rates (k_O20_to_F20 )*Y (O20 ) + - screened_rates (k_F20_to_O20 )*Y (F20 ));
432434
433435 ydot_nuc (Ne20) =
434- (screened_rates (k_F20_to_Ne20)*Y (F20 ) + -screened_rates (k_Ne20_to_F20)*Y (Ne20)) +
435436 (screened_rates (k_He4_O16_to_Ne20)*Y (He4)*Y (O16 )*state.rho + -screened_rates (k_Ne20_to_He4_O16)*Y (Ne20)) +
436- -screened_rates (k_He4_Ne20_to_Mg24)*Y (He4)*Y (Ne20)*state.rho ;
437+ -screened_rates (k_He4_Ne20_to_Mg24)*Y (He4)*Y (Ne20)*state.rho +
438+ (screened_rates (k_F20_to_Ne20)*Y (F20 ) + -screened_rates (k_Ne20_to_F20)*Y (Ne20));
437439
438440 ydot_nuc (Mg24) =
439441 screened_rates (k_He4_Ne20_to_Mg24)*Y (He4)*Y (Ne20)*state.rho +
@@ -499,9 +501,12 @@ void actual_rhs (burn_t& state, amrex::Array1D<amrex::Real, 1, neqs>& ydot)
499501
500502 // Get the thermal neutrino losses
501503
502- amrex::Real sneut, dsneutdt, dsneutdd, dsnuda, dsnudz;
504+ amrex::Real sneut{};
505+ #ifdef NEUTRINOS
503506 constexpr int do_derivatives{0 };
507+ amrex::Real dsneutdt{}, dsneutdd{}, dsnuda{}, dsnudz{};
504508 sneut5<do_derivatives>(state.T , state.rho , state.abar , state.zbar , sneut, dsneutdt, dsneutdd, dsnuda, dsnudz);
509+ #endif
505510
506511 // Append the energy equation (this is erg/g/s)
507512
@@ -717,15 +722,17 @@ void actual_jac(const burn_t& state, MatrixType& jac)
717722
718723 // Account for the thermal neutrino losses
719724
720- amrex::Real sneut, dsneutdt, dsneutdd, dsnuda, dsnudz;
725+ amrex::Real dsneutdt{};
726+ #ifdef NEUTRINOS
727+ amrex::Real sneut, dsneutdd, dsnuda, dsnudz;
721728 constexpr int do_derivatives{1 };
722729 sneut5<do_derivatives>(state.T , state.rho , state.abar , state.zbar , sneut, dsneutdt, dsneutdd, dsnuda, dsnudz);
723730
724731 for (int j = 1 ; j <= NumSpec; ++j) {
725732 amrex::Real b1 = (-state.abar * state.abar * dsnuda + (zion[j-1 ] - state.zbar ) * state.abar * dsnudz);
726733 jac.add (net_ienuc, j, -b1);
727734 }
728-
735+ # endif
729736
730737 // Evaluate the Jacobian elements with respect to energy by
731738 // calling the RHS using d(rate) / dT and then transform them
0 commit comments