From 80dba50330e7938ef14b6790a1a04636ef785f01 Mon Sep 17 00:00:00 2001 From: Emily Boudreaux Date: Wed, 19 Nov 2025 07:17:57 -0500 Subject: [PATCH] perf(EigenFunctor): Jacobian Cachine FOr QSE solving the Jacobian does not change meaninfully between steps. We have introduced caching so that it does not need to be reevaluated every step --- src/include/gridfire/engine/views/engine_multiscale.h | 2 ++ src/lib/engine/views/engine_multiscale.cpp | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/include/gridfire/engine/views/engine_multiscale.h b/src/include/gridfire/engine/views/engine_multiscale.h index c688368d..295319a6 100644 --- a/src/include/gridfire/engine/views/engine_multiscale.h +++ b/src/include/gridfire/engine/views/engine_multiscale.h @@ -670,6 +670,8 @@ namespace gridfire { */ const std::unordered_map m_qse_solve_species_index_map; + mutable std::optional m_cached_jacobian = std::nullopt; + /** * @brief Constructs an EigenFunctor. * diff --git a/src/lib/engine/views/engine_multiscale.cpp b/src/lib/engine/views/engine_multiscale.cpp index 7cb86365..fe55141a 100644 --- a/src/lib/engine/views/engine_multiscale.cpp +++ b/src/lib/engine/views/engine_multiscale.cpp @@ -1091,7 +1091,8 @@ namespace gridfire { const double rho ) const { const fourdst::composition::Composition result = m_baseEngine.collectComposition(comp, T9, rho); - fourdst::composition::Composition qseComposition = solveQSEAbundances(result, T9, rho); + + fourdst::composition::Composition qseComposition = getNormalizedEquilibratedComposition(result, T9, rho); return qseComposition; } @@ -1903,6 +1904,8 @@ namespace gridfire { } } + m_cached_jacobian = J_qse; // Cache the computed Jacobian for future use + return 0; // Success }