new Poly op that accepts coefficients directly
This commit is contained in:
@@ -13,7 +13,6 @@ import numpy as np
|
|||||||
from scipy.interpolate import interp1d
|
from scipy.interpolate import interp1d
|
||||||
|
|
||||||
from . import math
|
from . import math
|
||||||
from .errors import OperatorError
|
|
||||||
from .logger import get_logger
|
from .logger import get_logger
|
||||||
from .physics import fiber, materials, pulse, units
|
from .physics import fiber, materials, pulse, units
|
||||||
from .utils import load_material_dico
|
from .utils import load_material_dico
|
||||||
@@ -415,21 +414,13 @@ class ConstantPolyDispersion(AbstractDispersion):
|
|||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
w_for_disp: np.ndarray,
|
beta2_coefficients: np.ndarray,
|
||||||
beta2_arr: np.ndarray,
|
|
||||||
w0: float,
|
|
||||||
w_c: np.ndarray,
|
w_c: np.ndarray,
|
||||||
interpolation_degree: int,
|
|
||||||
):
|
):
|
||||||
if interpolation_degree < 1:
|
|
||||||
raise OperatorError(
|
|
||||||
f"interpolation degree of degree {interpolation_degree} incompatible"
|
|
||||||
)
|
|
||||||
coefs = fiber.dispersion_coefficients(w_for_disp, beta2_arr, w0, interpolation_degree)
|
|
||||||
w_power_fact = np.array(
|
w_power_fact = np.array(
|
||||||
[math.power_fact(w_c, k) for k in range(2, interpolation_degree + 3)]
|
[math.power_fact(w_c, k) for k in range(2, len(beta2_coefficients) + 2)]
|
||||||
)
|
)
|
||||||
self.disp_arr = fiber.fast_poly_dispersion_op(w_c, coefs, w_power_fact)
|
self.disp_arr = fiber.fast_poly_dispersion_op(w_c, beta2_coefficients, w_power_fact)
|
||||||
|
|
||||||
def __call__(self, state: CurrentState = None) -> np.ndarray:
|
def __call__(self, state: CurrentState = None) -> np.ndarray:
|
||||||
return self.disp_arr
|
return self.disp_arr
|
||||||
|
|||||||
Reference in New Issue
Block a user