Skip to content
Snippets Groups Projects
Commit b056ca66 authored by Max Kahnt's avatar Max Kahnt
Browse files

Create a temporary ignore set only if needed.

As a side note: The construction of the temporary ignore nodes
eventually needs to be generalized just like the diagonal block.
parent 0a3b8825
No related branches found
No related tags found
1 merge request!11Fix: Cope with omitted diagonal blocks in outer GS loop.
Pipeline #
......@@ -52,12 +52,11 @@ void linearStep(const M& m, V& x, const V& b, const BitVector* ignore,
diag = &*cIt;
}
std::bitset<V::block_type::dimension> ignore_i(0);
if (ignore != nullptr)
ignore_i = (*ignore)[i];
using Ignore = std::bitset<V::block_type::dimension>;
// Update iterate with correction
x[i] += localSolver(diag != nullptr ? *diag : Block(0.0), std::move(ri), ignore_i);
x[i] += localSolver(diag != nullptr ? *diag : Block(0.0), std::move(ri),
ignore != nullptr ? (*ignore)[i] : Ignore(0));
};
if (direction != Direction::BACKWARD)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment