|
166 | 166 | for cycle, label in [(V, 'MG'), |
167 | 167 | (FMG_V, 'FMG')]: |
168 | 168 | if getattr(d, 'do'+label): |
| 169 | + assert np.all(np.isfinite(rhs.toarray())), rhs.toarray() |
169 | 170 | ml.cycle = cycle |
170 | 171 | with d.timer('Solve '+label): |
171 | 172 | numIter = ml(rhs, x) |
|
176 | 177 | its.add('Number of iterations '+label, numIter) |
177 | 178 | res.add('Residual norm '+label, resNorm) |
178 | 179 | resHist.add(label, residuals) |
| 180 | + print(label, r0, residuals, numIter, resNorm) |
179 | 181 |
|
180 | 182 | # set up cg |
181 | 183 | cg = solverFactory.build('cg', A=A, maxIter=d.maxiter, tolerance=tol, setup=True) |
|
192 | 194 | (gmres, 'GMRES'), |
193 | 195 | (bicgstab, 'BICGSTAB')]: |
194 | 196 | if getattr(d, 'do'+label): |
| 197 | + assert np.all(np.isfinite(rhs.toarray())), rhs.toarray() |
195 | 198 | solver.setPreconditioner(acc) |
196 | 199 | solver.setInitialGuess() |
197 | 200 | with d.timer('Solve '+label): |
|
203 | 206 | its.add('Number of iterations '+label, numIter) |
204 | 207 | res.add('Residual norm '+label, resNorm) |
205 | 208 | resHist.add(label, residuals) |
| 209 | + print(label, r0, residuals, numIter, resNorm) |
206 | 210 | if getattr(d, 'doP'+label): |
| 211 | + assert np.all(np.isfinite(rhs.toarray())), rhs.toarray() |
207 | 212 | solver.setPreconditioner(ml.asPreconditioner(cycle=V), False) |
208 | 213 | solver.setInitialGuess() |
209 | 214 | with d.timer('Solve P'+label): |
210 | 215 | numIter = solver(rhs, x) |
211 | 216 | residuals = solver.residuals |
212 | 217 | A.residual_py(x, rhs, r) |
213 | 218 | resNorm = r.norm(False) |
| 219 | + print(label, r0, residuals, numIter, resNorm) |
214 | 220 | rate.add('Rate of convergence P'+label, (resNorm/r0)**(1/numIter), tested=False if label == 'BICGSTAB' else None) |
215 | 221 | its.add('Number of iterations P'+label, numIter, aTol=2 if label == 'BICGSTAB' else None) |
216 | 222 | res.add('Residual norm P'+label, resNorm) |
|
0 commit comments