Compare commits

..

4 Commits

Author SHA1 Message Date
137c5a89dd
Add plots 2023-12-19 16:09:43 +01:00
2b68e98dd1
Create scripts for plotting 2023-12-19 16:09:28 +01:00
f1a4cf4a24
Make some changes 2023-12-19 16:08:58 +01:00
aebc76f389
Data generated by the program 2023-12-19 16:08:35 +01:00
18 changed files with 529 additions and 395 deletions

File diff suppressed because one or more lines are too long

View File

@ -1,320 +1,320 @@
0,1,1
1,1,1
2,1,1
3,1,1
4,1,1
5,1,1
6,1,1
7,1,1
8,1,1
9,1,1
10,1,1
11,1,1
12,1,1
13,1,1
14,1,1
15,1,1
16,1,1
17,1,1
18,1,1
19,1,1
20,1,1
21,1,1
22,1,1
23,1,1
24,1,1
25,1,1
26,1,1
27,1,1
28,1,1
29,1,1
30,1,1
31,1,1
32,1,1
33,1,1
34,1,1
35,1,1
36,1,1
37,1,1
38,1,1
39,1,1
40,1,1
41,1,1
42,1,1
43,1,1
44,1,1
45,1,1
46,1,1
47,1,1
48,1,1
49,1,1
50,1,1
51,1,1
52,1,1
53,1,1
54,1,1
55,1,1
56,1,1
57,1,1
58,1,1
59,1,1
60,1,1
61,1,1
62,1,1
63,1,1
64,1,1
65,1,1
66,1,1
67,1,1
68,1,1
69,1,1
70,1,1
71,1,1
72,1,1
73,1,1
74,1,1
75,1,1
76,1,1
77,1,1
78,1,1
79,1,1
80,1,1
81,1,1
82,1,1
83,1,1
84,1,1
85,1,1
86,1,1
87,1,1
88,1,1
89,1,1
90,1,1
91,1,1
92,1,1
93,1,1
94,1,1
95,1,1
96,1,1
97,1,1
98,1,1
99,1,1
100,1,1
101,1,1
102,1,1
103,1,1
104,1,1
105,1,1
106,1,1
107,1,1
108,1,1
109,1,1
110,1,1
111,1,1
112,1,1
113,1,1
114,1,1
115,1,1
116,1,1
117,1,1
118,1,1
119,1,1
120,1,1
121,1,1
122,1,1
123,1,1
124,1,1
125,1,1
126,1,1
127,1,1
128,1,1
129,1,1
130,1,1
131,1,1
132,1,1
133,1,1
134,1,1
135,1,1
136,1,1
137,1,1
138,1,1
139,1,1
140,1,1
141,1,1
142,1,1
143,1,1
144,1,1
145,1,1
146,1,1
147,1,1
148,1,1
149,1,1
150,1,1
151,1,1
152,1,1
153,1,1
154,1,1
155,1,1
156,1,1
157,1,1
158,1,1
159,1,1
160,1,1
161,1,1
162,1,1
163,1,1
164,1,1
165,1,1
166,1,1
167,1,1
168,1,1
169,1,1
170,1,1
171,1,1
172,1,1
173,1,1
174,1,1
175,1,1
176,1,1
177,1,1
178,1,1
179,1,1
180,1,1
181,1,1
182,1,1
183,1,1
184,1,1
185,1,1
186,1,1
187,1,1
188,1,1
189,1,1
190,1,1
191,1,1
192,1,1
193,1,1
194,1,1
195,1,1
196,1,1
197,1,1
198,1,1
199,1,1
200,1,1
201,1,1
202,1,1
203,1,1
204,1,1
205,1,1
206,1,1
207,1,1
208,1,1
209,1,1
210,1,1
211,1,1
212,1,1
213,1,1
214,1,1
215,1,1
216,1,1
217,1,1
218,1,1
219,1,1
220,1,1
221,1,1
222,1,1
223,1,1
224,1,1
225,1,1
226,1,1
227,1,1
228,1,1
229,1,1
230,1,1
231,1,1
232,1,1
233,1,1
234,1,1
235,1,1
236,1,1
237,1,1
238,1,1
239,1,1
240,1,1
241,1,1
242,1,1
243,1,1
244,1,1
245,1,1
246,1,1
247,1,1
248,1,1
249,1,1
250,1,1
251,1,1
252,1,1
253,1,1
254,1,1
255,1,1
256,1,1
257,1,1
258,1,1
259,1,1
260,1,1
261,1,1
262,1,1
263,1,1
264,1,1
265,1,1
266,1,1
267,1,1
268,1,1
269,1,1
270,1,1
271,1,1
272,1,1
273,1,1
274,1,1
275,1,1
276,1,1
277,1,1
278,1,1
279,1,1
280,1,1
281,1,1
282,1,1
283,1,1
284,1,1
285,1,1
286,1,1
287,1,1
288,1,1
289,1,1
290,1,1
291,1,1
292,1,1
293,1,1
294,1,1
295,1,1
296,1,1
297,1,1
298,1,1
299,1,1
300,1,1
301,1,1
302,1,1
303,1,1
304,1,1
305,1,1
306,1,1
307,1,1
308,1,1
309,1,1
310,1,1
311,1,1
312,1,1
313,1,1
314,1,1
315,1,1
316,1,1
317,1,1
318,1,1
319,1,1
0, 1.0000000000e+00, 1.0000000000e+00
1, 1.0000000000e+00, 1.0000000000e+00
2, 1.0000000000e+00, 1.0000000000e+00
3, 1.0000000000e+00, 1.0000000000e+00
4, 1.0000000000e+00, 1.0000000000e+00
5, 1.0000000000e+00, 1.0000000000e+00
6, 1.0000000000e+00, 1.0000000000e+00
7, 1.0000000000e+00, 1.0000000000e+00
8, 1.0000000000e+00, 1.0000000000e+00
9, 1.0000000000e+00, 1.0000000000e+00
10, 1.0000000000e+00, 1.0000000000e+00
11, 1.0000000000e+00, 1.0000000000e+00
12, 1.0000000000e+00, 1.0000000000e+00
13, 1.0000000000e+00, 1.0000000000e+00
14, 1.0000000000e+00, 1.0000000000e+00
15, 1.0000000000e+00, 1.0000000000e+00
16, 1.0000000000e+00, 1.0000000000e+00
17, 1.0000000000e+00, 1.0000000000e+00
18, 1.0000000000e+00, 1.0000000000e+00
19, 1.0000000000e+00, 1.0000000000e+00
20, 1.0000000000e+00, 1.0000000000e+00
21, 1.0000000000e+00, 1.0000000000e+00
22, 1.0000000000e+00, 1.0000000000e+00
23, 1.0000000000e+00, 1.0000000000e+00
24, 1.0000000000e+00, 1.0000000000e+00
25, 1.0000000000e+00, 1.0000000000e+00
26, 1.0000000000e+00, 1.0000000000e+00
27, 1.0000000000e+00, 1.0000000000e+00
28, 1.0000000000e+00, 1.0000000000e+00
29, 1.0000000000e+00, 1.0000000000e+00
30, 1.0000000000e+00, 1.0000000000e+00
31, 1.0000000000e+00, 1.0000000000e+00
32, 1.0000000000e+00, 1.0000000000e+00
33, 1.0000000000e+00, 1.0000000000e+00
34, 1.0000000000e+00, 1.0000000000e+00
35, 1.0000000000e+00, 1.0000000000e+00
36, 1.0000000000e+00, 1.0000000000e+00
37, 1.0000000000e+00, 1.0000000000e+00
38, 1.0000000000e+00, 1.0000000000e+00
39, 1.0000000000e+00, 1.0000000000e+00
40, 1.0000000000e+00, 1.0000000000e+00
41, 1.0000000000e+00, 1.0000000000e+00
42, 1.0000000000e+00, 1.0000000000e+00
43, 1.0000000000e+00, 1.0000000000e+00
44, 1.0000000000e+00, 1.0000000000e+00
45, 1.0000000000e+00, 1.0000000000e+00
46, 1.0000000000e+00, 1.0000000000e+00
47, 1.0000000000e+00, 1.0000000000e+00
48, 1.0000000000e+00, 1.0000000000e+00
49, 1.0000000000e+00, 1.0000000000e+00
50, 1.0000000000e+00, 1.0000000000e+00
51, 1.0000000000e+00, 1.0000000000e+00
52, 1.0000000000e+00, 1.0000000000e+00
53, 1.0000000000e+00, 1.0000000000e+00
54, 1.0000000000e+00, 1.0000000000e+00
55, 1.0000000000e+00, 1.0000000000e+00
56, 1.0000000000e+00, 1.0000000000e+00
57, 1.0000000000e+00, 1.0000000000e+00
58, 1.0000000000e+00, 1.0000000000e+00
59, 1.0000000000e+00, 1.0000000000e+00
60, 1.0000000000e+00, 1.0000000000e+00
61, 1.0000000000e+00, 1.0000000000e+00
62, 1.0000000000e+00, 1.0000000000e+00
63, 1.0000000000e+00, 1.0000000000e+00
64, 1.0000000000e+00, 1.0000000000e+00
65, 1.0000000000e+00, 1.0000000000e+00
66, 1.0000000000e+00, 1.0000000000e+00
67, 1.0000000000e+00, 1.0000000000e+00
68, 1.0000000000e+00, 1.0000000000e+00
69, 1.0000000000e+00, 1.0000000000e+00
70, 1.0000000000e+00, 1.0000000000e+00
71, 1.0000000000e+00, 1.0000000000e+00
72, 1.0000000000e+00, 1.0000000000e+00
73, 1.0000000000e+00, 1.0000000000e+00
74, 1.0000000000e+00, 1.0000000000e+00
75, 1.0000000000e+00, 1.0000000000e+00
76, 1.0000000000e+00, 1.0000000000e+00
77, 1.0000000000e+00, 1.0000000000e+00
78, 1.0000000000e+00, 1.0000000000e+00
79, 1.0000000000e+00, 1.0000000000e+00
80, 1.0000000000e+00, 1.0000000000e+00
81, 1.0000000000e+00, 1.0000000000e+00
82, 1.0000000000e+00, 1.0000000000e+00
83, 1.0000000000e+00, 1.0000000000e+00
84, 1.0000000000e+00, 1.0000000000e+00
85, 1.0000000000e+00, 1.0000000000e+00
86, 1.0000000000e+00, 1.0000000000e+00
87, 1.0000000000e+00, 1.0000000000e+00
88, 1.0000000000e+00, 1.0000000000e+00
89, 1.0000000000e+00, 1.0000000000e+00
90, 1.0000000000e+00, 1.0000000000e+00
91, 1.0000000000e+00, 1.0000000000e+00
92, 1.0000000000e+00, 1.0000000000e+00
93, 1.0000000000e+00, 1.0000000000e+00
94, 1.0000000000e+00, 1.0000000000e+00
95, 1.0000000000e+00, 1.0000000000e+00
96, 1.0000000000e+00, 1.0000000000e+00
97, 1.0000000000e+00, 1.0000000000e+00
98, 1.0000000000e+00, 1.0000000000e+00
99, 1.0000000000e+00, 1.0000000000e+00
100, 1.0000000000e+00, 1.0000000000e+00
101, 1.0000000000e+00, 1.0000000000e+00
102, 1.0000000000e+00, 1.0000000000e+00
103, 1.0000000000e+00, 1.0000000000e+00
104, 1.0000000000e+00, 1.0000000000e+00
105, 1.0000000000e+00, 1.0000000000e+00
106, 1.0000000000e+00, 1.0000000000e+00
107, 1.0000000000e+00, 1.0000000000e+00
108, 1.0000000000e+00, 1.0000000000e+00
109, 1.0000000000e+00, 1.0000000000e+00
110, 1.0000000000e+00, 1.0000000000e+00
111, 1.0000000000e+00, 1.0000000000e+00
112, 1.0000000000e+00, 1.0000000000e+00
113, 1.0000000000e+00, 1.0000000000e+00
114, 1.0000000000e+00, 1.0000000000e+00
115, 1.0000000000e+00, 1.0000000000e+00
116, 1.0000000000e+00, 1.0000000000e+00
117, 1.0000000000e+00, 1.0000000000e+00
118, 1.0000000000e+00, 1.0000000000e+00
119, 1.0000000000e+00, 1.0000000000e+00
120, 1.0000000000e+00, 1.0000000000e+00
121, 1.0000000000e+00, 1.0000000000e+00
122, 1.0000000000e+00, 1.0000000000e+00
123, 1.0000000000e+00, 1.0000000000e+00
124, 1.0000000000e+00, 1.0000000000e+00
125, 1.0000000000e+00, 1.0000000000e+00
126, 1.0000000000e+00, 1.0000000000e+00
127, 1.0000000000e+00, 1.0000000000e+00
128, 1.0000000000e+00, 1.0000000000e+00
129, 1.0000000000e+00, 1.0000000000e+00
130, 1.0000000000e+00, 1.0000000000e+00
131, 1.0000000000e+00, 1.0000000000e+00
132, 1.0000000000e+00, 1.0000000000e+00
133, 1.0000000000e+00, 1.0000000000e+00
134, 1.0000000000e+00, 1.0000000000e+00
135, 1.0000000000e+00, 1.0000000000e+00
136, 1.0000000000e+00, 1.0000000000e+00
137, 1.0000000000e+00, 1.0000000000e+00
138, 1.0000000000e+00, 1.0000000000e+00
139, 1.0000000000e+00, 1.0000000000e+00
140, 1.0000000000e+00, 1.0000000000e+00
141, 1.0000000000e+00, 1.0000000000e+00
142, 1.0000000000e+00, 1.0000000000e+00
143, 1.0000000000e+00, 1.0000000000e+00
144, 1.0000000000e+00, 1.0000000000e+00
145, 1.0000000000e+00, 1.0000000000e+00
146, 1.0000000000e+00, 1.0000000000e+00
147, 1.0000000000e+00, 1.0000000000e+00
148, 1.0000000000e+00, 1.0000000000e+00
149, 1.0000000000e+00, 1.0000000000e+00
150, 1.0000000000e+00, 1.0000000000e+00
151, 1.0000000000e+00, 1.0000000000e+00
152, 1.0000000000e+00, 1.0000000000e+00
153, 1.0000000000e+00, 1.0000000000e+00
154, 1.0000000000e+00, 1.0000000000e+00
155, 1.0000000000e+00, 1.0000000000e+00
156, 1.0000000000e+00, 1.0000000000e+00
157, 1.0000000000e+00, 1.0000000000e+00
158, 1.0000000000e+00, 1.0000000000e+00
159, 1.0000000000e+00, 1.0000000000e+00
160, 1.0000000000e+00, 1.0000000000e+00
161, 1.0000000000e+00, 1.0000000000e+00
162, 1.0000000000e+00, 1.0000000000e+00
163, 1.0000000000e+00, 1.0000000000e+00
164, 1.0000000000e+00, 1.0000000000e+00
165, 1.0000000000e+00, 1.0000000000e+00
166, 1.0000000000e+00, 1.0000000000e+00
167, 1.0000000000e+00, 1.0000000000e+00
168, 1.0000000000e+00, 1.0000000000e+00
169, 1.0000000000e+00, 1.0000000000e+00
170, 1.0000000000e+00, 1.0000000000e+00
171, 1.0000000000e+00, 1.0000000000e+00
172, 1.0000000000e+00, 1.0000000000e+00
173, 1.0000000000e+00, 1.0000000000e+00
174, 1.0000000000e+00, 1.0000000000e+00
175, 1.0000000000e+00, 1.0000000000e+00
176, 1.0000000000e+00, 1.0000000000e+00
177, 1.0000000000e+00, 1.0000000000e+00
178, 1.0000000000e+00, 1.0000000000e+00
179, 1.0000000000e+00, 1.0000000000e+00
180, 1.0000000000e+00, 1.0000000000e+00
181, 1.0000000000e+00, 1.0000000000e+00
182, 1.0000000000e+00, 1.0000000000e+00
183, 1.0000000000e+00, 1.0000000000e+00
184, 1.0000000000e+00, 1.0000000000e+00
185, 1.0000000000e+00, 1.0000000000e+00
186, 1.0000000000e+00, 1.0000000000e+00
187, 1.0000000000e+00, 1.0000000000e+00
188, 1.0000000000e+00, 1.0000000000e+00
189, 1.0000000000e+00, 1.0000000000e+00
190, 1.0000000000e+00, 1.0000000000e+00
191, 1.0000000000e+00, 1.0000000000e+00
192, 1.0000000000e+00, 1.0000000000e+00
193, 1.0000000000e+00, 1.0000000000e+00
194, 1.0000000000e+00, 1.0000000000e+00
195, 1.0000000000e+00, 1.0000000000e+00
196, 1.0000000000e+00, 1.0000000000e+00
197, 1.0000000000e+00, 1.0000000000e+00
198, 1.0000000000e+00, 1.0000000000e+00
199, 1.0000000000e+00, 1.0000000000e+00
200, 1.0000000000e+00, 1.0000000000e+00
201, 1.0000000000e+00, 1.0000000000e+00
202, 1.0000000000e+00, 1.0000000000e+00
203, 1.0000000000e+00, 1.0000000000e+00
204, 1.0000000000e+00, 1.0000000000e+00
205, 1.0000000000e+00, 1.0000000000e+00
206, 1.0000000000e+00, 1.0000000000e+00
207, 1.0000000000e+00, 1.0000000000e+00
208, 1.0000000000e+00, 1.0000000000e+00
209, 1.0000000000e+00, 1.0000000000e+00
210, 1.0000000000e+00, 1.0000000000e+00
211, 1.0000000000e+00, 1.0000000000e+00
212, 1.0000000000e+00, 1.0000000000e+00
213, 1.0000000000e+00, 1.0000000000e+00
214, 1.0000000000e+00, 1.0000000000e+00
215, 1.0000000000e+00, 1.0000000000e+00
216, 1.0000000000e+00, 1.0000000000e+00
217, 1.0000000000e+00, 1.0000000000e+00
218, 1.0000000000e+00, 1.0000000000e+00
219, 1.0000000000e+00, 1.0000000000e+00
220, 1.0000000000e+00, 1.0000000000e+00
221, 1.0000000000e+00, 1.0000000000e+00
222, 1.0000000000e+00, 1.0000000000e+00
223, 1.0000000000e+00, 1.0000000000e+00
224, 1.0000000000e+00, 1.0000000000e+00
225, 1.0000000000e+00, 1.0000000000e+00
226, 1.0000000000e+00, 1.0000000000e+00
227, 1.0000000000e+00, 1.0000000000e+00
228, 1.0000000000e+00, 1.0000000000e+00
229, 1.0000000000e+00, 1.0000000000e+00
230, 1.0000000000e+00, 1.0000000000e+00
231, 1.0000000000e+00, 1.0000000000e+00
232, 1.0000000000e+00, 1.0000000000e+00
233, 1.0000000000e+00, 1.0000000000e+00
234, 1.0000000000e+00, 1.0000000000e+00
235, 1.0000000000e+00, 1.0000000000e+00
236, 1.0000000000e+00, 1.0000000000e+00
237, 1.0000000000e+00, 1.0000000000e+00
238, 1.0000000000e+00, 1.0000000000e+00
239, 1.0000000000e+00, 1.0000000000e+00
240, 1.0000000000e+00, 1.0000000000e+00
241, 1.0000000000e+00, 1.0000000000e+00
242, 1.0000000000e+00, 1.0000000000e+00
243, 1.0000000000e+00, 1.0000000000e+00
244, 1.0000000000e+00, 1.0000000000e+00
245, 1.0000000000e+00, 1.0000000000e+00
246, 1.0000000000e+00, 1.0000000000e+00
247, 1.0000000000e+00, 1.0000000000e+00
248, 1.0000000000e+00, 1.0000000000e+00
249, 1.0000000000e+00, 1.0000000000e+00
250, 1.0000000000e+00, 1.0000000000e+00
251, 1.0000000000e+00, 1.0000000000e+00
252, 1.0000000000e+00, 1.0000000000e+00
253, 1.0000000000e+00, 1.0000000000e+00
254, 1.0000000000e+00, 1.0000000000e+00
255, 1.0000000000e+00, 1.0000000000e+00
256, 1.0000000000e+00, 1.0000000000e+00
257, 1.0000000000e+00, 1.0000000000e+00
258, 1.0000000000e+00, 1.0000000000e+00
259, 1.0000000000e+00, 1.0000000000e+00
260, 1.0000000000e+00, 1.0000000000e+00
261, 1.0000000000e+00, 1.0000000000e+00
262, 1.0000000000e+00, 1.0000000000e+00
263, 1.0000000000e+00, 1.0000000000e+00
264, 1.0000000000e+00, 1.0000000000e+00
265, 1.0000000000e+00, 1.0000000000e+00
266, 1.0000000000e+00, 1.0000000000e+00
267, 1.0000000000e+00, 1.0000000000e+00
268, 1.0000000000e+00, 1.0000000000e+00
269, 1.0000000000e+00, 1.0000000000e+00
270, 1.0000000000e+00, 1.0000000000e+00
271, 1.0000000000e+00, 1.0000000000e+00
272, 1.0000000000e+00, 1.0000000000e+00
273, 1.0000000000e+00, 1.0000000000e+00
274, 1.0000000000e+00, 1.0000000000e+00
275, 1.0000000000e+00, 1.0000000000e+00
276, 1.0000000000e+00, 1.0000000000e+00
277, 1.0000000000e+00, 1.0000000000e+00
278, 1.0000000000e+00, 1.0000000000e+00
279, 1.0000000000e+00, 1.0000000000e+00
280, 1.0000000000e+00, 1.0000000000e+00
281, 1.0000000000e+00, 1.0000000000e+00
282, 1.0000000000e+00, 1.0000000000e+00
283, 1.0000000000e+00, 1.0000000000e+00
284, 1.0000000000e+00, 1.0000000000e+00
285, 1.0000000000e+00, 1.0000000000e+00
286, 1.0000000000e+00, 1.0000000000e+00
287, 1.0000000000e+00, 1.0000000000e+00
288, 1.0000000000e+00, 1.0000000000e+00
289, 1.0000000000e+00, 1.0000000000e+00
290, 1.0000000000e+00, 1.0000000000e+00
291, 1.0000000000e+00, 1.0000000000e+00
292, 1.0000000000e+00, 1.0000000000e+00
293, 1.0000000000e+00, 1.0000000000e+00
294, 1.0000000000e+00, 1.0000000000e+00
295, 1.0000000000e+00, 1.0000000000e+00
296, 1.0000000000e+00, 1.0000000000e+00
297, 1.0000000000e+00, 1.0000000000e+00
298, 1.0000000000e+00, 1.0000000000e+00
299, 1.0000000000e+00, 1.0000000000e+00
300, 1.0000000000e+00, 1.0000000000e+00
301, 1.0000000000e+00, 1.0000000000e+00
302, 1.0000000000e+00, 1.0000000000e+00
303, 1.0000000000e+00, 1.0000000000e+00
304, 1.0000000000e+00, 1.0000000000e+00
305, 1.0000000000e+00, 1.0000000000e+00
306, 1.0000000000e+00, 1.0000000000e+00
307, 1.0000000000e+00, 1.0000000000e+00
308, 1.0000000000e+00, 1.0000000000e+00
309, 1.0000000000e+00, 1.0000000000e+00
310, 1.0000000000e+00, 1.0000000000e+00
311, 1.0000000000e+00, 1.0000000000e+00
312, 1.0000000000e+00, 1.0000000000e+00
313, 1.0000000000e+00, 1.0000000000e+00
314, 1.0000000000e+00, 1.0000000000e+00
315, 1.0000000000e+00, 1.0000000000e+00
316, 1.0000000000e+00, 1.0000000000e+00
317, 1.0000000000e+00, 1.0000000000e+00
318, 1.0000000000e+00, 1.0000000000e+00
319, 1.0000000000e+00, 1.0000000000e+00

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -26,20 +26,26 @@ protected:
double dt;
double T;
void build_A();
void build_B();
void initialize_U(double x_c, double y_c, double sigma_x, double sigma_y,
double p_x, double p_y);
void build_V(double thickness, double pos_x, double aperture_separation,
double aperture, uint32_t slits);
public:
int32_t N;
arma::cx_mat V;
arma::cx_mat U;
arma::sp_cx_mat A;
WaveSimulation(double h, double dt, double T);
virtual void solve(std::ofstream& ofile);
void build_A();
void build_B();
void initialize_U(double x_c, double y_c, double sigma_x, double sigma_y,
double p_x, double p_y);
WaveSimulation(double h, double dt, double T, double x_c, double y_c,
double sigma_x, double sigma_y, double p_x, double p_y,
double thickness, double pos_x, double ap_sep, double ap,
uint32_t slits);
WaveSimulation(double h, double dt, double T, double x_c, double y_c,
double sigma_x, double sigma_y, double p_x, double p_y);
virtual void solve(std::ofstream &ofile);
void write_U(std::ofstream &ofile);
void step();
void build_V(double thickness, double pos_x, double aperture_sparation, double aperture, uint32_t slits);
};
#endif

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -18,17 +18,36 @@
#include <cstdint>
#include <cstdlib>
WaveSimulation::WaveSimulation(double h, double dt, double T)
WaveSimulation::WaveSimulation(double h, double dt, double T, double x_c,
double y_c, double sigma_x, double sigma_y,
double p_x, double p_y, double thickness,
double pos_x, double ap_sep, double ap,
uint32_t slits)
{
this->dt = dt;
this->h = h;
this->T = T;
this->M = 1. / h;
this->N = M - 2;
this->V.set_size(this->N, this->N);
this->V.fill(0.);
this->U.set_size(this->N, this->N);
this->U.fill(0.);
this->build_V(thickness, pos_x, ap_sep, ap, slits);
this->initialize_U(x_c, y_c, sigma_x, sigma_y, p_x, p_y);
this->build_A();
this->build_B();
}
WaveSimulation::WaveSimulation(double h, double dt, double T, double x_c, double y_c,
double sigma_x, double sigma_y, double p_x, double p_y)
{
this->dt = dt;
this->h = h;
this->T = T;
this->M = 1. / h;
this->N = M - 2;
this->build_V(0.,0.,0.,0., 0);
this->initialize_U(x_c, y_c, sigma_x, sigma_y, p_x, p_y);
this->build_A();
this->build_B();
}
void WaveSimulation::solve(std::ofstream &ofile)
@ -43,7 +62,6 @@ void WaveSimulation::solve(std::ofstream &ofile)
void WaveSimulation::step()
{
DEBUG("Inside step");
arma::cx_vec tmp = this->B * this->U.as_col();
arma::spsolve(this->U, this->A, tmp);
}
@ -111,6 +129,7 @@ void WaveSimulation::build_B()
void WaveSimulation::initialize_U(double x_c, double y_c, double sigma_x,
double sigma_y, double p_x, double p_y)
{
this->U.set_size(this->N, this->N);
double x, y, diff_x, diff_y;
std::complex<double> sum = 0.;
for (size_t j = 0; j < this->U.n_cols; j++) {
@ -145,25 +164,42 @@ void WaveSimulation::build_V(double thickness, double pos_x,
double aperture_separation, double aperture,
uint32_t slits)
{
uint32_t mid_y = this->N / 2 - (this->N % 2 == 0);
this->V.set_size(this->N, this->N);
this->V.fill(0.);
if (slits == 0) {
return;
}
arma::cx_vec res;
if (slits % 2 == 0) {
res = arma::cx_vec(aperture_separation/this->h,arma::fill::value(1e10));
for (size_t i=0; i < slits; i+=2) {
res = arma::join_cols(res, arma::cx_vec(aperture/this->h,arma::fill::zeros));
res = arma::join_cols(arma::cx_vec(aperture/this->h,arma::fill::zeros), res);
res = arma::join_cols(res, arma::cx_vec(aperture_separation/this->h,arma::fill::value(1e10)));
res = arma::join_cols(arma::cx_vec(aperture_separation/this->h,arma::fill::value(1e10)), res);
res = arma::cx_vec(aperture_separation / this->h,
arma::fill::value(1e10));
for (size_t i = 0; i < slits; i += 2) {
res = arma::join_cols(
res, arma::cx_vec(aperture / this->h, arma::fill::zeros));
res = arma::join_cols(
arma::cx_vec(aperture / this->h, arma::fill::zeros), res);
res =
arma::join_cols(res, arma::cx_vec(aperture_separation / this->h,
arma::fill::value(1e10)));
res = arma::join_cols(arma::cx_vec(aperture_separation / this->h,
arma::fill::value(1e10)),
res);
}
}
else {
res = arma::cx_vec(aperture/this->h,arma::fill::value(0));
for (size_t i=0; i < slits-1; i+=2) {
res = arma::join_cols(res, arma::cx_vec(aperture_separation/this->h,arma::fill::value(1e10)));
res = arma::join_cols(arma::cx_vec(aperture_separation/this->h,arma::fill::value(1e10)), res);
res = arma::join_cols(res, arma::cx_vec(aperture/this->h,arma::fill::zeros));
res = arma::join_cols(arma::cx_vec(aperture/this->h,arma::fill::zeros), res);
res = arma::cx_vec(aperture / this->h, arma::fill::value(0));
for (size_t i = 0; i < slits - 1; i += 2) {
res =
arma::join_cols(res, arma::cx_vec(aperture_separation / this->h,
arma::fill::value(1e10)));
res = arma::join_cols(arma::cx_vec(aperture_separation / this->h,
arma::fill::value(1e10)),
res);
res = arma::join_cols(
res, arma::cx_vec(aperture / this->h, arma::fill::zeros));
res = arma::join_cols(
arma::cx_vec(aperture / this->h, arma::fill::zeros), res);
}
}
if (res.size() > this->N) {
@ -171,10 +207,11 @@ void WaveSimulation::build_V(double thickness, double pos_x,
}
uint32_t fill = (this->N - res.size()) / 2;
res = arma::join_cols(arma::cx_vec(fill, arma::fill::value(1e10)), res);
res = arma::join_cols(res, arma::cx_vec(fill + ((this->N - res.size()) % 2), arma::fill::value(1e10)));
res = arma::join_cols(res, arma::cx_vec(fill + ((this->N - res.size()) % 2),
arma::fill::value(1e10)));
uint32_t start = pos_x/this->h - thickness/this->h/2;
for (size_t i=0; i < thickness/this->h; i++) {
this->V.col(start+i) = res;
uint32_t start = pos_x / this->h - thickness / this->h / 2;
for (size_t i = 0; i < thickness / this->h; i++) {
this->V.col(start + i) = res;
}
}

View File

@ -0,0 +1,26 @@
import numpy as np
import matplotlib.pyplot as plt
import ast
import seaborn as sns
sns.set_theme()
def plot():
with open("data/color_map.txt") as f:
lines = f.readlines();
size = int(lines[0])
for i, line in enumerate(lines[1:]):
fig, ax = plt.subplots()
arr = line.strip().split("\t")
arr = np.asarray(list(map(lambda x: ((a := complex(*ast.literal_eval(x)))*a.conjugate()).real, arr)))
arr = arr.reshape(size,size)
ax.imshow(arr.T, interpolation="nearest")
plt.savefig(f"latex/images/color_map_{i}.pdf")
plt.close(fig)
if __name__ == "__main__":
plot()

View File

@ -0,0 +1,41 @@
import numpy as np
import matplotlib.pyplot as plt
import ast
import seaborn as sns
sns.set_theme()
def plot():
files = [
"data/screen/single_slit.txt",
"data/screen/double_slit.txt",
"data/screen/triple_slit.txt",
]
outputs = [
"latex/images/single_slit_detector.pdf",
"latex/images/double_slit_detector.pdf",
"latex/images/triple_slit_detector.pdf",
]
for file, output in zip(files, outputs):
with open(file) as f:
lines = f.readlines();
size = int(lines[0])
column = int(.8 * size)
fig, ax = plt.subplots()
arr = lines[1].strip().split("\t")
arr = np.asarray(list(map(lambda x: complex(*ast.literal_eval(x)), arr)))
arr = arr.reshape(size,size)
x = np.linspace(0,1, size)
slice = arr[column, :]
norm = 1. / np.sqrt(sum([(i*i.conjugate()).real for i in slice]))
slice *= norm
slice = np.asarray([i * i.conjugate() for i in slice])
ax.plot(x, slice)
plt.savefig(output)
plt.close(fig)
if __name__ == "__main__":
plot()

View File

@ -0,0 +1,25 @@
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
from matplotlib.animation import FuncAnimation
import ast
def plot():
with open("data/probability_deviation.txt") as f:
lines = f.readlines();
x = []
arr_narrow = []
arr_wide = []
for line in lines:
tmp = line.strip().split(",")
x.append(float(tmp[0]))
arr_narrow.append(float(tmp[1]))
arr_wide.append(float(tmp[2]))
plt.plot(x,arr_narrow)
plt.plot(x,arr_wide)
plt.savefig("latex/images/probability_deviation.pdf")
if __name__ == "__main__":
plot()

View File

@ -11,19 +11,14 @@
* */
#include "WaveSimulation.hpp"
#include "utils.hpp"
#include <fstream>
void probability_deviation()
{
WaveSimulation sim_narrow(.005, 2.5e-5, .008);
sim_narrow.initialize_U(.25, .5, .05, .05, 200., 0.);
sim_narrow.build_A();
sim_narrow.build_B();
WaveSimulation sim_narrow(.005, 2.5e-5, .008, .25, .5, .05, .05, 200., 0.);
WaveSimulation sim_wide(.005, 2.5e-5, .008);
sim_wide.build_V(.02, .5, .05, .05, 2);
sim_wide.initialize_U(.25, .5, .05, .10, 200., 0.);
sim_wide.build_A();
sim_wide.build_B();
WaveSimulation sim_wide(.005, 2.5e-5, .008, .25, .5, .05, .10, 200., 0.,
0.02, .5, .05, .05, 2);
std::ofstream ofile;
utils::mkpath("data");
@ -41,7 +36,8 @@ void probability_deviation()
sim_narrow.step();
sim_wide.step();
ofile << i << ',' << sum_narrow << ',' << sum_wide << '\n';
ofile << i << ',' << utils::scientific_format(sum_narrow) << ','
<< utils::scientific_format(sum_wide) << '\n';
}
ofile.close();
@ -49,11 +45,8 @@ void probability_deviation()
void color_map()
{
WaveSimulation sim(.005, 2.5e-5, .008);
sim.build_V(.02, .5, .05, .05, 2);
sim.initialize_U(.25, .5, .05, .10, 200., 0.);
sim.build_A();
sim.build_B();
WaveSimulation sim(.005, 2.5e-5, .002, .25, .5, .05, .20, 200., 0., 0.02,
.5, .05, .05, 2);
std::ofstream ofile;
ofile.open("data/color_map.txt");
@ -72,50 +65,56 @@ void color_map()
void detector_screen()
{
WaveSimulation sim(.005, 2.5e-5, .008);
sim.build_V(.02, .5, .05, .05, 1);
sim.initialize_U(.25, .5, .05, .10, 200., 0.);
sim.build_A();
sim.build_B();
WaveSimulation *sim = new WaveSimulation(
.005, 2.5e-5, .002, .25, .5, .05, .20, 200., 0., 0.02, .5, .05, .05, 1);
std::ofstream ofile;
utils::mkpath("data/screen");
ofile.open("data/screen/single_slit.txt");
ofile << sim.N << '\n';
ofile << sim->N << '\n';
for (size_t i = 0; i < 80; i++) {
sim.step();
sim->step();
}
sim.write_U(ofile);
sim->write_U(ofile);
ofile.close();
sim.build_V(.02, .5, .05, .05, 2);
sim.initialize_U(.25, .5, .05, .10, 200., 0.);
delete sim;
sim = new WaveSimulation(.005, 2.5e-5, .002, .25, .5, .05, .20, 200., 0.,
0.02, .5, .05, .05, 2);
ofile.open("data/screen/double_slit.txt");
ofile << sim.N << '\n';
ofile << sim->N << '\n';
for (size_t i = 0; i < 80; i++) {
sim.step();
sim->step();
}
sim.write_U(ofile);
sim->write_U(ofile);
ofile.close();
sim.build_V(.02, .5, .05, .05, 3);
sim.initialize_U(.25, .5, .05, .10, 200., 0.);
delete sim;
sim = new WaveSimulation(.005, 2.5e-5, .002, .25, .5, .05, .20, 200., 0.,
0.02, .5, .05, .05, 3);
ofile.open("data/screen/triple_slit.txt");
ofile << sim.N << '\n';
ofile << sim->N << '\n';
for (size_t i = 0; i < 80; i++) {
sim.step();
sim->step();
}
sim.write_U(ofile);
sim->write_U(ofile);
ofile.close();
}
int main()
{
probability_deviation();
color_map();
//probability_deviation();
//color_map();
detector_screen();
//std::ofstream ofile;
//ofile.open("test.txt");
//WaveSimulation sim(.005, 2.5e-5, .008, .25, .5, .05, .10, 200., 0.,
//0.02, .5, .05, .05, 2);
//sim.solve(ofile);
return 0;
}