diff --git a/src/scgenerator/evaluator.py b/src/scgenerator/evaluator.py index 95e9417..50c5086 100644 --- a/src/scgenerator/evaluator.py +++ b/src/scgenerator/evaluator.py @@ -465,7 +465,7 @@ default_rules: list[Rule] = [ Rule("w_num", len, ["w"]), Rule("dw", lambda w: w[1] - w[0]), Rule(["fft", "ifft"], utils.fft_functions, priorities=1), - Rule("wavelength_window", lambda dt: (max(100e-9, 2 * units.c * dt), 8e-6)), + Rule("wavelength_window", lambda dt, wavelength: (math.min_wl_from_dt(dt, wavelength), 8e-6)), Rule("wavelength_window", fiber.valid_wavelength_window), Rule("dispersion_ind", fiber.dispersion_indices), # Pulse diff --git a/src/scgenerator/math.py b/src/scgenerator/math.py index 5a72267..fd24f90 100644 --- a/src/scgenerator/math.py +++ b/src/scgenerator/math.py @@ -271,7 +271,11 @@ def iwspace(w: np.ndarray, retstep: bool = False): def dt_from_min_wl(wl_min: float, wavelength: float) -> float: - return 0.5 * 1 / c * 1 / (1 / wl_min - 1 / wavelength) + return 0.5 / c / (1 / wl_min - 1 / wavelength) + + +def min_wl_from_dt(dt: float, wavelength: float) -> float: + return wavelength / (1 + wavelength / (2 * c * dt)) def _dt_from_wl_window(wavelength_window: tuple[float, float], wavelength: float) -> float: diff --git a/tests/test_io_handlers.py b/tests/test_io_handlers.py index 036b605..f8d648c 100644 --- a/tests/test_io_handlers.py +++ b/tests/test_io_handlers.py @@ -20,7 +20,6 @@ PARAMS = dict( # fiber dispersion_file="./PM2000D_2 extrapolated 4 0.npz", effective_area_file="./PM2000D_A_eff_marcuse.npz", - wavelength_window=(400e-9, 4000e-9), n2=4.5e-20, # simulation raman_type="measured",