pymor / pymor/pymor

Should we add Vector Sanitizers to Gram-Schmidt process

Open
#361 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
346
Forks
122
Avg merge
1d 11h
Merged PRs (30d)
32

Description

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?

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue names the Gram-Schmidt process and the ArbiLoMod vector relationship, but no file, test, or entry point. Locate the Gram-Schmidt implementation, determine where numerical noise is amplified, and clarify how an optional sanitizer should be applied; done means the behavior and expected subspace-preserving results are specified and tested.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend-api-design
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.