From 6724cd3214b31be4ee38d95c3929c5461db99d0f Mon Sep 17 00:00:00 2001 From: Tammo Jan Dijkema <dijkema@astron.nl> Date: Fri, 7 Sep 2018 13:15:26 +0000 Subject: [PATCH] Task #11550: cherry-pick r40722 into release branch --- CEP/DP3/DPPP_DDECal/src/DDECal.cc | 1 - CEP/DP3/DPPP_DDECal/src/MultiDirSolver.cc | 11 ++++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/CEP/DP3/DPPP_DDECal/src/DDECal.cc b/CEP/DP3/DPPP_DDECal/src/DDECal.cc index 7b90208bd8b..a6b1fc64f0d 100644 --- a/CEP/DP3/DPPP_DDECal/src/DDECal.cc +++ b/CEP/DP3/DPPP_DDECal/src/DDECal.cc @@ -877,7 +877,6 @@ namespace LOFAR { // Put solution weights in a contiguous piece of memory vector<double> weights; if (!itsConstraintSols[0][constraintNum][solNameNum].weights.empty()) { - std::cout << "Has weights.\n"; weights.resize(numSols); vector<double>::iterator nextpos = weights.begin(); for (uint time=0; time<itsSols.size(); ++time) { diff --git a/CEP/DP3/DPPP_DDECal/src/MultiDirSolver.cc b/CEP/DP3/DPPP_DDECal/src/MultiDirSolver.cc index d2d4f985425..69019b9f281 100644 --- a/CEP/DP3/DPPP_DDECal/src/MultiDirSolver.cc +++ b/CEP/DP3/DPPP_DDECal/src/MultiDirSolver.cc @@ -167,7 +167,7 @@ bool MultiDirSolver::assignSolutions(std::vector<std::vector<DComplex> >& soluti // The stepsize is taken out, so that a small stepsize won't cause // a premature stopping criterion. - double stepMagnitude = avgAbsDiff/_stepSize/n; + double stepMagnitude = (n==0 ? 0 : avgAbsDiff/_stepSize/n); stepMagnitudes.emplace_back(stepMagnitude); if(useConstraintAccuracy) @@ -375,7 +375,7 @@ void MultiDirSolver::performScalarIteration(size_t channelBlockIndex, // solve x^H in [g C] x^H = v bool success = solver.Solve(gTimesCs[ant].data(), vs[ant].data()); Matrix& x = vs[ant]; - if(success) + if(success && x(0, 0) != 0.) { for(size_t d=0; d!=_nDirections; ++d) nextSolutions[ant*_nDirections + d] = x(d, 0); @@ -639,7 +639,7 @@ void MultiDirSolver::performFullMatrixIteration(size_t channelBlockIndex, // solve x^H in [g C] x^H = v bool success = solver.Solve(gTimesCs[ant].data(), vs[ant].data()); Matrix& x = vs[ant]; - if(success) + if(success && x(0, 0) != 0.) { for(size_t d=0; d!=_nDirections; ++d) { @@ -650,8 +650,9 @@ void MultiDirSolver::performFullMatrixIteration(size_t channelBlockIndex, } } else { - for(size_t i=0; i!=_nDirections*4; ++i) - nextSolutions[ant*_nDirections + i] = std::numeric_limits<double>::quiet_NaN(); + for(size_t i=0; i!=_nDirections*4; ++i) { + nextSolutions[ant*_nDirections*4 + i] = std::numeric_limits<double>::quiet_NaN(); + } } } _timerSolve.Pause(); -- GitLab