simulations working

This commit is contained in:
Benoît Sierro
2021-10-20 12:23:58 +02:00
parent df9120e4d2
commit 717a7db84f
3 changed files with 16 additions and 9 deletions

View File

@@ -250,7 +250,10 @@ class Evaluator:
self.eval_stats[key].priority = priority
def validate_condition(self, rule: Rule) -> bool:
try:
return all(self.compute(k) == v for k, v in rule.conditions.items())
except (EvaluatorError, KeyError, NoDefaultError):
return False
def attempted_rules_str(self, target: str) -> str:
rules = ", ".join(str(r) for r in self.__failed_rules[target])
@@ -376,7 +379,7 @@ default_rules: list[Rule] = [
Rule("raman_op", operators.NoRaman, priorities=-1),
Rule("nonlinear_operator", operators.EnvelopeNonLinearOperator),
Rule("loss_op", operators.CustomConstantLoss, priorities=3),
Rule("loss_op", operators.CapillaryLoss, priorities=2),
Rule("loss_op", operators.CapillaryLoss, priorities=2, conditions=dict(loss="capillary")),
Rule("loss_op", operators.ConstantLoss, priorities=1),
Rule("loss_op", operators.NoLoss, priorities=-1),
Rule("dispersion_op", operators.ConstantPolyDispersion),

View File

@@ -253,8 +253,9 @@ class RK4IP:
step sized used
"""
keep = False
h_next_step = self.state.h
while not keep:
h = self.state.h
h = h_next_step
expD = np.exp(h / 2 * self.params.linear_operator(self.state))
@@ -274,19 +275,20 @@ class RK4IP:
progress_str = f"step {step} rejected with h = {h:.4e}, doing over"
self.logger.debug(progress_str)
keep = False
self.state.h = h / 2
h_next_step = h / 2
elif cons_qty_change_ok < curr_p_change <= 2 * cons_qty_change_ok:
keep = True
self.state.h = h / self.size_fac
h_next_step = h / self.size_fac
elif curr_p_change < 0.1 * cons_qty_change_ok:
keep = True
self.state.h = h * self.size_fac
h_next_step = h * self.size_fac
else:
keep = True
self.state.h = h
h_next_step = h
else:
keep = True
self.state = new_state
self.state.h = h_next_step
self.state.z += h
return h

View File

@@ -97,7 +97,6 @@ class ConfigFileParser:
if len(fiber_list) == 0:
raise ValueError(f"No fiber in config {self.path}")
final_path = loaded_config.get("name")
configs = []
for i, params in enumerate(fiber_list):
configs.append(loaded_config | params)
@@ -444,7 +443,10 @@ def combine_simulations(path: Path, dest: Path = None):
if p.is_dir():
paths[p.name.split()[1]].append(p)
for l in paths.values():
try:
l.sort(key=lambda el: re.search(r"(?<=num )[0-9]+", el.name)[0])
except ValueError:
pass
for pulses in paths.values():
new_path = dest / update_path_name(pulses[0].name)
os.makedirs(new_path, exist_ok=True)