experiments/laser_and_mirrors_aux2.py

Wed, 07 Oct 2026 08:25:46 -0500

author
Tuomo Valkonen <tuomov@iki.fi>
date
Wed, 07 Oct 2026 08:25:46 -0500
changeset 18
ddd24b5c2715
parent 12
a0d61ac3719e
permissions
-rw-r--r--

Disable differential test

3
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
1 #
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
2 # Laser and mirrors convection-diffusion experiment with known diffusivity and convectivity.
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
3 # Alternative parametrisation
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
4 #
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
5 import laser_and_mirrors_aux
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
6 import numpy as np
12
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
7 from laser_and_mirrors_aux import generic_setup, reg_params
3
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
8 from measures import DiscreteMeasure_2_f64
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
9 from pointsource_pde import Problem, RegTerm
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
10 from pointsource_pde.convection_diffusion import BoxedQuadraticRegularisation
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
11
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
12 # Give name to the problem
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
13 name = "laser_and_mirrors_aux2"
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
14
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
15 # Override algorithm settings
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
16 algorithm_overrides = laser_and_mirrors_aux.algorithm_overrides
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
17
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
18
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
19 # Setup the problem
12
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
20 def setup(
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
21 prefix,
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
22 alpha=reg_params["alpha"],
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
23 alpha_k=reg_params["alpha_k"],
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
24 alpha_c=reg_params["alpha_c"],
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
25 c_noise=reg_params["c_noise"],
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
26 k_noise=reg_params["k_noise"],
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
27 noise=reg_params["noise"],
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
28 seed=reg_params["seed"],
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
29 sim_oversample=reg_params["sim_oversample"],
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
30 sim_oversample_time=reg_params["sim_oversample_time"],
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
31 true_init=False,
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
32 true_target=False,
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
33 scale_cstep=reg_params["scale_cstep"],
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
34 ):
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
35 rng = np.random.default_rng(seed=seed)
3
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
36
12
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
37 dat, auxtrue, aux0, _μ_bound, μ_true, plot_factory, pde = generic_setup(
3
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
38 prefix,
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
39 rng=rng,
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
40 μ_true=DiscreteMeasure_2_f64([([0.2, 0.3], 0.15), ([0.4, 0.1], 0.04)]),
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
41 k=0.02,
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
42 r=0.1,
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
43 θ=120 * np.pi / 180,
12
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
44 c_noise=c_noise,
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
45 k_noise=k_noise,
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
46 noise=noise,
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
47 sim_oversample=sim_oversample,
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
48 sim_oversample_time=sim_oversample_time,
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
49 scale_cstep=scale_cstep,
3
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
50 )
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
51
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
52 # Override Lipschitz parameter
12
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
53 dat.override_lipschitz = 1.0
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
54 dat.override_lipschitz_pair = (0.0, 0.0)
3
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
55 # print("diff_chain_lipschitz_factor (modified)", pde.diff_chain_lipschitz_factor())
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
56 # l1, l2 = pde.diff_chain_lipschitz_factor_pair()
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
57 # print("diff_chain_lipschitz_factor_pair (modified) ", l1, ", ", l2)
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
58
12
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
59 reg = RegTerm.NonnegRadon(alpha)
3
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
60
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
61 μ0 = DiscreteMeasure_2_f64([])
12
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
62
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
63 print("aux init ", aux0)
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
64 aux = BoxedQuadraticRegularisation(
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
65 (0.001, -1.0),
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
66 (1.0, 1.0),
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
67 (alpha_k, alpha_c),
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
68 auxtrue if true_target else aux0,
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
69 (1, scale_cstep) if scale_cstep is not None else None,
3
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
70 )
12
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
71 print("Initial value:", dat.apply((μ0, aux0)) + aux.apply(aux0))
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
72 print("Value at true μ:", dat.apply((μ_true, auxtrue)) + aux.apply(auxtrue))
3
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
73
12
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
74 return Problem(
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
75 dat,
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
76 reg,
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
77 aux,
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
78 auxtrue if true_init else aux0,
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
79 μ0,
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
80 plot_factory=plot_factory,
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
81 domain=pde.domain_dims,
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
82 )

mercurial