Page MenuHomec4science

pade_utils.py
No OneTemporary

File Metadata

Created
Fri, Apr 26, 19:14

pade_utils.py

# Copyright (C) 2018 by the RROMPy authors
#
# This file is part of RROMPy.
#
# RROMPy is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# RROMPy is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with RROMPy. If not, see <http://www.gnu.org/licenses/>.
#
import numpy as np
from rrompy.utilities.base.types import Np1D, Np2D, Tuple
from rrompy.utilities.warning_manager import warn
def checkRobustTolerance(ev:Np1D, E:int, tol:float) -> dict:
N = len(ev) - 1
ts = tol * np.linalg.norm(ev)
diff = N - np.sum(np.abs(ev) >= ts)
if diff <= 0: return {}
Enew = E - diff
Nnew = min(N, Enew)
if Nnew == N:
strN = ""
else:
strN = "N from {} to {} and ".format(N, Nnew)
warn(("Smallest {} eigenvalues below tolerance.\nReducing {}E from {} to "
"{}.").format(diff + 1, strN, E, Enew))
newParameters = {"N" : Nnew, "E" : Enew}
return newParameters

Event Timeline