pymor icon indicating copy to clipboard operation
pymor copied to clipboard

Should we add Vector Sanitizers to Gram-Schmidt process

Open andreasbuhr opened this issue 8 years ago • 2 comments

Hi there,

The problem: I often do run into the situation that I want to orthogonalize a bunch of vectors which are in a subspace of the full FEM space. For example, vectors having mean value zero. As a second example, in the method "ArbiLoMod", we have vectors wherein one part (the "extension") is calculated by applying a linear operator to another part. Often, this property deteriorates during the Gram-Schmidt process: When one starts with nearly linear dependent vectors, numerical noise is amplified during the Gram-Schmidt process. This numerical noise is not in the subspace and the resulting vector is not in the subspace.

The solution: I would suggest to add an optional option "sanitizer" to the Gram-Schmidt process, which is a callable which brings the vectors back into the subspace. The Gram-Schmidt algorithm should apply this sanitizer after steps which amplify numerical noise.

What are your opinions?

andreasbuhr avatar Feb 13 '17 16:02 andreasbuhr

Sounds nice! While we are at it, we might think about a somewhat more generic hook system. (Although I do not have another real application in mind, however.)

sdrave avatar Feb 13 '17 20:02 sdrave

Right now, I cannot remember what I had in mind with this 'hook system'. So, if you have some code lying around, @andreasbuhr, a PR is very welcome.

sdrave avatar May 08 '17 13:05 sdrave