Seb,
> of course I am willing to share my code. You can find it in the file
> attached. The parameter file is configured such that the
> GrowingVectorMemory error occurs.
Thanks. I've tried this with the current development version of deal.II
and the error disappears. I'm pretty sure I know why this is so -- the
solver does not converge, so it throws an exception and that led to a
vector that had been allocated not being freed (because we bypass the
memory_pool.free(...) call due to the exception). In the next step, the
memory pool object is being destroyed and complains that a vector that
had been allocated had not been freed, and that's why you get that error
before anything else. (Anything else = the convergence error.)
I fixed this a while back in the development version, though. Probably here:
https://github.com/dealii/dealii/pull/4953
So with the current version, I only get to see the error about
non-convergence:
An error occurred in line <1052> of file
</home/fac/f/bangerth/p/deal.II/1/install/include/deal.II/lac/solver_gmres.h>
in function
void dealii::SolverGMRES<VectorType>::solve(const MatrixType&,
VectorType&, const VectorType&, const PreconditionerType&) [with
MatrixType = dealii::SparseMatrix<double>; PreconditionerType =
dealii::SparseILU<double>; VectorType = dealii::Vector<double>]
The violated condition was:
iteration_state == SolverControl::success
Additional information:
Iterative method reported convergence failure in step 1000. The residual
in the last step was 0.0018243.
[...]
> I think the error is due to a
> convergence failure of SolverGMRES inside the method
> BlockSchurPreconditioner::vmult. In this method the convection-diffusion
> system ((0,0)-block) is solved with GMRES and ILU-preconditioning.
>
> I investigated the behaviour of the preconditioner further. If the
> Reynolds number is decrease to say 100, the iterative solver for the
> convection-diffusion system converges. I am not an expert, but does
> ILU-preconditioning not work for larger Reynolds numbers? I thought ILU
> is robust (and expensive) but it should be a first good choice.
No -- at least not with the default settings. For high-Re cases, you
need to fill more off-diagonal entries in the ILU for it to be good.
There is a recent discussion on exactly this issue on the mailing list.
> As a second approach, I used a direct solver (SparseDirectUMFPACK) for
> the convection-diffusion matrix like in step-57. In this case, the issue
> with GMRES and ILU do not occur. Then, the FGMRES method converges for
> moderate Reynolds numbers of Re=200. However, for Re=400 convergence is
> not achieved anymore. I guess this is due to the bad approximation of
> the Schur complement by the pressure mass matrix. In step-57, using the
> pressure mass matrix somehow also works when solving the system for
> higher Reynolds numbers. Is this due to the Augmented Lagrange approach?
Probably.