diff --git a/qmat/qdelta/min.py b/qmat/qdelta/min.py index 1abc746..ec3bc2f 100644 --- a/qmat/qdelta/min.py +++ b/qmat/qdelta/min.py @@ -262,3 +262,24 @@ def computeQDelta(self, k=1): except AttributeError: self._QDelta_MIN_SR_S = super().computeQDelta() return self._QDelta_MIN_SR_S + + +@register +class Jumper(MIN_SR_NS): + """Diagonal coefficients allowing order jump""" + + aliases = ["JUMPER", "FB"] + + def computeQDelta(self, k=None): + if k is None: k = 1 + return np.diag(self.nodes)/(2*k) + + +@register +class FlexJumper(Jumper): + """Diagonal coefficients allowing order jump while still maintining high stability""" + + def computeQDelta(self, k=None): + if k is None: k = 1 + divider = 1 if k == 1 else 2*(k-1) + return np.diag(self.nodes)/divider