annotate Notes.md @ 606:8f9b3eac128a

Add a bunch of stuff to TODO.md and Notes.md
author Jonatan Werpers <jonatan@werpers.com>
date Wed, 02 Dec 2020 09:35:14 +0100
parents 1c41f4fd3e61
children d26231227b89
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
318
0c8d4a734c4f Add some todos and add a Notes.md file
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
1 # Notes
0c8d4a734c4f Add some todos and add a Notes.md file
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
2
0c8d4a734c4f Add some todos and add a Notes.md file
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
3 ## Known size of range and domain?
320
d705b397aa33 Clean up Notes.md and TODO.md
Jonatan Werpers <jonatan@werpers.com>
parents: 319
diff changeset
4 Is there any reason to use a trait to differentiate between fixed size and unknown size?
d705b397aa33 Clean up Notes.md and TODO.md
Jonatan Werpers <jonatan@werpers.com>
parents: 319
diff changeset
5
379
de4746d6d126 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 332
diff changeset
6 When do we need to know the size of the range and domain?
de4746d6d126 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 332
diff changeset
7 * When indexing to provide boundschecking?
de4746d6d126 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 332
diff changeset
8 * When doing specialised computations for different parts of the range/domain?
de4746d6d126 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 332
diff changeset
9 * More?
319
05ac7d7f9176 Move research and thinking from TODO.md to Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
10
379
de4746d6d126 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 332
diff changeset
11 Maybe if we should have dynamic sizing it could be only for the range. `domain_size` would not be implemented. And the `range_size` would be a function of a vector that the TensorMapping is applied to.
332
535f1bff4bcc Add some notes and some todos
Jonatan Werpers <jonatan@werpers.com>
parents: 320
diff changeset
12
319
05ac7d7f9176 Move research and thinking from TODO.md to Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
13 ## Reasearch and thinking
05ac7d7f9176 Move research and thinking from TODO.md to Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
14 - [ ] Use a trait to indicate that a TensorMapping har the same range and domain?
05ac7d7f9176 Move research and thinking from TODO.md to Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
15 - [ ] Rename all the Tensor stuff to just LazyOperator, LazyApplication and so on?
05ac7d7f9176 Move research and thinking from TODO.md to Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
16 - [ ] Check how the native julia doc generator works
05ac7d7f9176 Move research and thinking from TODO.md to Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
17 - [ ] Check if Vidars design docs fit in there
05ac7d7f9176 Move research and thinking from TODO.md to Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
18 - [ ] Create a macro @lazy which replaces a binary op (+,-) by its lazy equivalent? Would be a neat way to indicate which evaluations are lazy without cluttering/confusing with special characters.
05ac7d7f9176 Move research and thinking from TODO.md to Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
19 - [ ] Specificera operatorer i TOML eller något liknande?
05ac7d7f9176 Move research and thinking from TODO.md to Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 318
diff changeset
20 H.. H_gamma etc.)
606
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
21 - [ ] Dispatch on Lower() instead of the type Lower so `::Lower` instead of `::Type{Lower}` ???
332
535f1bff4bcc Add some notes and some todos
Jonatan Werpers <jonatan@werpers.com>
parents: 320
diff changeset
22 Seems better unless there is some specific reason to use the type instead of the value.
379
de4746d6d126 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 332
diff changeset
23 - [ ] How do we handle mixes of periodic and non-periodic grids? Seems it should be supported on the grid level and on the 1d operator level. Between there it should be transparent.
de4746d6d126 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 332
diff changeset
24 - [ ] Can we have a trait to tell if a TensorMapping is transposable?
de4746d6d126 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 332
diff changeset
25 - [ ] Is it ok to have "Constructors" for abstract types which create subtypes? For example a Grids() functions that gives different kind of grids based on input?
410
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
26
606
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
27 ## Regions and tensormappings
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
28 - [ ] Use a trait to indicate if a TensorMapping uses indices with regions.
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
29 The default should be that they do NOT.
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
30 - [ ] What to name this trait? Can we call it IndexStyle but not export it to avoid conflicts with Base.IndexStyle?
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
31 - [ ] Figure out repeated application of regioned TensorMappings. Maybe an instance of a tensor mapping needs to know the exact size of the range and domain for this to work?
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
32
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
33 ## Boundschecking and dimension checking
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
34 Does it make sense to have boundschecking only in getindex methods?
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
35 This would mean no bounds checking in applys, however any indexing that they do would be boundschecked. The only loss would be readability of errors. But users aren't really supposed to call apply directly anyway.
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
36
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
37 Preferably dimensions and sizes should be checked when lazy objects are created, for example TensorApplication, TensorComposition and so on. If dimension checks decreases performance we can make them skippable later.
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
38
410
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
39 ## Vector valued grid functions
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
40 Från slack konversation:
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
41
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
42 Jonatan Werpers:
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
43 Med vektorvärda gridfunktioner vill vi ju fortfarande att grid funktionen ska vara till exempel AbstractArray{LitenVektor,2}
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
44 Och att man ska kunna göra allt man vill med LitenVektor
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
45 typ addera, jämföra osv
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
46 Och då borde points returnera AbstractArray{LitenVektor{Float,2},2} för ett 2d nät
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
47 Men det kanske bara ska vara Static arrays?
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
48
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
49 Vidar Stiernström:
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
50 Ja, jag vet inte riktigt vad som är en rimlig representation
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
51 Du menar en vektor av static arrays då?
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
52
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
53 Jonatan Werpers:
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
54 Ja, att LitenVektor är en StaticArray
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
55
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
56 Vidar Stiernström:
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
57 Tuplar känns typ rätt inuitivt för att representera värdet i en punkt
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
58 men
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
59 det suger att man inte har + och - för dem
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
60
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
61 Jonatan Werpers:
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
62 Ja precis
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
63
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
64 Vidar Stiernström:
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
65 så kanske är bra med static arrays i detta fall
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
66
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
67 Jonatan Werpers:
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
68 Man vill ju kunna köra en Operator rakt på och vara klar eller?
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
69
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
70 Vidar Stiernström:
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
71 Har inte alls tänkt på hur det vi gör funkar mot vektorvärda funktioner
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
72 men känns som staticarrays är hur man vill göra det
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
73 tuplar är ju immutable också
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
74 blir jobbigt om man bara agerar på en komponent då
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
75
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
76 Jonatan Werpers:
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
77 Hm…
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
78 Tål att tänkas på
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
79 Men det lär ju bli mer indirektion med mutables eller?
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
80 Hur fungerar det?
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
81 Det finns ju hur som helst både SVector och MVector i StaticArrays
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
82
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
83 Vidar Stiernström:
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
84 När vi jobbat i c/c++ och kollat runt lite hur man brukar göra så lagrar man i princip alla sina obekanta i en lång vektor och så får man specificera i funktioerna vilken komponent man agerar på och till vilken man skriver
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
85 så man lagrar grejer enl: w = [u1, v1, u2, v2, …] i 1D.
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
86 Men alltså har ingen aning hur julia hanterar detta
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
87
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
88 Jonatan Werpers:
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
89 Det vi är ute efter kanske är att en grid funcktion är en AbstractArray{T,2} where T<:NågotSomViKanRäknaMed
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
90 Och så får den typen var lite vad som helst.
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
91
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
92 Vidar Stiernström:
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
93 Tror det kan vara farligt att ha nåt som är AbstractArray{LitenArray{NDof},Dim}
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
94 Jag gissar att det kompilatorn vill ha är en stor array med doubles
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
95
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
96 Jonatan Werpers:
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
97 Och sen är det upp till den som använder grejerna att vara smart
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
98 Vill man vara trixig kan man väl då imlementera SuperHaxxorGridFunction <: AbstractArray{Array{…},2} som lagrar allt linjärt eller något sånt
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
99 Det kommer väl lösa sig när man börjar implementera vektorvärda saker
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
100 Euler nästa!
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
101 New
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
102 Vidar Stiernström:
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
103 Det vore skönt att inte behöva skriva såhär varje gång man testar mot en tupel :smile: @test [gp[i]...] ≈ [p[i]...] atol=5e-13
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
104
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
105 Jonatan Werpers:
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
106 https://github.com/JuliaArrays/ArraysOfArrays.jl
26e186b565b3 Add some notes about vector valued grid functions
Jonatan Werpers <jonatan@werpers.com>
parents: 379
diff changeset
107 https://github.com/jw3126/Setfield.jl
423
10a67ac48d6e Add some notes
Jonatan Werpers <jonatan@werpers.com>
parents: 410
diff changeset
108
10a67ac48d6e Add some notes
Jonatan Werpers <jonatan@werpers.com>
parents: 410
diff changeset
109 ### Test-applikationer
10a67ac48d6e Add some notes
Jonatan Werpers <jonatan@werpers.com>
parents: 410
diff changeset
110 div och grad operationer
10a67ac48d6e Add some notes
Jonatan Werpers <jonatan@werpers.com>
parents: 410
diff changeset
111
606
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
112 Enligt Wikipedia verkar det som att `∇⋅` agerar på första dimensionen av ett tensor fält och `div()` på sista.
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
113 Om man generaliserar kanske `∇` i så fall bara lägger till en dimension i början.
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
114
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
115 Kan vi implementera `⋅`(\cdot) så att de fungerar som man vill för både tensor-fält och tensor-operatorer?
427
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
116
606
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
117 Är `∇` ett tensor-fält av tensor-operatorer? Vad är ett tensor-fält i vår kod? Är det en special-fall av en tensor-mapping?
427
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
118
606
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
119 ### Grid-funktionen
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
120 Grid-funktionon har typen `AbstractArray{T,2} where T`.
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
121 `T` kan vara lite vad som helst, tillexemel en SVector eller Array, eller tuple. TensorOperatorerna bryr sig inte om exakt vad det är, mer än att typen måste stödja de operationer som operatorn använder.
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
122
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
123 En nackdel kan vara hur man ska få ut gridfunktionen för tex andra komponenten.
427
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
124
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
125 Syntax:
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
126 ```
606
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
127 f(x̄) = x̄
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
128 gf = evalOn(g, f)
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
129 gf[2,3] # x̄ för en viss gridpunkt
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
130 gf[2,3][2] # x̄[2] för en viss gridpunkt
427
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
131 ```
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
132
606
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
133 Note: Behöver bestämma om eval on skickar in `x̄` eller `x̄...` till `f`. Eller om man kan stödja båda.
427
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
134
606
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
135 ### Tensor operatorer
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
136 Vi kan ha tensor-operatorer som agerar på ett skalärt fält och ger ett vektorfält eller tensorfält.
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
137 Vi kan också ha tensor-operatorer som agerar på ett vektorfält eller tensorfält och ger ett skalärt fält.
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
138
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
139 TBD: Just nu gör `apply_transpose` antagandet att domän-typen är samma som range-typen. Det behöver vi på något sätt bryta. Ett alternativ är låta en TensorMapping ha `T_domain` och `T_range` istället för bara `T`. Känns dock lite grötigt. Ett annat alternativ skulle vara någon typ av trait för transpose? Den skulle kunna innehålla typen som transponatet agerar på? Vet inte om det fungerar dock.
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
140
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
141 TBD: Vad är målet med `T`-parametern för en TensorMapping? Om vi vill kunna applicera en difference operator på vad som helst kan man inte anta att en `TensorMapping{T}` bara agerar på instanser av `T`.
427
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
142
606
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
143 Man kan implementera `∇` som en tensormapping som agerar på T och returnerar `StaticVector{N,T} where N`.
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
144 (Man skulle eventuellt också kunna låta den agera på `StaticMatrix{N,T,D} where N` och returnera `StaticMatrix{M,T,D+1}`. Frågan är om man vinner något på det...)
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
145
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
146 Skulle kunna ha en funktion `range_type(::TensorMapping, ::Type{domain_type})`
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
147
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
148 Kanske kan man implementera `⋅(tm::TensorMapping{R,D}, v::AbstractArray{T,D})` där T är en AbstractArray, tm på något sätt har komponenter, lika många som T har element.
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
149
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
150 ### Ratade alternativ:
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
151
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
152
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
153 #### 2.AbstractArray{T,2+1} where T (NOPE!)
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
154 Blir inte den här. Bryter mot alla tankar om hur grid funktioner ska fungera. Om de tillåts ha en annan dimension än nätet blir allt hemskt.
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
155
427
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
156 Man låter helt enkelt arrayen ha en extra dimension. En fördel är att man har en väldigt "native" typ. En nackdel kan vara att det eventuellt blir rörigt vilken dimension olika operatorer ska agera på. I värsta fall behöver vi "kroneckra in" de tillagda dimensionerna. Vektorfältets index kommer också att bli det första eftersom vi vill att de ska lagras kontinuerligt i minnet pga chachen. (Går kanske att lösa med en custom typ men då krånglar man till det för sig). En fördel skulle vara att man enkelt får ut olika komponenter.
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
157
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
158 Syntax:
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
159 ```
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
160 gf = eval_on_grid(g,f)
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
161 gf[:,2,3] # Hela vektorn för en gridpunkt
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
162 gf[2,2,3] # Andra komponenten av vektor fältet i en punkt.
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
163 gf[2,:,:] #
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
164 ```
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
165
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
166 ### Evaluering av funktioner på nät
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
167 Hur ska man skriva funktioner som evalueras på nätet? `f(x,y) = ...` eller `f(x̄) = ...`? Eller båda? Kan eval_on_grid se skillnad eller får användaren specificera?
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
168
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
169 ```
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
170 f(x,y) = [x^2, y^2]
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
171 f(x̄) = [x̄[1]^2, x̄[2]^2]
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
172 ```
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
173
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
174 Påverkas detta av hur vi förväntar oss kunna skapa lata gridfunktioner?
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
175
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
176 ### Komponenter som gridfunktioner
606
8f9b3eac128a Add a bunch of stuff to TODO.md and Notes.md
Jonatan Werpers <jonatan@werpers.com>
parents: 427
diff changeset
177 En viktig operation för vektor fält är att kunna få ut komponenter som grid-funktioner. Detta behöver antagligen kunna ske lazy.
427
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
178 Det finns ett par olika lösningar:
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
179 * Implementera en egen typ av view som tar hand om detta. Eller Accessors.jl?
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
180 * Använda en TensorMapping
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
181 * Någon typ av lazy-broadcast
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
182 * En lazy array som applicerar en funktion för varje element.
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
183
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
184 Skulle vara en fördel om det är hyffsat generiskt så att en eventuell användare kan utöka det enkelt om de har någon egen exotisk typ. Eller ska man vila helt på
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
185
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
186 Syntax:
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
187 ```
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
188 gf = eval(...)
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
189 component(gf,2) # Andra komponenten av en vektor
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
190 component(gf,2,3) # (2,3) elementet av en matris
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
191 component(gf,:,2) # Andra kolumnen av en matris
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
192 @ourview gf[:,:][2]
1c41f4fd3e61 Add some notes and todos
Jonatan Werpers <jonatan@werpers.com>
parents: 423
diff changeset
193 ```