From 75553900c95b5634763f87c2251840fb30079fc1 Mon Sep 17 00:00:00 2001 From: Yaqi Wang Date: Wed, 11 Jan 2023 22:02:02 -0600 Subject: [PATCH] fix a bug that shows up when diagonal coupling is turned on with array variables #23123 --- framework/include/base/Assembly.h | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/framework/include/base/Assembly.h b/framework/include/base/Assembly.h index 577763dfab2d..3fa35b902c27 100644 --- a/framework/include/base/Assembly.h +++ b/framework/include/base/Assembly.h @@ -1629,13 +1629,20 @@ class Assembly unsigned int jvar, const RealEigenMatrix & v) const { - unsigned int pace = ((ivar == jvar && _component_block_diagonal[ivar]) ? 0 : nphi); - unsigned int saved_j = j; - for (unsigned int k = 0; k < v.rows(); ++k, i += ntest) + if (ivar == jvar && _component_block_diagonal[ivar]) { - j = saved_j; - for (unsigned int l = 0; l < v.cols(); ++l, j += pace) - ke(i, j) += v(k, l); + for (unsigned int k = 0; k < v.rows(); ++k, i += ntest) + ke(i, j) += v(k, k); + } + else + { + unsigned int saved_j = j; + for (unsigned int k = 0; k < v.rows(); ++k, i += ntest) + { + j = saved_j; + for (unsigned int l = 0; l < v.cols(); ++l, j += nphi) + ke(i, j) += v(k, l); + } } }