misc
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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))
|
||||||
|
|||||||
Reference in New Issue
Block a user