Source code for Mordicus.Modules.Safran.BasicAlgorithms.EIM

# -*- coding: utf-8 -*-
import os
from mpi4py import MPI
if MPI.COMM_WORLD.Get_size() > 1:# pragma: no cover
    os.environ["OMP_NUM_THREADS"] = "1"
    os.environ["OPENBLAS_NUM_THREADS"] = "1"
    os.environ["MKL_NUM_THREADS"] = "1"
    os.environ["VECLIB_MAXIMUM_THREADS"] = "1"
    os.environ["NUMEXPR_NUM_THREADS"] = "1"
import scipy.linalg as sla


[docs]def QDEIM(basis): """ Generate empirical sample entries using the Q-DEIM algorithm [1]. Parameters ---------- basis : array-like An orthonormal multivector. Returns ------- ndarray of ints An 1-d array containing the sample entries. Notes ----- A multivector is an (n, N)-array where n is the number of vectors and N the numbers of dofs. References ---------- [1] Z. Drmac and S. Gugercin. A New Selection Operator for the Discrete Empirical Interpolation Method : Improved a priori error bound and extensions, 2015. URL: http://arxiv.org/abs/1505.00370. """ Q, R, P = sla.qr(basis, pivoting=True) return P[:basis.shape[0]]
if __name__ == "__main__":# pragma: no cover from Mordicus import RunTestFile RunTestFile(__file__)