comparison sbpD2.jl @ 101:19031733bbbf cell_based_test

Convert D2 to only use tuples
author Jonatan Werpers <jonatan@werpers.com>
date Wed, 06 Feb 2019 23:08:11 +0100
parents 49796ca2dfa0
children 6c6979ff17f4 f01b70b81e95
comparison
equal deleted inserted replaced
100:49796ca2dfa0 101:19031733bbbf
40 odd = -1 40 odd = -1
41 even = 1 41 even = 1
42 end 42 end
43 43
44 struct D2{T,N,M,K} <: ConstantStencilOperator 44 struct D2{T,N,M,K} <: ConstantStencilOperator
45 quadratureClosure::Vector{T} 45 quadratureClosure::NTuple{M,T}
46 innerStencil::Stencil{T,N} 46 innerStencil::Stencil{T,N}
47 closureStencils::NTuple{M, Stencil{T,K}} 47 closureStencils::NTuple{M,Stencil{T,K}}
48 eClosure::Vector{T} 48 eClosure::NTuple{M,T}
49 dClosure::Vector{T} 49 dClosure::NTuple{M,T}
50 parity::Parity 50 parity::Parity
51 end 51 end
52 52
53 function closureSize(D::D2)::Int 53 function closureSize(D::D2)::Int
54 return length(D.quadratureClosure) 54 return length(D.quadratureClosure)
74 width = length(stencilWeights) 74 width = length(stencilWeights)
75 r = (1-i,width-i) 75 r = (1-i,width-i)
76 closureStencils = (closureStencils..., Stencil(r, stencilWeights)) 76 closureStencils = (closureStencils..., Stencil(r, stencilWeights))
77 end 77 end
78 78
79 quadratureClosure = pad_tuple(stringToTuple(Float64, h["closure"][1]), boundarySize)
80 eClosure = pad_tuple(stringToTuple(Float64, d["e"][1]), boundarySize)
81 dClosure = pad_tuple(stringToTuple(Float64, d["d1"][1]), boundarySize)
82
79 d2 = D2( 83 d2 = D2(
80 stringToVector(Float64, h["closure"][1]), 84 quadratureClosure,
81 innerStencil, 85 innerStencil,
82 closureStencils, 86 closureStencils,
83 stringToVector(Float64, d["e"][1]), 87 eClosure,
84 stringToVector(Float64, d["d1"][1]), 88 dClosure,
85 even 89 even
86 ) 90 )
87 91
88 return d2 92 return d2
89 end 93 end
118 end 122 end
119 123
120 function stringToVector(T::DataType, s::String) 124 function stringToVector(T::DataType, s::String)
121 return T.(eval.(Meta.parse.(split(s)))) 125 return T.(eval.(Meta.parse.(split(s))))
122 end 126 end
127
128
129 function pad_tuple(t::NTuple{N, T}, n::Integer) where {N,T}
130 if N >= n
131 return t
132 else
133 return pad_tuple((t..., zero(T)), n)
134 end
135 end