config sequence as parameters

This commit is contained in:
Benoît Sierro
2021-07-19 10:06:52 +02:00
parent 63835b6e05
commit bca0f80925
4 changed files with 25 additions and 7 deletions

View File

@@ -657,7 +657,12 @@ def PCF_dispersion(lambda_, pitch, ratio_d, w0=None, n2=None, A_eff=None):
def compute_loss(params: BareParams) -> Optional[np.ndarray]: def compute_loss(params: BareParams) -> Optional[np.ndarray]:
if params.loss == "capillary": if params.loss_file is not None:
loss_data = np.load(params.loss_file)
wl = loss_data["wavelength"]
loss = loss_data["loss"]
return interp1d(wl, loss, fill_value=0, bounds_error=False)(params.l)
elif params.loss == "capillary":
mask = params.l < params.upper_wavelength_interp_limit mask = params.l < params.upper_wavelength_interp_limit
alpha = capillary_loss(params.l[mask], params.he_mode, params.core_radius) alpha = capillary_loss(params.l[mask], params.he_mode, params.core_radius)
out = np.zeros_like(params.l) out = np.zeros_like(params.l)

View File

@@ -3,7 +3,7 @@ import os
import random import random
from datetime import datetime from datetime import datetime
from pathlib import Path from pathlib import Path
from typing import Dict, List, Tuple, Type from typing import Dict, List, Tuple, Type, Union
import numpy as np import numpy as np
@@ -679,6 +679,15 @@ def run_simulation_sequence(
method=None, method=None,
prev_sim_dir: os.PathLike = None, prev_sim_dir: os.PathLike = None,
): ):
config_files = list(config_files)
if len(config_files) == 1:
while True:
conf = io.load_toml(config_files[0])
if (prev := conf.get("previous_config_file")) is not None:
config_files.insert(0, prev)
else:
break
prev = prev_sim_dir prev = prev_sim_dir
for config_file in config_files: for config_file in config_files:
sim = new_simulation(config_file, prev, method) sim = new_simulation(config_file, prev, method)
@@ -694,12 +703,14 @@ def run_simulation_sequence(
def new_simulation( def new_simulation(
config_file: os.PathLike, config: Union[dict, os.PathLike],
prev_sim_dir=None, prev_sim_dir=None,
method: Type[Simulations] = None, method: Type[Simulations] = None,
) -> Simulations: ) -> Simulations:
if isinstance(config, dict):
config_dict = io.load_toml(config_file) config_dict = config
else:
config_dict = io.load_toml(config)
logger = get_logger(__name__) logger = get_logger(__name__)
if prev_sim_dir is not None: if prev_sim_dir is not None:

View File

@@ -455,7 +455,7 @@ def plot_results_2D(
plt_range: Union[units.PlotRange, tuple], plt_range: Union[units.PlotRange, tuple],
params: BareParams, params: BareParams,
log: Union[int, float, bool, str] = "1D", log: Union[int, float, bool, str] = "1D",
skip: int = 16, skip: int = 1,
vmin: float = None, vmin: float = None,
vmax: float = None, vmax: float = None,
transpose: bool = False, transpose: bool = False,

View File

@@ -315,12 +315,14 @@ class BareParams:
# root # root
name: str = Parameter(string) name: str = Parameter(string)
prev_data_dir: str = Parameter(string) prev_data_dir: str = Parameter(string)
previous_config_file:str = Parameter(string)
# # fiber # # fiber
input_transmission: float = Parameter(in_range_incl(0, 1)) input_transmission: float = Parameter(in_range_incl(0, 1))
gamma: float = Parameter(non_negative(float, int)) gamma: float = Parameter(non_negative(float, int))
n2: float = Parameter(non_negative(float, int)) n2: float = Parameter(non_negative(float, int))
loss: str = Parameter(literal("capillary")) loss: str = Parameter(literal("capillary"))
loss_file: str = Parameter(string)
effective_mode_diameter: float = Parameter(positive(float, int)) effective_mode_diameter: float = Parameter(positive(float, int))
A_eff: float = Parameter(non_negative(float, int)) A_eff: float = Parameter(non_negative(float, int))
pitch: float = Parameter(in_range_excl(0, 1e-3)) pitch: float = Parameter(in_range_excl(0, 1e-3))
@@ -371,7 +373,7 @@ class BareParams:
z_num: int = Parameter(positive(int)) z_num: int = Parameter(positive(int))
time_window: float = Parameter(positive(float, int)) time_window: float = Parameter(positive(float, int))
dt: float = Parameter(in_range_excl(0, 5e-15)) dt: float = Parameter(in_range_excl(0, 5e-15))
tolerated_error: float = Parameter(in_range_excl(1e-15, 1e-5)) tolerated_error: float = Parameter(in_range_excl(1e-15, 1e-3))
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))