experiments/laser_and_mirrors.py

changeset 12
a0d61ac3719e
parent 10
0c9e19020217
--- a/experiments/laser_and_mirrors.py	Mon Jun 29 00:20:42 2026 +0300
+++ b/experiments/laser_and_mirrors.py	Sun Oct 04 13:02:26 2026 -0500
@@ -2,6 +2,8 @@
 # Laser and mirrors convection-diffusion experiment with known diffusivity and convectivity
 #
 import laser_and_mirrors_aux
+import numpy as np
+from laser_and_mirrors_aux import generic_setup, reg_params
 from measures import DiscreteMeasure_2_f64
 from pointsource_pde import Problem, RegTerm
 from pointsource_pde.compose import (
@@ -16,21 +18,46 @@
 algorithm_overrides = laser_and_mirrors_aux.algorithm_overrides
 
 
-# Setup routine
-def setup(prefix):
-    dat, auxtrue, _μ_bound, μ_true, plot_factory = laser_and_mirrors_aux.generic_setup(
-        prefix
+# Setup the problem
+def setup(
+    prefix,
+    alpha=reg_params["alpha"],
+    c_noise=reg_params["c_noise"],
+    k_noise=reg_params["k_noise"],
+    noise=reg_params["noise"],
+    seed=reg_params["seed"],
+    sim_oversample=reg_params["sim_oversample"],
+    sim_oversample_time=reg_params["sim_oversample_time"],
+):
+    rng = np.random.default_rng(seed=seed)
+
+    dat, auxtrue, aux0, _μ_bound, μ_true, plot_factory, pde = generic_setup(
+        prefix,
+        rng=rng,
+        c_noise=c_noise,
+        k_noise=k_noise,
+        noise=noise,
+        sim_oversample=sim_oversample,
+        sim_oversample_time=sim_oversample_time,
     )
 
+    reg = RegTerm.NonnegRadon(alpha)
+
     μ0 = DiscreteMeasure_2_f64([])
 
-    reg = RegTerm.NonnegRadon(1.5e-6)
-
     dat_simple = ComposeFnWithOperator(dat, InjectSecond(auxtrue))
+    dat_simple.curvature_bound_components = lambda: (None, None, None)
+    dat_simple.override_lipschitz = 1.0
 
     print("Initial data term value:", dat_simple.apply(μ0))
     print("Data term value at true μ:", dat_simple.apply(μ_true))
 
     return Problem(
-        dataterm=dat_simple, regterm=reg, μinit=μ0, plot_factory=plot_factory
+        dat_simple,
+        reg,
+        None,
+        None,
+        μ0,
+        plot_factory=plot_factory,
+        domain=pde.domain_dims,
     )

mercurial