From ab3f60c3751343ded7dc1692477ac5bf3e9ddb65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20H=C3=B6rl?= <maximilian.hoerl@mathematik.uni-stuttgart.de> Date: Mon, 30 Mar 2020 16:45:09 +0200 Subject: [PATCH] [bugfix] fix 3d coupling index error in mmdg --- dune/mmdg/mmdg.hh | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/dune/mmdg/mmdg.hh b/dune/mmdg/mmdg.hh index b6d5c22..6725182 100644 --- a/dune/mmdg/mmdg.hh +++ b/dune/mmdg/mmdg.hh @@ -354,6 +354,8 @@ private: { const Scalar interfaceUpdate2 = interfaceUpdate1 * (iFrame[j] * qpGlobal); + const Scalar couplingUpdate4 = + 0.5 * weight * betaEvaluation * qpGlobal[j] * qpI; //quadrature for // int_iElem beta * phi_iElem,i * phi_iElem,j ds @@ -366,13 +368,13 @@ private: // -int_iElem beta * phi_iElem,i * avg(phi_elem,j) ds //for elem in {elemIn, elemOut} (*Base::A)[elemInIdxSLE + j + 1][iElemIdxSLE + i + 1] -= - couplingUpdate3; + couplingUpdate4; (*Base::A)[iElemIdxSLE + i + 1][elemInIdxSLE + j + 1] -= - couplingUpdate3; + couplingUpdate4; (*Base::A)[elemOutIdxSLE + j + 1][iElemIdxSLE + i + 1] -= - couplingUpdate3; + couplingUpdate4; (*Base::A)[iElemIdxSLE + i + 1][elemOutIdxSLE + j + 1] -= - couplingUpdate3; + couplingUpdate4; } //quadrature for @@ -440,13 +442,15 @@ private: const auto lambda_Kpar = [&](const Coordinate& qpGlobal, const Scalar weight) { + CoordinateMatrix KEvaluation = Base::problem_.Kparallel(qpGlobal); Scalar dEvaluation2 = Base::problem_.aperture(qpGlobal); dEvaluation2 *= dEvaluation2; + Coordinate KparDotTau_i; //storage for Kparallel * iFrame[i] + for (int i = 0; i < dim-1 ; i++) { - Coordinate KparDotTau_i; - Base::problem_.Kparallel(qpGlobal).mv(iFrame[i], KparDotTau_i); + KEvaluation.mv(iFrame[i], KparDotTau_i); (*Base::A)[iElemIdxSLE + i + 1][iElemIdxSLE + i + 1] += weight * dEvaluation2 * ( KparDotTau_i * iFrame[i] ); @@ -705,7 +709,7 @@ private: weight * qpI * dEvaluation2 * (interfaceUpdate1 - 2.0 * interfaceUpdate2); - for (int j = 0; j < i; i++) + for (int j = 0; j < i; j++) { KEvaluation.mv(iFrame[j], KparDotTau_j); -- GitLab