comparison notebooks/display_examples_nb.jl @ 2060:797553341212 feature/lazy_tensors/pretty_printing tip

Merge default
author Jonatan Werpers <jonatan@werpers.com>
date Sat, 14 Feb 2026 23:38:32 +0100
parents 377df47849cb
children
comparison
equal deleted inserted replaced
2057:8a2a0d678d6f 2060:797553341212
1 ### A Pluto.jl notebook ###
2 # v0.20.21
3
4 using Markdown
5 using InteractiveUtils
6
7 # ╔═╡ 1f8a7cfa-94cc-41bf-a8c8-2dc5218741e0
8 begin
9 using Pkg
10 Pkg.activate(".")
11
12 using Diffinitive
13 using Diffinitive.Grids
14 using Diffinitive.LazyTensors
15 using Diffinitive.SbpOperators
16 using PlutoUI
17 using StaticArrays
18 end
19
20 # ╔═╡ 885c60d7-d33c-4741-ae49-6a57510ec7b5
21 md"""
22 # Display tests
23 """
24
25 # ╔═╡ 9ee3372a-e78d-4f74-84ce-e04208d1558d
26 repl_show(v) = repr(MIME("text/plain"), v) |> println
27
28 # ╔═╡ 51c02ced-f684-417f-83f1-cade4edda43f
29 md"""
30 Common julia objects to compare with:
31 """
32
33 # ╔═╡ 25c90528-22cd-41ca-8572-ccd946928318
34 1 |> repl_show
35
36 # ╔═╡ e7f3e466-9833-428c-99ad-20bc9d88d951
37 [1,1] |> repl_show
38
39 # ╔═╡ 2e74f9b5-5b4f-4887-8a30-4655d560a45c
40 [1;; 2;;] |> repl_show
41
42 # ╔═╡ 365524b5-3182-4691-9817-1bbec1492c14
43 [1; 2;;] |> repl_show
44
45 # ╔═╡ d5725e1b-bc4f-4a95-975d-179c193908c9
46 [1; 2;; 3; 4;;] |> repl_show
47
48 # ╔═╡ b824ef8d-5026-4861-9a23-45a7939fd38c
49 "hej" |> repl_show
50
51 # ╔═╡ fbe365a2-f95e-4297-8326-c18d22932869
52 Dict("A" => 1, "B"=> 2) |> repl_show
53
54 # ╔═╡ 56670aff-0343-41cb-a653-35a61376dda4
55 1//2 |> repl_show
56
57 # ╔═╡ b5a6491e-a93e-4058-8ceb-be1dc4d4c100
58 BigInt(30) |> repl_show
59
60 # ╔═╡ 828d57a1-ee58-4204-8050-78127821a4c6
61 1:10 |> repl_show
62
63 # ╔═╡ 127d34f6-69f7-4082-a74b-0be86942f153
64 range(0,1,10) |> repl_show
65
66 # ╔═╡ c46a278e-a102-4544-82d8-7df816440410
67 rand(2,2,2,2) |> repl_show
68
69 # ╔═╡ 5aa7079c-8005-47f1-bb82-c35f3aa54b42
70 md"""
71 ## Parameter spaces
72 """
73
74 # ╔═╡ 08f493ed-189c-43f3-86f2-95fc475ec0e7
75 Interval(1,2) |> repl_show
76
77 # ╔═╡ f7244bf7-8266-469f-b07f-30c203d9af48
78 md"""
79 ## Grids
80 """
81
82 # ╔═╡ 0e14bd28-5dd1-44c4-abf4-23b70546bd49
83 equidistant_grid(0,1,11) |> repl_show
84
85 # ╔═╡ fcb74341-6b03-4ada-8f5d-bc245c23679b
86 equidistant_grid((0,0),(1,1),10,20) |> repl_show
87
88 # ╔═╡ 8dec053b-eaae-463d-800b-b8d89d5d550b
89 ZeroDimGrid(@SVector[1,2]) |> repl_show
90
91 # ╔═╡ c1172a36-c5d7-47dc-bc79-af0d43a8f6ee
92 let
93 x̄((ξ, η)) = @SVector[2ξ + η*(1-η), 3η+(1+η/2)*ξ^2]
94 J((ξ, η)) = @SMatrix[
95 2 1-2η;
96 (2+η)*ξ 3+1/2*ξ^2;
97 ]
98
99 mapped_grid(x̄, J, 10,10) |> repl_show
100 end
101
102 # ╔═╡ 9c889176-865b-402d-81b5-71957d2878f7
103 md"""
104 ## LazyArrays
105 """
106
107 # ╔═╡ 85e8e748-e575-4a29-80c7-22d110578343
108 LazyTensors.LazyConstantArray(10, (5,)) |> repl_show
109
110 # ╔═╡ 804ad722-9081-4d1d-b0d2-c536a26fe20d
111 LazyTensors.LazyFunctionArray((i,j)->10*i+j, (3,4)) |> repl_show
112
113 # ╔═╡ a70c689d-0851-497f-938a-e5c92ce59ddb
114 md"""
115 ## LazyTensors
116 """
117
118 # ╔═╡ 68c7a1d8-729e-4f38-abf2-26deb7a90cb1
119 md"""
120 ### Basic tensors
121 """
122
123 # ╔═╡ 2afde3fe-96ed-4d7e-a79b-fc880e0da268
124 LazyTensors.IdentityTensor(5) |> repl_show
125
126 # ╔═╡ 5451a071-14ae-47ae-99c5-4d65508d280f
127 LazyTensors.IdentityTensor(4,3) |> repl_show
128
129 # ╔═╡ b6b06fe9-de16-41ca-ad45-eef6dd038485
130 LazyTensors.ScalingTensor(2., (4,3)) |> repl_show
131
132 # ╔═╡ d1c8c3a0-76ec-4c32-853e-0471d71e5cf0
133 LazyTensors.DiagonalTensor([1,2,3,4]) |> repl_show
134
135 # ╔═╡ 6051c144-9982-4bd9-92f9-d0aaf3961872
136 LazyTensors.DenseTensor(rand(2,2,2,2), (1,2), (3,4)) |> repl_show
137
138 # ╔═╡ 83ed7f7e-c88d-4ee4-a53a-1b91e775ff52
139 md"""
140 ### Simple SBP-operators
141 """
142
143 # ╔═╡ 12a9f430-f96b-43f2-bf63-149b5a028fd7
144 begin
145 g1 = equidistant_grid(0,1,10)
146 g2 = equidistant_grid((0,0),(1,1),10, 11)
147 x̄((ξ, η)) = @SVector[2ξ + η*(1-η), 3η+(1+η/2)*ξ^2]
148 J((ξ, η)) = @SMatrix[
149 2 1-2η;
150 (2+η)*ξ 3+1/2*ξ^2;
151 ]
152 mg = mapped_grid(x̄, J, 10,10)
153 stencil_set2 = stencil_set = read_stencil_set(sbp_operators_path()*"standard_diagonal.toml"; order=2)
154 stencil_set4 = stencil_set = read_stencil_set(sbp_operators_path()*"standard_diagonal.toml"; order=4)
155 end;
156
157 # ╔═╡ e44f8d91-1cbf-44be-bef1-40e60c4a777f
158 first_derivative(g1, stencil_set2) |> repl_show
159
160 # ╔═╡ c378b88a-1d74-44a2-bdc1-b371da478de8
161 first_derivative(g1, stencil_set4) |> repl_show
162
163 # ╔═╡ 9614cda7-b48c-4925-89b5-113cf514f20f
164 first_derivative(g2, stencil_set2, 1) |> repl_show
165
166 # ╔═╡ 725e9430-4821-4939-bfef-6c186d2dc500
167 first_derivative(g2, stencil_set4, 2) |> repl_show
168
169 # ╔═╡ e8ca54a1-a6db-40a1-b44a-73e175894df4
170 second_derivative(g1, stencil_set2) |> repl_show
171
172 # ╔═╡ 5d1f10fe-f620-469c-822c-55955a5541ad
173 second_derivative(g1, stencil_set4) |> repl_show
174
175 # ╔═╡ fdc531d4-9d27-41dc-ba79-6febefde223a
176 second_derivative(g2, stencil_set2, 1) |> repl_show
177
178 # ╔═╡ fff2e04a-357f-4254-996e-d5ccd9ff31f8
179 second_derivative(g2, stencil_set4, 2) |> repl_show
180
181 # ╔═╡ 959b071e-1ef6-4f29-aa8b-d88bfef80c00
182 second_derivative_variable(g1, map(x->2x, g1), stencil_set2) |> repl_show
183
184 # ╔═╡ 0a0f7e77-a789-4fb3-a4c2-7853b67788ec
185 second_derivative_variable(g1, map(x->2x, g1), stencil_set4) |> repl_show
186
187 # ╔═╡ 177e0893-fbb1-4bb5-a108-e5990e943ab7
188 second_derivative_variable(g2, map(x->x[1]+x[2], g2), stencil_set2, 1) |> repl_show
189
190 # ╔═╡ f1b6bd54-baf6-4360-aec0-bd8d52497894
191 second_derivative_variable(g2, map(x->x[1]+x[2], g2), stencil_set4, 2) |> repl_show
192
193 # ╔═╡ a8f8343e-cd6f-451d-a2b3-e5f0f561f8af
194 undivided_skewed04(g1,4)[1] |> repl_show
195
196 # ╔═╡ 50291998-7194-4a0d-9c19-eacc48b3f5da
197 undivided_skewed04(g1,4)[2] |> repl_show
198
199 # ╔═╡ 1720af08-85e4-4502-b37e-9fa73008e221
200 undivided_skewed04(g2,4,1)[1] |> repl_show
201
202 # ╔═╡ 4a72f217-2423-4bc1-8452-eb28dde36689
203 undivided_skewed04(g2,4,2)[2] |> repl_show
204
205 # ╔═╡ d51b6bd7-0235-4a51-a989-4f7858363d02
206 md"""
207 ### Inner products
208 """
209
210 # ╔═╡ 48a28ade-73bb-461d-ab96-82f92ed199c8
211 inner_product(g1, stencil_set2) |> repl_show
212
213 # ╔═╡ 3c681a63-94a6-4677-aef7-df903c463896
214 inner_product(g1, stencil_set4) |> repl_show
215
216 # ╔═╡ db735370-153a-40f9-b77f-9f60e30a35c4
217 inner_product(g2, stencil_set2) |> repl_show
218
219 # ╔═╡ 613ebac7-50bc-424c-8fa2-064b64c93319
220 inner_product(g2, stencil_set4) |> repl_show
221
222 # ╔═╡ 9e7d7667-960e-491f-8b83-e3b01a0db5b0
223 inverse_inner_product(g2, stencil_set4) |> repl_show
224
225 # ╔═╡ 29488e48-1d42-4232-9d49-1ee77fb869d8
226 md"""
227 ### Boundary operators
228 """
229
230 # ╔═╡ c3005e74-5b96-4b0c-9c57-b7d02968ed94
231 boundary_restriction(g1, stencil_set, LowerBoundary()) |> repl_show
232
233 # ╔═╡ fd019973-0d54-4e31-b43b-f53a704cb01c
234 boundary_restriction(g1, stencil_set, UpperBoundary()) |> repl_show
235
236 # ╔═╡ df2e8af0-9ca5-4972-8771-f8bea1591f85
237 boundary_restriction(g2, stencil_set, CartesianBoundary{1,LowerBoundary}()) |> repl_show
238
239 # ╔═╡ 8e538109-16a1-4af7-a986-9dc1455b7de7
240 boundary_restriction(g2, stencil_set, CartesianBoundary{2,UpperBoundary}()) |> repl_show
241
242 # ╔═╡ 5f3744a4-72d8-4448-820f-a928bfaaf825
243 normal_derivative(g1, stencil_set, LowerBoundary()) |> repl_show
244
245 # ╔═╡ 4529b5c4-4905-4fd3-9aaa-5f88faa841c8
246 normal_derivative(g1, stencil_set, UpperBoundary()) |> repl_show
247
248 # ╔═╡ c3bb0450-a7d5-44c1-9ca9-9e1ecf2db9f8
249 normal_derivative(g2, stencil_set, CartesianBoundary{1,LowerBoundary}()) |> repl_show
250
251 # ╔═╡ da63e57a-0794-4cd8-9941-ada0e5c1c40e
252 normal_derivative(g2, stencil_set, CartesianBoundary{2,UpperBoundary}()) |> repl_show
253
254 # ╔═╡ 0b951425-979c-4ac9-8581-f690b729bab4
255 md"""
256 ## Tensor operations
257 """
258
259 # ╔═╡ a39bb6e2-f1fe-4206-8ee3-88ff0c075233
260 begin
261 Dx = first_derivative(g2, stencil_set2, 1)
262 Dy = first_derivative(g2, stencil_set4, 2)
263
264 v = map(x->sin(x[1]^2+x[2]^2), g2)
265 end;
266
267 # ╔═╡ 8cd052d9-f40e-4796-aeef-52c02b3bf156
268 Dx+Dy |> repl_show
269
270 # ╔═╡ 1b1b7d12-50ef-4c4e-9376-a353a56540c3
271 Dx∘Dy |> repl_show
272
273 # ╔═╡ 57e48b4c-eef6-433e-98a1-1006e844b368
274 Dx*v |> repl_show
275
276 # ╔═╡ e2bf2649-4770-4f52-9752-b61ce03c6f82
277 (Dx+Dy)*v |> repl_show
278
279 # ╔═╡ d163d363-853d-4d83-a2d3-f8dd6e8f552d
280 (Dx∘Dy)*v |> repl_show
281
282 # ╔═╡ 1c38d3f9-1839-468c-a368-4ef101bd4f18
283 laplace(g2, stencil_set2) |> repl_show
284
285 # ╔═╡ cf84cefb-2dbd-4b8d-880b-47cc350a7c43
286 laplace(g2, stencil_set4) |> repl_show
287
288 # ╔═╡ 67c73667-1f41-47b5-b59a-459787767f29
289 # laplace(mg, stencil_set2) |> repl_show
290
291 # ╔═╡ 4634c1a6-0520-4b0f-8d32-a1fdf2ebaea5
292 md"""
293 ## Appendix
294 """
295
296 # ╔═╡ 24788161-b29a-450a-bd35-f9c29e7ded9a
297 PlutoUI.TableOfContents()
298
299 # ╔═╡ Cell order:
300 # ╟─885c60d7-d33c-4741-ae49-6a57510ec7b5
301 # ╠═9ee3372a-e78d-4f74-84ce-e04208d1558d
302 # ╟─51c02ced-f684-417f-83f1-cade4edda43f
303 # ╠═25c90528-22cd-41ca-8572-ccd946928318
304 # ╠═e7f3e466-9833-428c-99ad-20bc9d88d951
305 # ╠═2e74f9b5-5b4f-4887-8a30-4655d560a45c
306 # ╠═365524b5-3182-4691-9817-1bbec1492c14
307 # ╠═d5725e1b-bc4f-4a95-975d-179c193908c9
308 # ╠═b824ef8d-5026-4861-9a23-45a7939fd38c
309 # ╠═fbe365a2-f95e-4297-8326-c18d22932869
310 # ╠═56670aff-0343-41cb-a653-35a61376dda4
311 # ╠═b5a6491e-a93e-4058-8ceb-be1dc4d4c100
312 # ╠═828d57a1-ee58-4204-8050-78127821a4c6
313 # ╠═127d34f6-69f7-4082-a74b-0be86942f153
314 # ╠═c46a278e-a102-4544-82d8-7df816440410
315 # ╟─5aa7079c-8005-47f1-bb82-c35f3aa54b42
316 # ╠═08f493ed-189c-43f3-86f2-95fc475ec0e7
317 # ╟─f7244bf7-8266-469f-b07f-30c203d9af48
318 # ╠═0e14bd28-5dd1-44c4-abf4-23b70546bd49
319 # ╠═fcb74341-6b03-4ada-8f5d-bc245c23679b
320 # ╠═8dec053b-eaae-463d-800b-b8d89d5d550b
321 # ╠═c1172a36-c5d7-47dc-bc79-af0d43a8f6ee
322 # ╟─9c889176-865b-402d-81b5-71957d2878f7
323 # ╠═85e8e748-e575-4a29-80c7-22d110578343
324 # ╠═804ad722-9081-4d1d-b0d2-c536a26fe20d
325 # ╟─a70c689d-0851-497f-938a-e5c92ce59ddb
326 # ╟─68c7a1d8-729e-4f38-abf2-26deb7a90cb1
327 # ╠═2afde3fe-96ed-4d7e-a79b-fc880e0da268
328 # ╠═5451a071-14ae-47ae-99c5-4d65508d280f
329 # ╠═b6b06fe9-de16-41ca-ad45-eef6dd038485
330 # ╠═d1c8c3a0-76ec-4c32-853e-0471d71e5cf0
331 # ╠═6051c144-9982-4bd9-92f9-d0aaf3961872
332 # ╟─83ed7f7e-c88d-4ee4-a53a-1b91e775ff52
333 # ╠═12a9f430-f96b-43f2-bf63-149b5a028fd7
334 # ╠═e44f8d91-1cbf-44be-bef1-40e60c4a777f
335 # ╠═c378b88a-1d74-44a2-bdc1-b371da478de8
336 # ╠═9614cda7-b48c-4925-89b5-113cf514f20f
337 # ╠═725e9430-4821-4939-bfef-6c186d2dc500
338 # ╠═e8ca54a1-a6db-40a1-b44a-73e175894df4
339 # ╠═5d1f10fe-f620-469c-822c-55955a5541ad
340 # ╠═fdc531d4-9d27-41dc-ba79-6febefde223a
341 # ╠═fff2e04a-357f-4254-996e-d5ccd9ff31f8
342 # ╠═959b071e-1ef6-4f29-aa8b-d88bfef80c00
343 # ╠═0a0f7e77-a789-4fb3-a4c2-7853b67788ec
344 # ╠═177e0893-fbb1-4bb5-a108-e5990e943ab7
345 # ╠═f1b6bd54-baf6-4360-aec0-bd8d52497894
346 # ╠═a8f8343e-cd6f-451d-a2b3-e5f0f561f8af
347 # ╠═50291998-7194-4a0d-9c19-eacc48b3f5da
348 # ╠═1720af08-85e4-4502-b37e-9fa73008e221
349 # ╠═4a72f217-2423-4bc1-8452-eb28dde36689
350 # ╟─d51b6bd7-0235-4a51-a989-4f7858363d02
351 # ╠═48a28ade-73bb-461d-ab96-82f92ed199c8
352 # ╠═3c681a63-94a6-4677-aef7-df903c463896
353 # ╠═db735370-153a-40f9-b77f-9f60e30a35c4
354 # ╠═613ebac7-50bc-424c-8fa2-064b64c93319
355 # ╠═9e7d7667-960e-491f-8b83-e3b01a0db5b0
356 # ╟─29488e48-1d42-4232-9d49-1ee77fb869d8
357 # ╠═c3005e74-5b96-4b0c-9c57-b7d02968ed94
358 # ╠═fd019973-0d54-4e31-b43b-f53a704cb01c
359 # ╠═df2e8af0-9ca5-4972-8771-f8bea1591f85
360 # ╠═8e538109-16a1-4af7-a986-9dc1455b7de7
361 # ╠═5f3744a4-72d8-4448-820f-a928bfaaf825
362 # ╠═4529b5c4-4905-4fd3-9aaa-5f88faa841c8
363 # ╠═c3bb0450-a7d5-44c1-9ca9-9e1ecf2db9f8
364 # ╠═da63e57a-0794-4cd8-9941-ada0e5c1c40e
365 # ╟─0b951425-979c-4ac9-8581-f690b729bab4
366 # ╠═a39bb6e2-f1fe-4206-8ee3-88ff0c075233
367 # ╠═8cd052d9-f40e-4796-aeef-52c02b3bf156
368 # ╠═1b1b7d12-50ef-4c4e-9376-a353a56540c3
369 # ╠═57e48b4c-eef6-433e-98a1-1006e844b368
370 # ╠═e2bf2649-4770-4f52-9752-b61ce03c6f82
371 # ╠═d163d363-853d-4d83-a2d3-f8dd6e8f552d
372 # ╠═1c38d3f9-1839-468c-a368-4ef101bd4f18
373 # ╠═cf84cefb-2dbd-4b8d-880b-47cc350a7c43
374 # ╠═67c73667-1f41-47b5-b59a-459787767f29
375 # ╟─4634c1a6-0520-4b0f-8d32-a1fdf2ebaea5
376 # ╠═1f8a7cfa-94cc-41bf-a8c8-2dc5218741e0
377 # ╠═24788161-b29a-450a-bd35-f9c29e7ded9a