diff --git a/README.md b/README.md index 4b39128..7979057 100644 --- a/README.md +++ b/README.md @@ -249,5 +249,5 @@ upper_wavelength_interp_limit: float sets the lowest end of this range. If the set value is higher than the higher end of the wavelength window, it is lowered down to that point. default : 1900e-9 -interp_degree: int +interpolation_degree: int max degree of the Taylor polynomial fitting the dispersion data diff --git a/src/scgenerator/defaults.py b/src/scgenerator/defaults.py index c568efd..d3fed53 100644 --- a/src/scgenerator/defaults.py +++ b/src/scgenerator/defaults.py @@ -26,7 +26,7 @@ default_parameters = dict( tolerated_error=1e-11, lower_wavelength_interp_limit=100e-9, upper_wavelength_interp_limit=2000e-9, - interp_degree=8, + interpolation_degree=8, ideal_gas=False, recovery_last_stored=0, ) diff --git a/src/scgenerator/initialize.py b/src/scgenerator/initialize.py index 1376500..423390f 100644 --- a/src/scgenerator/initialize.py +++ b/src/scgenerator/initialize.py @@ -241,7 +241,7 @@ class Config(BareConfig): "repeat", "lower_wavelength_interp_limit", "upper_wavelength_interp_limit", - "interp_degree", + "interpolation_degree", "ideal_gas", "recovery_last_stored", ]: @@ -701,7 +701,7 @@ def build_sim_grid_in_place(params: BareParams): params.length, params.z_num, params.wavelength, - params.interp_degree, + params.interpolation_degree, params.time_window, params.t_num, params.dt, diff --git a/src/scgenerator/physics/fiber.py b/src/scgenerator/physics/fiber.py index 7e2384f..5cfecc6 100644 --- a/src/scgenerator/physics/fiber.py +++ b/src/scgenerator/physics/fiber.py @@ -674,9 +674,7 @@ def compute_custom_A_eff(params: BareParams) -> np.ndarray: data = np.load(params.A_eff_file) A_eff = data["A_eff"] wl = data["wavelength"] - return interp1d( - wl, A_eff, fill_value=(A_eff[wl.argmin()], A_eff[wl.argmax()]), bounds_error=False - )(params.l) + return interp1d(wl, A_eff, fill_value=1, bounds_error=False)(params.l) def compute_loss(params: BareParams) -> Optional[np.ndarray]: @@ -750,7 +748,7 @@ def compute_dispersion(params: BareParams) -> tuple[np.ndarray, np.ndarray, tupl params.w0, params.interp_range, material_dico, - params.interp_degree, + params.interpolation_degree, ) else: beta2 = HCPCF_dispersion( @@ -781,7 +779,7 @@ def compute_dispersion(params: BareParams) -> tuple[np.ndarray, np.ndarray, tupl beta2 += plasma_dispersion(lambda_, params.plasma_density) beta2_coef = dispersion_coefficients( - lambda_, beta2, params.w0, params.interp_range, params.interp_degree + lambda_, beta2, params.w0, params.interp_range, params.interpolation_degree ) if gamma is None: diff --git a/src/scgenerator/physics/simulate.py b/src/scgenerator/physics/simulate.py index 9bf8175..3c7910c 100644 --- a/src/scgenerator/physics/simulate.py +++ b/src/scgenerator/physics/simulate.py @@ -13,7 +13,6 @@ from ..errors import IncompleteDataFolderError from ..logger import get_logger from . import pulse from .fiber import create_non_linear_op, fast_dispersion_op -from scgenerator.physics import fiber try: import ray @@ -105,22 +104,22 @@ class RK4IP: if "raman" in self.behaviors and self.alpha is not None: self.logger.debug("Conserved quantity : photon number with loss") self.conserved_quantity_func = lambda spectrum, h: pulse.photon_number_with_loss( - spectrum, self.w, self.dw, self.gamma, self.alpha, h + self.C_to_A_factor * spectrum, self.w, self.dw, self.gamma, self.alpha, h ) elif "raman" in self.behaviors: self.logger.debug("Conserved quantity : photon number without loss") self.conserved_quantity_func = lambda spectrum, h: pulse.photon_number( - spectrum, self.w, self.dw, self.gamma + self.C_to_A_factor * spectrum, self.w, self.dw, self.gamma ) elif self.alpha is not None: self.logger.debug("Conserved quantity : energy with loss") self.conserved_quantity_func = lambda spectrum, h: pulse.pulse_energy_with_loss( - spectrum, self.dw, self.alpha, h + self.C_to_A_factor * spectrum, self.dw, self.alpha, h ) else: self.logger.debug("Conserved quantity : energy without loss") self.conserved_quantity_func = lambda spectrum, h: pulse.pulse_energy( - spectrum, self.dw + self.C_to_A_factor * spectrum, self.dw ) else: self.conserved_quantity_func = lambda spectrum, h: 0.0 diff --git a/src/scgenerator/utils/__init__.py b/src/scgenerator/utils/__init__.py index 9174153..183546b 100644 --- a/src/scgenerator/utils/__init__.py +++ b/src/scgenerator/utils/__init__.py @@ -6,6 +6,7 @@ scgenerator module but some function may be used in any python program import itertools import multiprocessing +import os import random import re import threading @@ -39,6 +40,7 @@ class PBars: ) -> "PBars": self.id = random.randint(100000, 999999) + self.width = os.get_terminal_size().columns if isinstance(task, abc.Iterable): self.iterator: Iterable[T_] = iter(task) @@ -58,13 +60,14 @@ class PBars: ) if "print" not in env.pbar_policy(): head_kwargs["file"] = worker_kwargs["file"] = StringIO() + self.width = 80 head_kwargs["desc"] = desc - self.pbars = [tqdm(total=self.num_tot, ncols=100, ascii=False, **head_kwargs)] + self.pbars = [tqdm(total=self.num_tot, ncols=self.width, ascii=False, **head_kwargs)] for i in range(1, num_sub_bars + 1): kwargs = {k: v for k, v in worker_kwargs.items()} if "desc" in kwargs: kwargs["desc"] = kwargs["desc"].format(worker_id=i) - self.append(tqdm(position=i, ncols=100, ascii=False, **kwargs)) + self.append(tqdm(position=i, ncols=self.width, ascii=False, **kwargs)) self.print_path = Path(f"progress {self.pbars[0].desc} {self.id}").resolve() self.close_ev = threading.Event() if "file" in self.policy: diff --git a/src/scgenerator/utils/parameter.py b/src/scgenerator/utils/parameter.py index dda2cf3..666be71 100644 --- a/src/scgenerator/utils/parameter.py +++ b/src/scgenerator/utils/parameter.py @@ -282,11 +282,13 @@ valid_variable = { "wavelength", "intensity_noise", "width", + "t0", "soliton_num", "behaviors", "raman_type", "tolerated_error", "step_size", + "interpolation_degree", "ideal_gas", } @@ -379,7 +381,7 @@ class BareParams: step_size: float = Parameter(positive(float, int)) lower_wavelength_interp_limit: float = Parameter(in_range_incl(100e-9, 3000e-9)) upper_wavelength_interp_limit: float = Parameter(in_range_incl(200e-9, 5000e-9)) - interp_degree: int = Parameter(positive(int)) + interpolation_degree: int = Parameter(positive(int)) prev_sim_dir: str = Parameter(string) recovery_last_stored: int = Parameter(non_negative(int)) worker_num: int = Parameter(positive(int))