Speaker
Description
pyMOR, a Python toolbox for building reduced order models, supports a variety of solver backends, such as dune-gdt, FEniCS, NGSolve, NumPy and potentially MPI distributed variants. An abstract interface, the VectorArray, is used to wrap vectors and matrices from these backends on which pyMOR's algorithms work. For compatibility reasons direct access of entries has to be avoided, which restricts possible algorithms.
Projection based methods used in model order reduction rely on a numerically stable QR decomposition, i.e. $A=QR$ for $A\in\mathbb{C}^{m\times n}, r=\text{rank}(A), Q\in\mathbb{C}^{m\times r}, R\in\mathbb{C}^{r\times n}$, where $A$ is "tall" and "skinny", i.e. $m\gg n$. The current implementation is a repeated modified Gram-Schmidt, which is numerically robust at the cost of high runtimes. In order to increase the performance promising algorithms from papers are implemented and quantified. The "classical Gram-Schmidt with normalization lag and re-orthogonalization lag" performs the best if only a few vectors have to be orthogonalized or have to be orthogonalized against an orthonormal basis. In contrast, the novel "shifted Cholesky QR" scales better for large $n$. Essential for this algorithm is the evaluation of the Gramian $X=A^TA$. In case the Gramian is not positive definite, a shift, based on its norm, has to be evaluated and applied onto the diagonal. The algorithm can compute good approximations even for high matrix condition numbers if the shift is recomputed in every iteration. Using symmetric eigenvalue solvers one can further decrease the runtime of the norm computation for large $n$.