Mercurial > repos > public > sbplib_julia
comparison grid_refactor.md @ 1222:5f677cd6f0b6 refactor/grids
Start refactoring
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Sat, 18 Feb 2023 11:37:35 +0100 |
parents | |
children | d58015e224ca |
comparison
equal
deleted
inserted
replaced
1221:b3b4d29b46c3 | 1222:5f677cd6f0b6 |
---|---|
1 # Grids refactor | |
2 | |
3 ## Mål | |
4 * Embedded grids | |
5 * Vektorvärda grid funktioner, speciellt koordinat-funktionen | |
6 * Olika griddar i olika riktningar? | |
7 * Tex periodiskt i en riktning och intervall i en. | |
8 * Tex ostrukturerat i ett par och strukturerat i en. | |
9 * Enkelt att evaluera på 0d-grid | |
10 | |
11 ## Frågor | |
12 | |
13 | |
14 ### Ska `Grid` vara en AbstractArray? | |
15 Efter som alla nät ska agera som en gridfunktion för koordinaterna måste man | |
16 svara på frågan hur vi hanterar generellla gridfunktioner samtidigt. | |
17 | |
18 Några saker att förhålla sig till: | |
19 - Multiblock nät? | |
20 - Unstructured? | |
21 - Triangular structured grids? | |
22 - Non-simply connected? | |
23 - CG/DG-nät | |
24 | |
25 | |
26 Om alla nät är någon slags AbstractArray så kan tillexempel ett multiblock nät vara en AbstractArray{<:Grid, 1} och motsvarande gridfunktioner AbstractArray{<:AbstractArray,1}. | |
27 Där man alltså först indexerar för vilket när man vill åt och sedan indexerar nätet. Tex `mg[2][32,12]`. | |
28 | |
29 Ett ostrukturerat nät med till exempel trianglar skulle vi kunna se på samma sätt som ett multiblocknät. Antagligen har de två typerna av nät olika underliggande datastruktur anpassade efter ändamålet. | |
30 | |
31 Hur fungerar tankarna ovan om man har tex tensorprodukten av ett ostrukturerat nät och en ekvidistant nät? | |
32 ```julia | |
33 m = Mesh2DTriangle(10) | |
34 e = EqudistantGrid(range(1:10) | |
35 | |
36 e[4] # fourth point | |
37 | |
38 m[3][5] # Fifth node in third triangle | |
39 m[3,5] # Fifth node in third triangle # Funkar bara om alla nät är samma, (stämmer inte i mb-fallet) | |
40 | |
41 g = TensorGrid(m, e) | |
42 | |
43 g[3,4][5] # ?? | |
44 g[3,4] # ?? | |
45 | |
46 g[3,5,4] # ?? | |
47 | |
48 | |
49 | |
50 ``` | |
51 | |
52 Alla grids kanske inte är AbstractArray? Måste de vara rektangulära? Det blir svårt för strukturerade trianglar och NSC-griddar. Men de ska i allafall vara indexerbara? | |
53 | |
54 Man skulle kunna utesluta MultiblockGrid i tensorgrids | |
55 | |
56 CG-nät och DG-nät blir olika. | |
57 På CG-nät kanske man både vill indexera noder och trianglar beroende på vad man håller på med? | |
58 | |
59 #### Försök till slutsater | |
60 * Multiblock-nät indexeras i två nivåer tex `g[3][3,4]` | |
61 * Vi struntar i att implementera multiblock-nät som en del av ett tensorgrid till att börja med. | |
62 * En grid kan inte alltid vara en AbstractArray eftersom till exempel ett NCS eller strukturerad triangel inte har rätt form. | |
63 * Om vi har nod-indexerade ostrukturerade nät borde de fungera med TensorGrid. | |
64 * | |
65 | |
66 ### Kan vi introducera 1d griddar och tensorgriddar? | |
67 * Vanligt intervallgrid | |
68 * Periodiskt grid | |
69 * 0-dimensionellt grid | |
70 | |
71 Det skulle kunna lösa frågan med embedded-griddar | |
72 och frågan om mixade grids. | |
73 | |
74 En svårighet kan vara att implemetera indexeringen för tensorgridden. Är det | |
75 lätt att göra den transparent för kompilatorn? | |
76 | |
77 Läs i notes.md om: Grids embedded in higher dimensions | |
78 | |
79 Periodiska gridfunktioner? Eller ska vi bara skita i det och låta användaren | |
80 hantera det själv? Blir det krångligt i högre dimensioner? | |
81 | |
82 | |
83 ### Hur ska vi hantera gridfunktioner med flera komponenter? | |
84 Tex koordinat-funktionen på nätet? | |
85 | |
86 Funkar det att ha StaticArray som element type? | |
87 Kan man köra rakt på med en operator då? | |
88 | |
89 Vi skulle också kunna använda ArraysOfArrays. Skillnaden blir att den elementtypen är Array{T,N}. Vilket betyder att den är by reference? | |
90 Frågan är om kompilatorn kommer att bry sig... Jag skulle luta mot StaticArrays for safety | |
91 | |
92 Läs i notes.md om: Vector valued grid functions | |
93 | |
94 ## Notes from pluto notebook | |
95 - Är det dåligt att använda ndims om antalet index inte matchar? | |
96 - Tex ostrukturerat grid | |
97 - Baserat på hur Array fungerar och ndims docs borde den nog returnera | |
98 antalet index och inte griddens dimension | |
99 - Å andra sidan kanske man inte behöver veta viken dimension det är? Fast det känns konstigt... | |
100 - Should we keep the `points` function? | |
101 - Maybe it's better to support `collect` on the grid? | |
102 - How to handle boundary identifiers and boundary grids on `TensorGrid`? | |
103 | |
104 |