comparison sbpD2.jl @ 84:48079bd39969

Change to using tuples in stencils and ops
author Jonatan Werpers <jonatan@werpers.com>
date Fri, 25 Jan 2019 15:20:40 +0100
parents 8c4cfa680e5a
children 8d505e9bc715 c0729ade65da
comparison
equal deleted inserted replaced
77:2be36b38389d 84:48079bd39969
24 @enum Parity begin 24 @enum Parity begin
25 odd = -1 25 odd = -1
26 even = 1 26 even = 1
27 end 27 end
28 28
29 struct D2{T} <: ConstantStencilOperator 29 struct D2{T,N,M,K} <: ConstantStencilOperator
30 quadratureClosure::Vector{T} 30 quadratureClosure::Vector{T}
31 innerStencil::Stencil 31 innerStencil::Stencil{T,N}
32 closureStencils::Vector{Stencil} # TBD: Should this be a tuple? 32 closureStencils::NTuple{M, Stencil{T,K}}
33 eClosure::Vector{T} 33 eClosure::Vector{T}
34 dClosure::Vector{T} 34 dClosure::Vector{T}
35 parity::Parity 35 parity::Parity
36 end 36 end
37 37
46 # Create inner stencil 46 # Create inner stencil
47 innerStencilWeights = stringToVector(Float64, d["inner_stencil"][1]) 47 innerStencilWeights = stringToVector(Float64, d["inner_stencil"][1])
48 width = length(innerStencilWeights) 48 width = length(innerStencilWeights)
49 r = (-div(width,2), div(width,2)) 49 r = (-div(width,2), div(width,2))
50 50
51 innerStencil = Stencil(r, innerStencilWeights) 51 innerStencil = Stencil(r, Tuple(innerStencilWeights))
52 52
53 # Create boundary stencils 53 # Create boundary stencils
54 boundarySize = length(d["boundary_stencils"]) 54 boundarySize = length(d["boundary_stencils"])
55 closureStencils = Vector{Stencil}() 55 closureStencils = Vector{Stencil}()
56 56
57 for i ∈ 1:boundarySize 57 for i ∈ 1:boundarySize
58 stencilWeights = stringToVector(Float64, d["boundary_stencils"][i]) 58 stencilWeights = stringToVector(Float64, d["boundary_stencils"][i])
59 width = length(stencilWeights) 59 width = length(stencilWeights)
60 r = (1-i,width-i) 60 r = (1-i,width-i)
61 push!(closureStencils,Stencil(r, stencilWeights)) 61 closureStencils = (closureStencils..., Stencil(r, Tuple(stencilWeights)))
62 end 62 end
63 63
64 d2 = D2( 64 d2 = D2(
65 stringToVector(Float64, h["closure"][1]), 65 stringToVector(Float64, h["closure"][1]),
66 innerStencil, 66 innerStencil,