Apply threshold pressure for all dp

The threshold pressure is applied for all dp.
The sign of the threshold pressure is given by the sign of the dp.
This commit is contained in:
Tor Harald Sandve 2014-09-03 09:59:04 +02:00
parent 2d146b2a63
commit 024fe9c7b6

View File

@ -1642,13 +1642,12 @@ namespace {
// Create a sparse vector that nullifies the low potential elements.
const M keep_high_potential = spdiag(high_potential);
// The threshold modification must have the sign that reduces the
// absolute value of the potential.
const V sign_for_mod = (dp.value() < 0).template cast<double>();
const V threshold_modification = sign_for_mod * threshold_pressures_by_interior_face_;
// Find the current sign for the threshold modification
const V sign_dp = sign(dp.value());
const V threshold_modification = sign_dp * threshold_pressures_by_interior_face_;
// Modify potential and nullify where appropriate.
dp = keep_high_potential * (dp + threshold_modification);
dp = keep_high_potential * (dp - threshold_modification);
}