annotate src/SbpOperators/volumeops/derivatives/dissipation.jl @ 1021:ee5a641a8277 feature/dissipation_operators

Add some tests and start implementing dissipation()
author Jonatan Werpers <jonatan@werpers.com>
date Fri, 18 Mar 2022 15:44:03 +0100
parents 3f5137ce3aa1
children 129262c8e897
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1021
ee5a641a8277 Add some tests and start implementing dissipation()
Jonatan Werpers <jonatan@werpers.com>
parents: 1020
diff changeset
1 function dissipation(g::EquidistantGrid, p, direction)
ee5a641a8277 Add some tests and start implementing dissipation()
Jonatan Werpers <jonatan@werpers.com>
parents: 1020
diff changeset
2 h_inv = inverse_spacing(g)[direction]
ee5a641a8277 Add some tests and start implementing dissipation()
Jonatan Werpers <jonatan@werpers.com>
parents: 1020
diff changeset
3
ee5a641a8277 Add some tests and start implementing dissipation()
Jonatan Werpers <jonatan@werpers.com>
parents: 1020
diff changeset
4 # D = volume_operator(g,CenteredStencil(1),(CenteredStencil(1)), )
ee5a641a8277 Add some tests and start implementing dissipation()
Jonatan Werpers <jonatan@werpers.com>
parents: 1020
diff changeset
5 return nothing, nothing
ee5a641a8277 Add some tests and start implementing dissipation()
Jonatan Werpers <jonatan@werpers.com>
parents: 1020
diff changeset
6 end
ee5a641a8277 Add some tests and start implementing dissipation()
Jonatan Werpers <jonatan@werpers.com>
parents: 1020
diff changeset
7
ee5a641a8277 Add some tests and start implementing dissipation()
Jonatan Werpers <jonatan@werpers.com>
parents: 1020
diff changeset
8 dissipation(g::EquidistantGrid{1}, p) = dissipation(g, p, 1)
ee5a641a8277 Add some tests and start implementing dissipation()
Jonatan Werpers <jonatan@werpers.com>
parents: 1020
diff changeset
9
1020
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
10 function dissipation_interior_weights(p)
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
11 if p == 0
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
12 return (1,)
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
13 end
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
14
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
15 return (0, dissipation_interior_weights(p-1)...) .- (dissipation_interior_weights(p-1)..., 0)
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
16 end
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
17
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
18 function dissipation_interior_stencil(p)
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
19 w = dissipation_interior_weights(p)
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
20 Stencil(w..., center=midpoint(w))
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
21 end
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
22
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
23 function dissipation_transpose_interior_stencil(p)
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
24 w = dissipation_interior_weights(p)
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
25 Stencil(w..., center=midpoint_transpose(w))
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
26 end
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
27
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
28
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
29 midpoint(weights) = length(weights)÷2 + 1
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
30 midpoint_transpose(weights) = length(weights)+1 - midpoint(weights)
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
31
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
32 dissipation_lower_closure_size(weights) = midpoint(weights) - 1
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
33 dissipation_upper_closure_size(weights) = length(weights) - midpoint(weights)
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
34
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
35 dissipation_lower_closure_stencils(interior_weights) = ntuple(i->Stencil(interior_weights..., center=i ), dissipation_lower_closure_size(interior_weights))
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
36 dissipation_upper_closure_stencils(interior_weights) = ntuple(i->Stencil(interior_weights..., center=length(interior_weights)-dissipation_upper_closure_size(interior_weights)+i), dissipation_upper_closure_size(interior_weights))
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
37
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
38 dissipation_transpose_lower_closure_stencils(interior_weights) = ntuple(i->dissipation_transpose_lower_closure_stencil(interior_weights, i), length(interior_weights))
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
39 dissipation_transpose_upper_closure_stencils(interior_weights) = reverse(ntuple(i->dissipation_transpose_upper_closure_stencil(interior_weights, i), length(interior_weights)))
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
40
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
41
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
42 function dissipation_transpose_lower_closure_stencil(interior_weights, i)
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
43 w = ntuple(k->interior_weights[i], dissipation_lower_closure_size(interior_weights))
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
44
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
45 for k ∈ i:-1:1
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
46 w = (w..., interior_weights[k])
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
47 end
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
48
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
49 return Stencil(w..., center = i)
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
50 end
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
51
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
52 function dissipation_transpose_upper_closure_stencil(interior_weights, i)
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
53 j = length(interior_weights)+1-i
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
54 w = ntuple(k->interior_weights[j], dissipation_upper_closure_size(interior_weights))
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
55
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
56 for k ∈ j:1:length(interior_weights)
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
57 w = (interior_weights[k], w...)
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
58 end
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
59
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
60 return Stencil(w..., center = length(interior_weights)-midpoint(interior_weights)+1)
3f5137ce3aa1 Start adding helper functions for building dissipation operators
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
61 end