This PR aims to check the eigenvalues with the LAPACK full matrix. I was curious about the eigenvalue distribution and those indeed looked interesting:
This indicates that there is indeed a large contribution coming from exactly the edge between the unknowns. Here is an excerpt of the eigenvalues (I list the smallest eigenvalue and the three largest):
By the way, the estimation of the largest eigenvalue is pretty accurate, if we take away that factor 1.2 that the Chebyshev iteration adds. The interesting observation here is that we have essentially one single eigenvalue that grows large, all others are around 2 at the value where we would expect them for a diagonal approximation. This indicates that there is an underlying mechanism that one could understand.
To further analyze the method, I suspected that just doing a block-diagonal smoother would cure the problem. I imitated this by adding off-diagonal terms to those dofs that sit at the interface. Due to constraints, most of those are still diagonal, and only the actual unknowns are present. This gives me back what is otherwise the second largest eigenvalues (approximately):
and the eigenvalue distribution is really nice:
I did not yet introduce the collection to the right place because I wanted to understand the underlying mathematics, but I think this gives us a good overview.
This PR aims to check the eigenvalues with the LAPACK full matrix. I was curious about the eigenvalue distribution and those indeed looked interesting: This indicates that there is indeed a large contribution coming from exactly the edge between the unknowns. Here is an excerpt of the eigenvalues (I list the smallest eigenvalue and the three largest):
By the way, the estimation of the largest eigenvalue is pretty accurate, if we take away that factor 1.2 that the Chebyshev iteration adds. The interesting observation here is that we have essentially one single eigenvalue that grows large, all others are around 2 at the value where we would expect them for a diagonal approximation. This indicates that there is an underlying mechanism that one could understand. To further analyze the method, I suspected that just doing a block-diagonal smoother would cure the problem. I imitated this by adding off-diagonal terms to those dofs that sit at the interface. Due to constraints, most of those are still diagonal, and only the actual unknowns are present. This gives me back what is otherwise the second largest eigenvalues (approximately): and the eigenvalue distribution is really nice:
I did not yet introduce the collection to the right place because I wanted to understand the underlying mathematics, but I think this gives us a good overview.