Don't use eigenvectors as initial guess for constrained agglomerates #218
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
@masterleinad @aprokop With this PR, we don't reuse the eigenvectors as initial guess for the eigensolver if the agglomerate is on the boundary. If the agglomerate is inside the domain but the initial guess is from a boundary eigenvectors, we add the non-zero entries. This particular implementation only works for matrix-free so I couldn't really test it but I tested something very close that worked with matrix. The good news is that the convergence rate matches the convergence rate when we are not using an initial guess. So I would expect that the difference in the number of CG iterations disappear. However, in the test the meshes are very small so a very large number of agglomerates are on the boundary. Thus, there are very few agglomerates that actually use the initial guess. I can create a version that works also on matrix-based problems. Basically the difference is that we don't have access to the
constraints
to know if the agglomerate is on the boundary. In that case, we need to go through the initial guess vector and check if an entry has been set to zero.