LLNL / libROM

Model reduction library with an emphasis on large scale parallelism and linear subspace methods
https://www.librom.net
Other
198 stars 36 forks source link

StaticSVD supports for transposed SVD + minor fixes on SVD classes #224

Closed dreamer2368 closed 1 year ago

dreamer2368 commented 1 year ago

StaticSVD supports the transposed SVD operation

Minor capability updates

Minor fixes on StaticSVD / RandomizedSVD

This is related to the issue #223 . This update may have a potential impact on the previous implementation.

The notation here refers to a svd operation A = U * S * V^T with the snapshot matrix A of size (m, n) and p number of svd modes.

  1. So far the size of d_basis_right is set to (p, n), which corresponds to the size of V^T. However, the actual content of d_basis_right in fact corresponds to V, not V^T, so its size should be (n, p). This is fixed in StaticSVD::computeSVD and RandomizedSVD::computeSVD.
  2. Per discussion in #223 , RandomizedSVD::computeSVD always keeps d_basis distributed and d_basis_right not distributed, whether transposed or not. If smaller subspace dimension is used, then d_basis is distributed according to its own size.

Minor update on Docker container