This commit is contained in:
Benoît Sierro
2021-08-20 14:46:59 +02:00
parent 2758e4ade8
commit 7f21f18786
7 changed files with 19 additions and 17 deletions

View File

@@ -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 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 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 max degree of the Taylor polynomial fitting the dispersion data

View File

@@ -26,7 +26,7 @@ default_parameters = dict(
tolerated_error=1e-11, tolerated_error=1e-11,
lower_wavelength_interp_limit=100e-9, lower_wavelength_interp_limit=100e-9,
upper_wavelength_interp_limit=2000e-9, upper_wavelength_interp_limit=2000e-9,
interp_degree=8, interpolation_degree=8,
ideal_gas=False, ideal_gas=False,
recovery_last_stored=0, recovery_last_stored=0,
) )

View File

@@ -241,7 +241,7 @@ class Config(BareConfig):
"repeat", "repeat",
"lower_wavelength_interp_limit", "lower_wavelength_interp_limit",
"upper_wavelength_interp_limit", "upper_wavelength_interp_limit",
"interp_degree", "interpolation_degree",
"ideal_gas", "ideal_gas",
"recovery_last_stored", "recovery_last_stored",
]: ]:
@@ -701,7 +701,7 @@ def build_sim_grid_in_place(params: BareParams):
params.length, params.length,
params.z_num, params.z_num,
params.wavelength, params.wavelength,
params.interp_degree, params.interpolation_degree,
params.time_window, params.time_window,
params.t_num, params.t_num,
params.dt, params.dt,

View File

@@ -674,9 +674,7 @@ def compute_custom_A_eff(params: BareParams) -> np.ndarray:
data = np.load(params.A_eff_file) data = np.load(params.A_eff_file)
A_eff = data["A_eff"] A_eff = data["A_eff"]
wl = data["wavelength"] wl = data["wavelength"]
return interp1d( return interp1d(wl, A_eff, fill_value=1, bounds_error=False)(params.l)
wl, A_eff, fill_value=(A_eff[wl.argmin()], A_eff[wl.argmax()]), bounds_error=False
)(params.l)
def compute_loss(params: BareParams) -> Optional[np.ndarray]: 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.w0,
params.interp_range, params.interp_range,
material_dico, material_dico,
params.interp_degree, params.interpolation_degree,
) )
else: else:
beta2 = HCPCF_dispersion( 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 += plasma_dispersion(lambda_, params.plasma_density)
beta2_coef = dispersion_coefficients( 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: if gamma is None:

View File

@@ -13,7 +13,6 @@ from ..errors import IncompleteDataFolderError
from ..logger import get_logger from ..logger import get_logger
from . import pulse from . import pulse
from .fiber import create_non_linear_op, fast_dispersion_op from .fiber import create_non_linear_op, fast_dispersion_op
from scgenerator.physics import fiber
try: try:
import ray import ray
@@ -105,22 +104,22 @@ class RK4IP:
if "raman" in self.behaviors and self.alpha is not None: if "raman" in self.behaviors and self.alpha is not None:
self.logger.debug("Conserved quantity : photon number with loss") self.logger.debug("Conserved quantity : photon number with loss")
self.conserved_quantity_func = lambda spectrum, h: pulse.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: elif "raman" in self.behaviors:
self.logger.debug("Conserved quantity : photon number without loss") self.logger.debug("Conserved quantity : photon number without loss")
self.conserved_quantity_func = lambda spectrum, h: pulse.photon_number( 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: elif self.alpha is not None:
self.logger.debug("Conserved quantity : energy with loss") self.logger.debug("Conserved quantity : energy with loss")
self.conserved_quantity_func = lambda spectrum, h: pulse.pulse_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: else:
self.logger.debug("Conserved quantity : energy without loss") self.logger.debug("Conserved quantity : energy without loss")
self.conserved_quantity_func = lambda spectrum, h: pulse.pulse_energy( self.conserved_quantity_func = lambda spectrum, h: pulse.pulse_energy(
spectrum, self.dw self.C_to_A_factor * spectrum, self.dw
) )
else: else:
self.conserved_quantity_func = lambda spectrum, h: 0.0 self.conserved_quantity_func = lambda spectrum, h: 0.0

View File

@@ -6,6 +6,7 @@ scgenerator module but some function may be used in any python program
import itertools import itertools
import multiprocessing import multiprocessing
import os
import random import random
import re import re
import threading import threading
@@ -39,6 +40,7 @@ class PBars:
) -> "PBars": ) -> "PBars":
self.id = random.randint(100000, 999999) self.id = random.randint(100000, 999999)
self.width = os.get_terminal_size().columns
if isinstance(task, abc.Iterable): if isinstance(task, abc.Iterable):
self.iterator: Iterable[T_] = iter(task) self.iterator: Iterable[T_] = iter(task)
@@ -58,13 +60,14 @@ class PBars:
) )
if "print" not in env.pbar_policy(): if "print" not in env.pbar_policy():
head_kwargs["file"] = worker_kwargs["file"] = StringIO() head_kwargs["file"] = worker_kwargs["file"] = StringIO()
self.width = 80
head_kwargs["desc"] = desc 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): for i in range(1, num_sub_bars + 1):
kwargs = {k: v for k, v in worker_kwargs.items()} kwargs = {k: v for k, v in worker_kwargs.items()}
if "desc" in kwargs: if "desc" in kwargs:
kwargs["desc"] = kwargs["desc"].format(worker_id=i) 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.print_path = Path(f"progress {self.pbars[0].desc} {self.id}").resolve()
self.close_ev = threading.Event() self.close_ev = threading.Event()
if "file" in self.policy: if "file" in self.policy:

View File

@@ -282,11 +282,13 @@ valid_variable = {
"wavelength", "wavelength",
"intensity_noise", "intensity_noise",
"width", "width",
"t0",
"soliton_num", "soliton_num",
"behaviors", "behaviors",
"raman_type", "raman_type",
"tolerated_error", "tolerated_error",
"step_size", "step_size",
"interpolation_degree",
"ideal_gas", "ideal_gas",
} }
@@ -379,7 +381,7 @@ class BareParams:
step_size: float = Parameter(positive(float, int)) step_size: float = Parameter(positive(float, int))
lower_wavelength_interp_limit: float = Parameter(in_range_incl(100e-9, 3000e-9)) 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)) 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) prev_sim_dir: str = Parameter(string)
recovery_last_stored: int = Parameter(non_negative(int)) recovery_last_stored: int = Parameter(non_negative(int))
worker_num: int = Parameter(positive(int)) worker_num: int = Parameter(positive(int))