diff --git a/CEP/DP3/DPPP_DDECal/src/DDECal.cc b/CEP/DP3/DPPP_DDECal/src/DDECal.cc index 7b90208bd8b2a0c1aeb89af6f36d0cf7b0330695..a6b1fc64f0d34fddff65ac18248a596b5347188b 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 d2d4f98542587d537a71fac0ce4a0b65a579932b..69019b9f2810fd9b90924b1f9466b32274b03988 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();