27
27
from qmat .qcoeff .collocation import Collocation
28
28
29
29
30
+ def check (k ):
31
+ """Utility function to check k parameter for k-dependent generators"""
32
+ if k is None : k = 1
33
+ if k < 1 :
34
+ raise ValueError (f"k must be greater than 0 ({ k } )" )
35
+ return k
36
+
37
+
30
38
@register
31
39
class MIN (QDeltaGenerator ):
32
40
"""Naive diagonal coefficients based on spectral radius optimization."""
@@ -251,9 +259,7 @@ class MIN_SR_FLEX(MIN_SR_S):
251
259
aliases = ["MIN-SR-FLEX" ]
252
260
253
261
def computeQDelta (self , k = 1 ):
254
- if k is None : k = 1
255
- if k < 1 :
256
- raise ValueError (f"k must be greater than 0 ({ k } )" )
262
+ k = check (k )
257
263
if k <= self .size :
258
264
return np .diag (self .coll .nodes / k )
259
265
else :
@@ -270,18 +276,18 @@ class Jumper(MIN_SR_NS):
270
276
271
277
aliases = ["JUMPER" , "FB" ]
272
278
273
- def computeQDelta (self , k = None ):
274
- if k is None : k = 1
279
+ def computeQDelta (self , k = 1 ):
280
+ k = check ( k )
275
281
return np .diag (self .nodes )/ (2 * k )
276
282
277
283
278
284
@register
279
285
class FlexJumper (Jumper ):
280
- """Diagonal coefficients allowing order jump while still maintining high stability"""
286
+ """Diagonal coefficients allowing order jump while still maintaining high stability"""
281
287
282
288
aliases = ["FLEX-JUMPER" , "FB2" ]
283
289
284
- def computeQDelta (self , k = None ):
285
- if k is None : k = 1
290
+ def computeQDelta (self , k = 1 ):
291
+ k = check ( k )
286
292
divider = 1 if k == 1 else 2 * (k - 1 )
287
293
return np .diag (self .nodes )/ divider
0 commit comments