diff --git a/dune/tectonic/myblockproblem.hh b/dune/tectonic/myblockproblem.hh index caa16bbe08263053b1a5b9e4caa80b8934b020ba..58195440e5d746b7b4ee866f1f2e27dce034818f 100644 --- a/dune/tectonic/myblockproblem.hh +++ b/dune/tectonic/myblockproblem.hh @@ -283,22 +283,15 @@ class MyBlockProblem<MyConvexProblemTypeTEMPLATE>::IterateObject { LocalVectorType &ui, int m, typename Dune::BitSetVector<block_size>::const_reference ignore) { { - int ignore_component = block_size; - // Special value that indicates nothing should be ignored + int ic = + block_size; // Special value that indicates nothing should be ignored switch (ignore.count()) { case 0: // Full problem break; - case 1: // 1 Dimension is fixed - // Only the X and Y components are allowed to be fixed in this manner - if (ignore[0]) { - ignore_component = 0; - break; - } - if (ignore[1]) { - ignore_component = 1; - break; - } - assert(false); + case 1: + for (ic = 0; ic < block_size; ++ic) + if (ignore[ic]) + break; break; case block_size: // Ignore the whole node return; @@ -320,8 +313,7 @@ class MyBlockProblem<MyConvexProblemTypeTEMPLATE>::IterateObject { assert(localA != nullptr); auto const phi = problem.phi.restriction(m); - Dune::EllipticEnergy<block_size> localJ(*localA, localb, phi, - ignore_component); + Dune::EllipticEnergy<block_size> localJ(*localA, localb, phi, ic); Dune::minimise(localJ, ui, localsteps, bisection); } }