Mercurial > repos > public > sbplib_julia
annotate sbpD2.jl @ 6:cb8e50ca9e15
Add attempt att apply methods for Laplace
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Mon, 17 Dec 2018 14:18:22 +0100 |
parents | 2737156fb884 |
children | 433008d3b7d3 |
rev | line source |
---|---|
0
b714e341a0ba
Starting julia project
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
1 |
1 | 2 struct D2{T} |
3 quadratureClosure::Vector{T} | |
4 | 4 innerStencil::Stencil |
5 closureStencils::Vector{Stencil} # TBD: Should this be a tuple? | |
1 | 6 eClosure::Vector{T} |
7 dClosure::Vector{T} | |
8 end | |
2
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
1
diff
changeset
|
9 |
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
1
diff
changeset
|
10 function closureSize(D::D2)::Int |
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
1
diff
changeset
|
11 return length(quadratureClosure) |
43be32298ae2
Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents:
1
diff
changeset
|
12 end |
3 | 13 |
4 | 14 struct Stencil{T} |
3 | 15 range::NTuple{2,Int} |
4 | 16 weights::Vector{T} # TBD: Should this be a tuple? |
3 | 17 function Stencil(range, weights) |
18 width = range[2]-range[1]+1 | |
19 if width != length(weights) | |
20 error("The width and the number of weights must be the same") | |
21 end | |
22 new(range, weights) | |
23 end | |
24 end | |
25 | |
5
2737156fb884
Add flip method for stencils
Jonatan Werpers <jonatan@werpers.com>
parents:
4
diff
changeset
|
26 function flip(s::Stencil) |
2737156fb884
Add flip method for stencils
Jonatan Werpers <jonatan@werpers.com>
parents:
4
diff
changeset
|
27 range = (-s.range[2], -s.range[1]) |
2737156fb884
Add flip method for stencils
Jonatan Werpers <jonatan@werpers.com>
parents:
4
diff
changeset
|
28 s = Stencil(range, s.weights(end:-1:1)) |
2737156fb884
Add flip method for stencils
Jonatan Werpers <jonatan@werpers.com>
parents:
4
diff
changeset
|
29 end |
2737156fb884
Add flip method for stencils
Jonatan Werpers <jonatan@werpers.com>
parents:
4
diff
changeset
|
30 |
3 | 31 # Provides index into the Stencil based on offset for the root element |
32 function Base.getindex(s::Stencil, i::Int) | |
33 if s.range[1] <= i <= s.range[2] | |
34 return s.weights[1 + i - s.range[1]] | |
35 else | |
36 return 0 | |
37 end | |
38 end | |
39 | |
40 function apply(s::Stencil, v::AbstractVector, i::Int) | |
41 w = zero(v[0]) | |
42 for j ∈ i+(s.range[1]:s.range[2]) | |
43 w += v[j] | |
44 end | |
45 return w | |
46 end |