fixed: also put multiplier in block 2 with component based blocks
This commit is contained in:
parent
a2cf0932f1
commit
ec6b692c3a
@ -1144,16 +1144,17 @@ bool DomainDecomposition::setup(const ProcessAdm& adm, const SIMbase& sim)
|
|||||||
dofType = cb == 1 ? 'D' : 'P'+cb-2;
|
dofType = cb == 1 ? 'D' : 'P'+cb-2;
|
||||||
std::set<int> tmp = adm.dd.getSAM()->getEquations(dofType);
|
std::set<int> tmp = adm.dd.getSAM()->getEquations(dofType);
|
||||||
blocks[i+1].localEqs.insert(tmp.begin(), tmp.end());
|
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) {
|
// HACK: multipliers always in second block
|
||||||
if (sim.getPatch(1)->isLMn(n) && sim.getPatch(1)->getLMType(n) == 'G') {
|
// Correct thing to do for average pressure constraint in Stokes.
|
||||||
int lEq = sam->getEquation(sim.getPatch(1)->getNodeID(n), 1);
|
if (i == 1) {
|
||||||
if (lEq > 0)
|
for (size_t n = 1; n <= sim.getPatch(1)->getNoNodes(); ++n) {
|
||||||
blocks[i+1].localEqs.insert(lEq);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user