annotate SbpOperators/src/SbpOperators.jl @ 219:69a6049e14d9 package_refactor

Create package SbpOperators
author Jonatan Werpers <jonatan@werpers.com>
date Wed, 26 Jun 2019 13:12:38 +0200
parents sbpD2.jl@6ba2238a9687
children 235f0a771c8f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
219
69a6049e14d9 Create package SbpOperators
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
1 module SbpOperators
69a6049e14d9 Create package SbpOperators
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
2
69a6049e14d9 Create package SbpOperators
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
3 using RegionIndices
69a6049e14d9 Create package SbpOperators
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
4
69a6049e14d9 Create package SbpOperators
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
5 include("stencil.jl")
69a6049e14d9 Create package SbpOperators
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
6
34
bb841977d198 Move stencil operator application to its own function
Jonatan Werpers <jonatan@werpers.com>
parents: 24
diff changeset
7 abstract type ConstantStencilOperator end
bb841977d198 Move stencil operator application to its own function
Jonatan Werpers <jonatan@werpers.com>
parents: 24
diff changeset
8
98
50273f745f05 Add "Unknown" region and implement D2 for it
Jonatan Werpers <jonatan@werpers.com>
parents: 97
diff changeset
9 # Apply for different regions Lower/Interior/Upper or Unknown region
97
8324c82c2dfb Make D2 support sbp.Index and specification of region
Jonatan Werpers <jonatan@werpers.com>
parents: 85
diff changeset
10 @inline function apply(op::ConstantStencilOperator, h::Real, v::AbstractVector, i::Index{Lower})
129
1aaeb46ba5f4 Improve efficiency of apply by the following:
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 122
diff changeset
11 return @inbounds h*h*apply(op.closureStencils[Int(i)], v, Int(i))
97
8324c82c2dfb Make D2 support sbp.Index and specification of region
Jonatan Werpers <jonatan@werpers.com>
parents: 85
diff changeset
12 end
8324c82c2dfb Make D2 support sbp.Index and specification of region
Jonatan Werpers <jonatan@werpers.com>
parents: 85
diff changeset
13
8324c82c2dfb Make D2 support sbp.Index and specification of region
Jonatan Werpers <jonatan@werpers.com>
parents: 85
diff changeset
14 @inline function apply(op::ConstantStencilOperator, h::Real, v::AbstractVector, i::Index{Interior})
129
1aaeb46ba5f4 Improve efficiency of apply by the following:
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 122
diff changeset
15 return @inbounds h*h*apply(op.innerStencil, v, Int(i))
97
8324c82c2dfb Make D2 support sbp.Index and specification of region
Jonatan Werpers <jonatan@werpers.com>
parents: 85
diff changeset
16 end
8324c82c2dfb Make D2 support sbp.Index and specification of region
Jonatan Werpers <jonatan@werpers.com>
parents: 85
diff changeset
17
8324c82c2dfb Make D2 support sbp.Index and specification of region
Jonatan Werpers <jonatan@werpers.com>
parents: 85
diff changeset
18 @inline function apply(op::ConstantStencilOperator, h::Real, v::AbstractVector, i::Index{Upper})
8324c82c2dfb Make D2 support sbp.Index and specification of region
Jonatan Werpers <jonatan@werpers.com>
parents: 85
diff changeset
19 N = length(v)
129
1aaeb46ba5f4 Improve efficiency of apply by the following:
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 122
diff changeset
20 return @inbounds h*h*Int(op.parity)*apply_backwards(op.closureStencils[N-Int(i)+1], v, Int(i))
97
8324c82c2dfb Make D2 support sbp.Index and specification of region
Jonatan Werpers <jonatan@werpers.com>
parents: 85
diff changeset
21 end
8324c82c2dfb Make D2 support sbp.Index and specification of region
Jonatan Werpers <jonatan@werpers.com>
parents: 85
diff changeset
22
98
50273f745f05 Add "Unknown" region and implement D2 for it
Jonatan Werpers <jonatan@werpers.com>
parents: 97
diff changeset
23 @inline function apply(op::ConstantStencilOperator, h::Real, v::AbstractVector, index::Index{Unknown})
34
bb841977d198 Move stencil operator application to its own function
Jonatan Werpers <jonatan@werpers.com>
parents: 24
diff changeset
24 cSize = closureSize(op)
56
27a8d3021a1c Convert apply functions to cell-based
Ylva Rydin <ylva.rydin@telia.com>
parents: 47
diff changeset
25 N = length(v)
34
bb841977d198 Move stencil operator application to its own function
Jonatan Werpers <jonatan@werpers.com>
parents: 24
diff changeset
26
98
50273f745f05 Add "Unknown" region and implement D2 for it
Jonatan Werpers <jonatan@werpers.com>
parents: 97
diff changeset
27 i = Int(index)
50273f745f05 Add "Unknown" region and implement D2 for it
Jonatan Werpers <jonatan@werpers.com>
parents: 97
diff changeset
28
97
8324c82c2dfb Make D2 support sbp.Index and specification of region
Jonatan Werpers <jonatan@werpers.com>
parents: 85
diff changeset
29 if 0 < i <= cSize
8324c82c2dfb Make D2 support sbp.Index and specification of region
Jonatan Werpers <jonatan@werpers.com>
parents: 85
diff changeset
30 return apply(op, h, v, Index{Lower}(i))
8324c82c2dfb Make D2 support sbp.Index and specification of region
Jonatan Werpers <jonatan@werpers.com>
parents: 85
diff changeset
31 elseif cSize < i <= N-cSize
8324c82c2dfb Make D2 support sbp.Index and specification of region
Jonatan Werpers <jonatan@werpers.com>
parents: 85
diff changeset
32 return apply(op, h, v, Index{Interior}(i))
8324c82c2dfb Make D2 support sbp.Index and specification of region
Jonatan Werpers <jonatan@werpers.com>
parents: 85
diff changeset
33 elseif N-cSize < i <= N
8324c82c2dfb Make D2 support sbp.Index and specification of region
Jonatan Werpers <jonatan@werpers.com>
parents: 85
diff changeset
34 return apply(op, h, v, Index{Upper}(i))
56
27a8d3021a1c Convert apply functions to cell-based
Ylva Rydin <ylva.rydin@telia.com>
parents: 47
diff changeset
35 else
97
8324c82c2dfb Make D2 support sbp.Index and specification of region
Jonatan Werpers <jonatan@werpers.com>
parents: 85
diff changeset
36 error("Bounds error") # TODO: Make this more standard
34
bb841977d198 Move stencil operator application to its own function
Jonatan Werpers <jonatan@werpers.com>
parents: 24
diff changeset
37 end
bb841977d198 Move stencil operator application to its own function
Jonatan Werpers <jonatan@werpers.com>
parents: 24
diff changeset
38 end
bb841977d198 Move stencil operator application to its own function
Jonatan Werpers <jonatan@werpers.com>
parents: 24
diff changeset
39
127
f01b70b81e95 Change Type of dClosure and dClosure to stencil.
Ylva Rydin <ylva.rydin@telia.com>
parents: 101
diff changeset
40
98
50273f745f05 Add "Unknown" region and implement D2 for it
Jonatan Werpers <jonatan@werpers.com>
parents: 97
diff changeset
41 # Wrapper functions for using regular indecies without specifying regions
50273f745f05 Add "Unknown" region and implement D2 for it
Jonatan Werpers <jonatan@werpers.com>
parents: 97
diff changeset
42 @inline function apply(op::ConstantStencilOperator, h::Real, v::AbstractVector, i::Int)
50273f745f05 Add "Unknown" region and implement D2 for it
Jonatan Werpers <jonatan@werpers.com>
parents: 97
diff changeset
43 return apply(op, h, v, Index{Unknown}(i))
50273f745f05 Add "Unknown" region and implement D2 for it
Jonatan Werpers <jonatan@werpers.com>
parents: 97
diff changeset
44 end
50273f745f05 Add "Unknown" region and implement D2 for it
Jonatan Werpers <jonatan@werpers.com>
parents: 97
diff changeset
45
47
8c4cfa680e5a Use enum for parity
Jonatan Werpers <jonatan@werpers.com>
parents: 43
diff changeset
46 @enum Parity begin
8c4cfa680e5a Use enum for parity
Jonatan Werpers <jonatan@werpers.com>
parents: 43
diff changeset
47 odd = -1
8c4cfa680e5a Use enum for parity
Jonatan Werpers <jonatan@werpers.com>
parents: 43
diff changeset
48 even = 1
8c4cfa680e5a Use enum for parity
Jonatan Werpers <jonatan@werpers.com>
parents: 43
diff changeset
49 end
34
bb841977d198 Move stencil operator application to its own function
Jonatan Werpers <jonatan@werpers.com>
parents: 24
diff changeset
50
84
48079bd39969 Change to using tuples in stencils and ops
Jonatan Werpers <jonatan@werpers.com>
parents: 47
diff changeset
51 struct D2{T,N,M,K} <: ConstantStencilOperator
101
19031733bbbf Convert D2 to only use tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 100
diff changeset
52 quadratureClosure::NTuple{M,T}
84
48079bd39969 Change to using tuples in stencils and ops
Jonatan Werpers <jonatan@werpers.com>
parents: 47
diff changeset
53 innerStencil::Stencil{T,N}
101
19031733bbbf Convert D2 to only use tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 100
diff changeset
54 closureStencils::NTuple{M,Stencil{T,K}}
127
f01b70b81e95 Change Type of dClosure and dClosure to stencil.
Ylva Rydin <ylva.rydin@telia.com>
parents: 101
diff changeset
55 eClosure::Stencil{T,M}
f01b70b81e95 Change Type of dClosure and dClosure to stencil.
Ylva Rydin <ylva.rydin@telia.com>
parents: 101
diff changeset
56 dClosure::Stencil{T,M}
47
8c4cfa680e5a Use enum for parity
Jonatan Werpers <jonatan@werpers.com>
parents: 43
diff changeset
57 parity::Parity
1
a286be5f8a32 Add type to sbpD2.jl
Jonatan Werpers <jonatan@werpers.com>
parents: 0
diff changeset
58 end
2
43be32298ae2 Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents: 1
diff changeset
59
43be32298ae2 Add function to get closure size
Jonatan Werpers <jonatan@werpers.com>
parents: 1
diff changeset
60 function closureSize(D::D2)::Int
43
ef060ab3b035 remove stride and remove some bugs
Ylva Rydin <ylva.rydin@telia.com>
parents: 40
diff changeset
61 return length(D.quadratureClosure)
24
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
62 end
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
63
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
64 function readOperator(D2fn, Hfn)
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
65 d = readSectionedFile(D2fn)
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
66 h = readSectionedFile(Hfn)
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
67
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
68 # Create inner stencil
100
49796ca2dfa0 Introduce and use the function stringToTuple in sbpD2.jl
Jonatan Werpers <jonatan@werpers.com>
parents: 98
diff changeset
69 innerStencilWeights = stringToTuple(Float64, d["inner_stencil"][1])
24
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
70 width = length(innerStencilWeights)
35
91e662512e9a Fix bugs in sbpD2
Ylva Rydin <ylva.rydin@telia.com>
parents: 24
diff changeset
71 r = (-div(width,2), div(width,2))
91e662512e9a Fix bugs in sbpD2
Ylva Rydin <ylva.rydin@telia.com>
parents: 24
diff changeset
72
100
49796ca2dfa0 Introduce and use the function stringToTuple in sbpD2.jl
Jonatan Werpers <jonatan@werpers.com>
parents: 98
diff changeset
73 innerStencil = Stencil(r, innerStencilWeights)
24
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
74
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
75 # Create boundary stencils
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
76 boundarySize = length(d["boundary_stencils"])
68
d485da6e3a77 Make D2 more type stable
Jonatan Werpers <jonatan@werpers.com>
parents: 56
diff changeset
77 closureStencils = Vector{typeof(innerStencil)}() # TBD: is the the right way to get the correct type?
35
91e662512e9a Fix bugs in sbpD2
Ylva Rydin <ylva.rydin@telia.com>
parents: 24
diff changeset
78
24
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
79 for i ∈ 1:boundarySize
100
49796ca2dfa0 Introduce and use the function stringToTuple in sbpD2.jl
Jonatan Werpers <jonatan@werpers.com>
parents: 98
diff changeset
80 stencilWeights = stringToTuple(Float64, d["boundary_stencils"][i])
35
91e662512e9a Fix bugs in sbpD2
Ylva Rydin <ylva.rydin@telia.com>
parents: 24
diff changeset
81 width = length(stencilWeights)
91e662512e9a Fix bugs in sbpD2
Ylva Rydin <ylva.rydin@telia.com>
parents: 24
diff changeset
82 r = (1-i,width-i)
100
49796ca2dfa0 Introduce and use the function stringToTuple in sbpD2.jl
Jonatan Werpers <jonatan@werpers.com>
parents: 98
diff changeset
83 closureStencils = (closureStencils..., Stencil(r, stencilWeights))
24
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
84 end
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
85
101
19031733bbbf Convert D2 to only use tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 100
diff changeset
86 quadratureClosure = pad_tuple(stringToTuple(Float64, h["closure"][1]), boundarySize)
127
f01b70b81e95 Change Type of dClosure and dClosure to stencil.
Ylva Rydin <ylva.rydin@telia.com>
parents: 101
diff changeset
87 eClosure = Stencil((0,boundarySize-1), pad_tuple(stringToTuple(Float64, d["e"][1]), boundarySize))
f01b70b81e95 Change Type of dClosure and dClosure to stencil.
Ylva Rydin <ylva.rydin@telia.com>
parents: 101
diff changeset
88 dClosure = Stencil((0,boundarySize-1), pad_tuple(stringToTuple(Float64, d["d1"][1]), boundarySize))
101
19031733bbbf Convert D2 to only use tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 100
diff changeset
89
24
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
90 d2 = D2(
101
19031733bbbf Convert D2 to only use tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 100
diff changeset
91 quadratureClosure,
24
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
92 innerStencil,
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
93 closureStencils,
101
19031733bbbf Convert D2 to only use tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 100
diff changeset
94 eClosure,
19031733bbbf Convert D2 to only use tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 100
diff changeset
95 dClosure,
34
bb841977d198 Move stencil operator application to its own function
Jonatan Werpers <jonatan@werpers.com>
parents: 24
diff changeset
96 even
24
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
97 )
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
98
35
91e662512e9a Fix bugs in sbpD2
Ylva Rydin <ylva.rydin@telia.com>
parents: 24
diff changeset
99 return d2
24
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
100 end
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
101
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
102
127
f01b70b81e95 Change Type of dClosure and dClosure to stencil.
Ylva Rydin <ylva.rydin@telia.com>
parents: 101
diff changeset
103 function apply_e(op::D2, v::AbstractVector, ::Type{Lower})
f01b70b81e95 Change Type of dClosure and dClosure to stencil.
Ylva Rydin <ylva.rydin@telia.com>
parents: 101
diff changeset
104 apply(op.eClosure,v,1)
f01b70b81e95 Change Type of dClosure and dClosure to stencil.
Ylva Rydin <ylva.rydin@telia.com>
parents: 101
diff changeset
105 end
f01b70b81e95 Change Type of dClosure and dClosure to stencil.
Ylva Rydin <ylva.rydin@telia.com>
parents: 101
diff changeset
106
f01b70b81e95 Change Type of dClosure and dClosure to stencil.
Ylva Rydin <ylva.rydin@telia.com>
parents: 101
diff changeset
107 function apply_e(op::D2, v::AbstractVector, ::Type{Upper})
f01b70b81e95 Change Type of dClosure and dClosure to stencil.
Ylva Rydin <ylva.rydin@telia.com>
parents: 101
diff changeset
108 apply(flip(op.eClosure),v,length(v))
f01b70b81e95 Change Type of dClosure and dClosure to stencil.
Ylva Rydin <ylva.rydin@telia.com>
parents: 101
diff changeset
109 end
f01b70b81e95 Change Type of dClosure and dClosure to stencil.
Ylva Rydin <ylva.rydin@telia.com>
parents: 101
diff changeset
110
f01b70b81e95 Change Type of dClosure and dClosure to stencil.
Ylva Rydin <ylva.rydin@telia.com>
parents: 101
diff changeset
111
170
6ba2238a9687 Avoid division in apply_d
Jonatan Werpers <jonatan@werpers.com>
parents: 132
diff changeset
112 function apply_d(op::D2, h_inv::Real, v::AbstractVector, ::Type{Lower})
6ba2238a9687 Avoid division in apply_d
Jonatan Werpers <jonatan@werpers.com>
parents: 132
diff changeset
113 -h_inv*apply(op.dClosure,v,1)
127
f01b70b81e95 Change Type of dClosure and dClosure to stencil.
Ylva Rydin <ylva.rydin@telia.com>
parents: 101
diff changeset
114 end
f01b70b81e95 Change Type of dClosure and dClosure to stencil.
Ylva Rydin <ylva.rydin@telia.com>
parents: 101
diff changeset
115
170
6ba2238a9687 Avoid division in apply_d
Jonatan Werpers <jonatan@werpers.com>
parents: 132
diff changeset
116 function apply_d(op::D2, h_inv::Real, v::AbstractVector, ::Type{Upper})
6ba2238a9687 Avoid division in apply_d
Jonatan Werpers <jonatan@werpers.com>
parents: 132
diff changeset
117 -h_inv*apply(flip(op.dClosure),v,length(v))
127
f01b70b81e95 Change Type of dClosure and dClosure to stencil.
Ylva Rydin <ylva.rydin@telia.com>
parents: 101
diff changeset
118 end
f01b70b81e95 Change Type of dClosure and dClosure to stencil.
Ylva Rydin <ylva.rydin@telia.com>
parents: 101
diff changeset
119
24
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
120 function readSectionedFile(filename)::Dict{String, Vector{String}}
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
121 f = open(filename)
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
122 sections = Dict{String, Vector{String}}()
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
123 currentKey = ""
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
124
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
125 for ln ∈ eachline(f)
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
126 if ln == "" || ln[1] == '#' # Skip comments and empty lines
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
127 continue
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
128 end
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
129
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
130 if isletter(ln[1]) # Found start of new section
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
131 if ~haskey(sections, ln)
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
132 sections[ln] = Vector{String}()
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
133 end
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
134 currentKey = ln
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
135 continue
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
136 end
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
137
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
138 push!(sections[currentKey], ln)
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
139 end
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
140
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
141 return sections
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
142 end
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
143
100
49796ca2dfa0 Introduce and use the function stringToTuple in sbpD2.jl
Jonatan Werpers <jonatan@werpers.com>
parents: 98
diff changeset
144 function stringToTuple(T::DataType, s::String)
49796ca2dfa0 Introduce and use the function stringToTuple in sbpD2.jl
Jonatan Werpers <jonatan@werpers.com>
parents: 98
diff changeset
145 return Tuple(stringToVector(T,s))
49796ca2dfa0 Introduce and use the function stringToTuple in sbpD2.jl
Jonatan Werpers <jonatan@werpers.com>
parents: 98
diff changeset
146 end
49796ca2dfa0 Introduce and use the function stringToTuple in sbpD2.jl
Jonatan Werpers <jonatan@werpers.com>
parents: 98
diff changeset
147
35
91e662512e9a Fix bugs in sbpD2
Ylva Rydin <ylva.rydin@telia.com>
parents: 24
diff changeset
148 function stringToVector(T::DataType, s::String)
91e662512e9a Fix bugs in sbpD2
Ylva Rydin <ylva.rydin@telia.com>
parents: 24
diff changeset
149 return T.(eval.(Meta.parse.(split(s))))
24
55fea1ceb6aa Start implementing reading 1D operator stencils from file into struct
Jonatan Werpers <jonatan@werpers.com>
parents: 8
diff changeset
150 end
101
19031733bbbf Convert D2 to only use tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 100
diff changeset
151
19031733bbbf Convert D2 to only use tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 100
diff changeset
152
19031733bbbf Convert D2 to only use tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 100
diff changeset
153 function pad_tuple(t::NTuple{N, T}, n::Integer) where {N,T}
19031733bbbf Convert D2 to only use tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 100
diff changeset
154 if N >= n
19031733bbbf Convert D2 to only use tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 100
diff changeset
155 return t
19031733bbbf Convert D2 to only use tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 100
diff changeset
156 else
19031733bbbf Convert D2 to only use tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 100
diff changeset
157 return pad_tuple((t..., zero(T)), n)
19031733bbbf Convert D2 to only use tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 100
diff changeset
158 end
19031733bbbf Convert D2 to only use tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 100
diff changeset
159 end
219
69a6049e14d9 Create package SbpOperators
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
160
69a6049e14d9 Create package SbpOperators
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
161 end # module