I actually don't know that much about our iterative solvers and how they (are supposed to) behave numerically myself, but some quick experiments show that it suddenly converges if we increase the iteration count stop criterium or modify the maximum residual of the residual stop criterium to anything other than its default (1e-12), e.g. 1e-10 or 1e-14:
var monitor = new Iterator(new IIterationStopCriterium[] { new IterationCountStopCriterium(1000), new ResidualStopCriterium(1e-13), new DivergenceStopCriterium(), new FailureStopCriterium() }); var sl2 = new BiCgStab(monitor);
Thanks,
Christoph
NB: monitor.Status is set to CalculationConverged if it converged, but in the failing case above it is CalculationStoppedWithoutConvergence, indicating the failure.