experiments/laser_and_mirrors.py

Wed, 07 Oct 2026 08:02:41 -0500

author
Tuomo Valkonen <tuomov@iki.fi>
date
Wed, 07 Oct 2026 08:02:41 -0500
changeset 17
354747ed506c
parent 12
a0d61ac3719e
permissions
-rw-r--r--

Bump version

1
a4137aedcb3a Initial working version for known convectivity and diffusivity
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
1 #
a4137aedcb3a Initial working version for known convectivity and diffusivity
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
2 # Laser and mirrors convection-diffusion experiment with known diffusivity and convectivity
a4137aedcb3a Initial working version for known convectivity and diffusivity
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
3 #
a4137aedcb3a Initial working version for known convectivity and diffusivity
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
4 import laser_and_mirrors_aux
12
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
5 import numpy as np
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
6 from laser_and_mirrors_aux import generic_setup, reg_params
1
a4137aedcb3a Initial working version for known convectivity and diffusivity
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
7 from measures import DiscreteMeasure_2_f64
a4137aedcb3a Initial working version for known convectivity and diffusivity
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
8 from pointsource_pde import Problem, RegTerm
a4137aedcb3a Initial working version for known convectivity and diffusivity
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
9 from pointsource_pde.compose import (
a4137aedcb3a Initial working version for known convectivity and diffusivity
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
10 ComposeFnWithOperator,
a4137aedcb3a Initial working version for known convectivity and diffusivity
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
11 InjectSecond,
a4137aedcb3a Initial working version for known convectivity and diffusivity
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
12 )
a4137aedcb3a Initial working version for known convectivity and diffusivity
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
13
a4137aedcb3a Initial working version for known convectivity and diffusivity
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
14 # Give name to the problem
a4137aedcb3a Initial working version for known convectivity and diffusivity
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
15 name = "laser_and_mirrors"
a4137aedcb3a Initial working version for known convectivity and diffusivity
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
16
a4137aedcb3a Initial working version for known convectivity and diffusivity
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
17 # Override algorithm settings
a4137aedcb3a Initial working version for known convectivity and diffusivity
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
18 algorithm_overrides = laser_and_mirrors_aux.algorithm_overrides
a4137aedcb3a Initial working version for known convectivity and diffusivity
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
19
a4137aedcb3a Initial working version for known convectivity and diffusivity
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
20
12
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
21 # Setup the problem
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
22 def setup(
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
23 prefix,
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
24 alpha=reg_params["alpha"],
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 ):
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
32 rng = np.random.default_rng(seed=seed)
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
33
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
34 dat, auxtrue, aux0, _μ_bound, μ_true, plot_factory, pde = generic_setup(
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
35 prefix,
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
36 rng=rng,
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
37 c_noise=c_noise,
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
38 k_noise=k_noise,
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
39 noise=noise,
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
40 sim_oversample=sim_oversample,
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
41 sim_oversample_time=sim_oversample_time,
1
a4137aedcb3a Initial working version for known convectivity and diffusivity
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
42 )
a4137aedcb3a Initial working version for known convectivity and diffusivity
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
43
12
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
44 reg = RegTerm.NonnegRadon(alpha)
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
45
1
a4137aedcb3a Initial working version for known convectivity and diffusivity
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
46 μ0 = DiscreteMeasure_2_f64([])
a4137aedcb3a Initial working version for known convectivity and diffusivity
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
47
3
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents: 1
diff changeset
48 dat_simple = ComposeFnWithOperator(dat, InjectSecond(auxtrue))
12
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
49 dat_simple.curvature_bound_components = lambda: (None, None, None)
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
50 dat_simple.override_lipschitz = 1.0
10
0c9e19020217 Update to pointsource_algs 3-part curvature_bound_components
Tuomo Valkonen <tuomov@iki.fi>
parents: 3
diff changeset
51
3
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents: 1
diff changeset
52 print("Initial data term value:", dat_simple.apply(μ0))
c3a4f4bb87f7 Dolfin update, fixes, additional experiment, build instructions.
Tuomo Valkonen <tuomov@iki.fi>
parents: 1
diff changeset
53 print("Data term value at true μ:", dat_simple.apply(μ_true))
1
a4137aedcb3a Initial working version for known convectivity and diffusivity
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
54
a4137aedcb3a Initial working version for known convectivity and diffusivity
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
55 return Problem(
12
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
56 dat_simple,
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
57 reg,
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
58 None,
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
59 None,
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
60 μ0,
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
61 plot_factory=plot_factory,
a0d61ac3719e Various revisions:
Tuomo Valkonen <tuomov@iki.fi>
parents: 10
diff changeset
62 domain=pde.domain_dims,
1
a4137aedcb3a Initial working version for known convectivity and diffusivity
Tuomo Valkonen <tuomov@iki.fi>
parents:
diff changeset
63 )

mercurial