experiments/laser_and_mirrors.py

changeset 1
a4137aedcb3a
child 3
c3a4f4bb87f7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/experiments/laser_and_mirrors.py	Thu Feb 26 09:32:12 2026 -0500
@@ -0,0 +1,38 @@
+#
+# Laser and mirrors convection-diffusion experiment with known diffusivity and convectivity
+#
+import laser_and_mirrors_aux
+from measures import DiscreteMeasure_2_f64
+from pointsource_pde import Problem, RegTerm
+from pointsource_pde.compose import (
+    ComposeFnWithOperator,
+    InjectSecond,
+)
+
+# Give name to the problem
+name = "laser_and_mirrors"
+
+# Override algorithm settings
+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
+    )
+
+    μ0 = DiscreteMeasure_2_f64([])
+
+    reg = RegTerm.NonnegRadon(
+        10e-7  # 5e-7  # 3e-7
+    )
+
+    dat_simple = ComposeFnWithOperator(dat, InjectSecond(auxtrue), xbound=μ_bound)
+    dat_simple.curvature_bound_components = lambda: (None, None)
+    print("Initial value:", dat_simple.apply(μ0))
+    print("Value at true μ:", dat_simple.apply(μ_true))
+
+    return Problem(
+        dataterm=dat_simple, regterm=reg, μinit=μ0, plot_factory=plot_factory
+    )

mercurial