Compare commits

..

No commits in common. "137c5a89dd7592fe955a0d65c61b123cce4ec79b" and "b0ce8ef73057db0c57bb48af011ff8a59ce23a43" have entirely different histories.

18 changed files with 395 additions and 529 deletions

File diff suppressed because one or more lines are too long

View File

@ -1,320 +1,320 @@
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
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

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,26 +26,20 @@ 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, 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);
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);
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.

View File

@ -18,36 +18,17 @@
#include <cstdint>
#include <cstdlib>
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)
WaveSimulation::WaveSimulation(double h, double dt, double T)
{
this->dt = dt;
this->h = h;
this->T = T;
this->M = 1. / h;
this->N = M - 2;
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();
this->V.set_size(this->N, this->N);
this->V.fill(0.);
this->U.set_size(this->N, this->N);
this->U.fill(0.);
}
void WaveSimulation::solve(std::ofstream &ofile)
@ -62,6 +43,7 @@ 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);
}
@ -129,7 +111,6 @@ 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++) {
@ -164,42 +145,25 @@ void WaveSimulation::build_V(double thickness, double pos_x,
double aperture_separation, double aperture,
uint32_t slits)
{
this->V.set_size(this->N, this->N);
this->V.fill(0.);
if (slits == 0) {
return;
}
uint32_t mid_y = this->N / 2 - (this->N % 2 == 0);
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) {
@ -207,11 +171,10 @@ 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

@ -1,26 +0,0 @@
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

@ -1,41 +0,0 @@
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

@ -1,25 +0,0 @@
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,14 +11,19 @@
* */
#include "WaveSimulation.hpp"
#include "utils.hpp"
#include <fstream>
void probability_deviation()
{
WaveSimulation sim_narrow(.005, 2.5e-5, .008, .25, .5, .05, .05, 200., 0.);
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_wide(.005, 2.5e-5, .008, .25, .5, .05, .10, 200., 0.,
0.02, .5, .05, .05, 2);
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();
std::ofstream ofile;
utils::mkpath("data");
@ -36,8 +41,7 @@ void probability_deviation()
sim_narrow.step();
sim_wide.step();
ofile << i << ',' << utils::scientific_format(sum_narrow) << ','
<< utils::scientific_format(sum_wide) << '\n';
ofile << i << ',' << sum_narrow << ',' << sum_wide << '\n';
}
ofile.close();
@ -45,8 +49,11 @@ void probability_deviation()
void color_map()
{
WaveSimulation sim(.005, 2.5e-5, .002, .25, .5, .05, .20, 200., 0., 0.02,
.5, .05, .05, 2);
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();
std::ofstream ofile;
ofile.open("data/color_map.txt");
@ -65,56 +72,50 @@ void color_map()
void detector_screen()
{
WaveSimulation *sim = new WaveSimulation(
.005, 2.5e-5, .002, .25, .5, .05, .20, 200., 0., 0.02, .5, .05, .05, 1);
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();
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();
delete sim;
sim = new WaveSimulation(.005, 2.5e-5, .002, .25, .5, .05, .20, 200., 0.,
0.02, .5, .05, .05, 2);
sim.build_V(.02, .5, .05, .05, 2);
sim.initialize_U(.25, .5, .05, .10, 200., 0.);
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();
delete sim;
sim = new WaveSimulation(.005, 2.5e-5, .002, .25, .5, .05, .20, 200., 0.,
0.02, .5, .05, .05, 3);
sim.build_V(.02, .5, .05, .05, 3);
sim.initialize_U(.25, .5, .05, .10, 200., 0.);
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;
}