From ec6b692c3a2d344c047735c6d53c105717d1096b Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Sat, 4 Dec 2021 14:38:53 +0100 Subject: [PATCH] fixed: also put multiplier in block 2 with component based blocks --- src/ASM/DomainDecomposition.C | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/ASM/DomainDecomposition.C b/src/ASM/DomainDecomposition.C index b38e6ab3..60e0f7e0 100644 --- a/src/ASM/DomainDecomposition.C +++ b/src/ASM/DomainDecomposition.C @@ -1144,16 +1144,17 @@ bool DomainDecomposition::setup(const ProcessAdm& adm, const SIMbase& sim) dofType = cb == 1 ? 'D' : 'P'+cb-2; std::set tmp = adm.dd.getSAM()->getEquations(dofType); blocks[i+1].localEqs.insert(tmp.begin(), tmp.end()); - // HACK: multipliers always in second block - // Correct thing to do for average pressure constraint in Stokes. - if (i == 1) { - for (size_t n = 1; n <= sim.getPatch(1)->getNoNodes(); ++n) { - if (sim.getPatch(1)->isLMn(n) && sim.getPatch(1)->getLMType(n) == 'G') { - int lEq = sam->getEquation(sim.getPatch(1)->getNodeID(n), 1); - if (lEq > 0) - blocks[i+1].localEqs.insert(lEq); - } - } + } + } + + // HACK: multipliers always in second block + // Correct thing to do for average pressure constraint in Stokes. + if (i == 1) { + for (size_t n = 1; n <= sim.getPatch(1)->getNoNodes(); ++n) { + if (sim.getPatch(1)->isLMn(n) && sim.getPatch(1)->getLMType(n) == 'G') { + int lEq = sam->getEquation(sim.getPatch(1)->getNodeID(n), 1); + if (lEq > 0) + blocks[i+1].localEqs.insert(lEq); } } }