annotate src/SbpOperators/readoperator.jl @ 609:7975143118e8 refactor/toml_operator_format

Add some documentation
author Jonatan Werpers <jonatan@werpers.com>
date Sat, 05 Dec 2020 14:16:15 +0100
parents 8ae63e775f9d
children 4a81812150f4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
594
cc86b920531a Change the readoperator function to use the .toml format
Jonatan Werpers <jonatan@werpers.com>
parents: 340
diff changeset
1 using TOML
601
b05f542b2e8f Export relevant functions and move export of read_D2_operator to readoperator.jl
Jonatan Werpers <jonatan@werpers.com>
parents: 600
diff changeset
2
b05f542b2e8f Export relevant functions and move export of read_D2_operator to readoperator.jl
Jonatan Werpers <jonatan@werpers.com>
parents: 600
diff changeset
3 export read_D2_operator
b05f542b2e8f Export relevant functions and move export of read_D2_operator to readoperator.jl
Jonatan Werpers <jonatan@werpers.com>
parents: 600
diff changeset
4 export read_stencil
b05f542b2e8f Export relevant functions and move export of read_D2_operator to readoperator.jl
Jonatan Werpers <jonatan@werpers.com>
parents: 600
diff changeset
5 export read_stencils
b05f542b2e8f Export relevant functions and move export of read_D2_operator to readoperator.jl
Jonatan Werpers <jonatan@werpers.com>
parents: 600
diff changeset
6 export read_tuple
b05f542b2e8f Export relevant functions and move export of read_D2_operator to readoperator.jl
Jonatan Werpers <jonatan@werpers.com>
parents: 600
diff changeset
7
b05f542b2e8f Export relevant functions and move export of read_D2_operator to readoperator.jl
Jonatan Werpers <jonatan@werpers.com>
parents: 600
diff changeset
8 export get_stencil
b05f542b2e8f Export relevant functions and move export of read_D2_operator to readoperator.jl
Jonatan Werpers <jonatan@werpers.com>
parents: 600
diff changeset
9 export get_stencils
b05f542b2e8f Export relevant functions and move export of read_D2_operator to readoperator.jl
Jonatan Werpers <jonatan@werpers.com>
parents: 600
diff changeset
10 export get_tuple
b05f542b2e8f Export relevant functions and move export of read_D2_operator to readoperator.jl
Jonatan Werpers <jonatan@werpers.com>
parents: 600
diff changeset
11
b05f542b2e8f Export relevant functions and move export of read_D2_operator to readoperator.jl
Jonatan Werpers <jonatan@werpers.com>
parents: 600
diff changeset
12
594
cc86b920531a Change the readoperator function to use the .toml format
Jonatan Werpers <jonatan@werpers.com>
parents: 340
diff changeset
13 function read_D2_operator(fn; order)
cc86b920531a Change the readoperator function to use the .toml format
Jonatan Werpers <jonatan@werpers.com>
parents: 340
diff changeset
14 operators = TOML.parsefile(fn)["order$order"]
cc86b920531a Change the readoperator function to use the .toml format
Jonatan Werpers <jonatan@werpers.com>
parents: 340
diff changeset
15 D2 = operators["D2"]
cc86b920531a Change the readoperator function to use the .toml format
Jonatan Werpers <jonatan@werpers.com>
parents: 340
diff changeset
16 H = operators["H"]
cc86b920531a Change the readoperator function to use the .toml format
Jonatan Werpers <jonatan@werpers.com>
parents: 340
diff changeset
17 e = operators["e"]
cc86b920531a Change the readoperator function to use the .toml format
Jonatan Werpers <jonatan@werpers.com>
parents: 340
diff changeset
18 d1 = operators["d1"]
249
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
19
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
20 # Create inner stencil
596
a9744aa5e235 Simplify read_D2_operator by introducing a get_stencil function
Jonatan Werpers <jonatan@werpers.com>
parents: 594
diff changeset
21 innerStencil = get_stencil(operators, "D2", "inner_stencil")
249
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
22
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
23 # Create boundary stencils
594
cc86b920531a Change the readoperator function to use the .toml format
Jonatan Werpers <jonatan@werpers.com>
parents: 340
diff changeset
24 boundarySize = length(D2["closure_stencils"])
249
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
25 closureStencils = Vector{typeof(innerStencil)}() # TBD: is the the right way to get the correct type?
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
26
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
27 for i ∈ 1:boundarySize
596
a9744aa5e235 Simplify read_D2_operator by introducing a get_stencil function
Jonatan Werpers <jonatan@werpers.com>
parents: 594
diff changeset
28 closureStencils = (closureStencils..., get_stencil(operators, "D2", "closure_stencils", i; center=i))
249
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
29 end
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
30
596
a9744aa5e235 Simplify read_D2_operator by introducing a get_stencil function
Jonatan Werpers <jonatan@werpers.com>
parents: 594
diff changeset
31 # TODO: Get rid of the padding here. Any padding should be handled by the consturctor accepting the stencils.
594
cc86b920531a Change the readoperator function to use the .toml format
Jonatan Werpers <jonatan@werpers.com>
parents: 340
diff changeset
32 quadratureClosure = pad_tuple(toml_string_array_to_tuple(Float64, H["closure"]), boundarySize)
596
a9744aa5e235 Simplify read_D2_operator by introducing a get_stencil function
Jonatan Werpers <jonatan@werpers.com>
parents: 594
diff changeset
33 eClosure = Stencil(pad_tuple(toml_string_array_to_tuple(Float64, e["closure"]), boundarySize), center=1)
a9744aa5e235 Simplify read_D2_operator by introducing a get_stencil function
Jonatan Werpers <jonatan@werpers.com>
parents: 594
diff changeset
34 dClosure = Stencil(pad_tuple(toml_string_array_to_tuple(Float64, d1["closure"]), boundarySize), center=1)
249
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
35
594
cc86b920531a Change the readoperator function to use the .toml format
Jonatan Werpers <jonatan@werpers.com>
parents: 340
diff changeset
36 d2 = SbpOperators.D2(
249
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
37 quadratureClosure,
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
38 innerStencil,
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
39 closureStencils,
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
40 eClosure,
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
41 dClosure,
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
42 even
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
43 )
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
44
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
45 return d2
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
46 end
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
47
597
98cd99237176 Add a function for reading a stencil directly from the a file
Jonatan Werpers <jonatan@werpers.com>
parents: 596
diff changeset
48
98cd99237176 Add a function for reading a stencil directly from the a file
Jonatan Werpers <jonatan@werpers.com>
parents: 596
diff changeset
49 """
98cd99237176 Add a function for reading a stencil directly from the a file
Jonatan Werpers <jonatan@werpers.com>
parents: 596
diff changeset
50 read_stencil(fn, path...; [center])
98cd99237176 Add a function for reading a stencil directly from the a file
Jonatan Werpers <jonatan@werpers.com>
parents: 596
diff changeset
51
98cd99237176 Add a function for reading a stencil directly from the a file
Jonatan Werpers <jonatan@werpers.com>
parents: 596
diff changeset
52 Read a stencil at `path` from the file with name `fn`.
98cd99237176 Add a function for reading a stencil directly from the a file
Jonatan Werpers <jonatan@werpers.com>
parents: 596
diff changeset
53 If a center is specified the given element of the stecil is set as the center.
98cd99237176 Add a function for reading a stencil directly from the a file
Jonatan Werpers <jonatan@werpers.com>
parents: 596
diff changeset
54
609
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
55 See also: [`read_stencils`](@ref), [`read_tuple`](@ref), [`get_stencil`](@ref).
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
56
597
98cd99237176 Add a function for reading a stencil directly from the a file
Jonatan Werpers <jonatan@werpers.com>
parents: 596
diff changeset
57 # Examples
98cd99237176 Add a function for reading a stencil directly from the a file
Jonatan Werpers <jonatan@werpers.com>
parents: 596
diff changeset
58 ```
98cd99237176 Add a function for reading a stencil directly from the a file
Jonatan Werpers <jonatan@werpers.com>
parents: 596
diff changeset
59 read_stencil(sbp_operators_path()*"standard_diagonal.toml", "order2", "D2", "inner_stencil")
98cd99237176 Add a function for reading a stencil directly from the a file
Jonatan Werpers <jonatan@werpers.com>
parents: 596
diff changeset
60 read_stencil(sbp_operators_path()*"standard_diagonal.toml", "order2", "d1", "closure"; center=1)
98cd99237176 Add a function for reading a stencil directly from the a file
Jonatan Werpers <jonatan@werpers.com>
parents: 596
diff changeset
61 ```
98cd99237176 Add a function for reading a stencil directly from the a file
Jonatan Werpers <jonatan@werpers.com>
parents: 596
diff changeset
62 """
98cd99237176 Add a function for reading a stencil directly from the a file
Jonatan Werpers <jonatan@werpers.com>
parents: 596
diff changeset
63 read_stencil(fn, path...; center=nothing) = get_stencil(TOML.parsefile(fn), path...; center=center)
609
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
64
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
65 """
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
66 read_stencils(fn, path...; centers)
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
67
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
68 Read stencils at `path` from the file `fn`.
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
69 Centers of the stencils are specified as a tuple or array in `centers`.
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
70
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
71 See also: [`read_stencil`](@ref), [`read_tuple`](@ref), [`get_stencils`](@ref).
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
72 """
608
8ae63e775f9d Fix another type
Jonatan Werpers <jonatan@werpers.com>
parents: 603
diff changeset
73 read_stencils(fn, path...; centers) = get_stencils(TOML.parsefile(fn), path...; centers=centers)
609
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
74
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
75 """
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
76 read_tuple(fn, path...)
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
77
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
78 Read tuple at `path` from the file `fn`.
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
79
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
80 See also: [`read_stencil`](@ref), [`read_stencils`](@ref), [`get_tuple`](@ref).
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
81 """
600
dd7056869294 Fix a couple of types
Jonatan Werpers <jonatan@werpers.com>
parents: 599
diff changeset
82 read_tuple(fn, path...) = get_tuple(TOML.parsefile(fn), path...)
596
a9744aa5e235 Simplify read_D2_operator by introducing a get_stencil function
Jonatan Werpers <jonatan@werpers.com>
parents: 594
diff changeset
83
609
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
84 """
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
85 get_stencil(parsed_toml, path...; center=nothing)
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
86
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
87 Same as [`read_stencil`](@ref)) but takes already parsed toml.
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
88 """
598
19e1b169aa9c Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 597
diff changeset
89 get_stencil(parsed_toml, path...; center=nothing) = get_stencil(parsed_toml[path[1]], path[2:end]...; center=center)
19e1b169aa9c Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 597
diff changeset
90 function get_stencil(parsed_toml; center=nothing)
19e1b169aa9c Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 597
diff changeset
91 @assert parsed_toml isa Vector{String}
19e1b169aa9c Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 597
diff changeset
92 stencil_weights = Float64.(parse_rational.(parsed_toml))
596
a9744aa5e235 Simplify read_D2_operator by introducing a get_stencil function
Jonatan Werpers <jonatan@werpers.com>
parents: 594
diff changeset
93
598
19e1b169aa9c Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 597
diff changeset
94 width = length(stencil_weights)
596
a9744aa5e235 Simplify read_D2_operator by introducing a get_stencil function
Jonatan Werpers <jonatan@werpers.com>
parents: 594
diff changeset
95
598
19e1b169aa9c Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 597
diff changeset
96 if isnothing(center)
19e1b169aa9c Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 597
diff changeset
97 center = div(width,2)+1
596
a9744aa5e235 Simplify read_D2_operator by introducing a get_stencil function
Jonatan Werpers <jonatan@werpers.com>
parents: 594
diff changeset
98 end
a9744aa5e235 Simplify read_D2_operator by introducing a get_stencil function
Jonatan Werpers <jonatan@werpers.com>
parents: 594
diff changeset
99
598
19e1b169aa9c Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 597
diff changeset
100 return Stencil(Tuple(stencil_weights), center=center)
19e1b169aa9c Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 597
diff changeset
101 end
19e1b169aa9c Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 597
diff changeset
102
609
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
103 """
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
104 get_stencils(parsed_toml, path...; centers)
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
105
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
106 Same as [`read_stencils`](@ref)) but takes already parsed toml.
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
107 """
598
19e1b169aa9c Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 597
diff changeset
108 get_stencils(parsed_toml, path...; centers) = get_stencils(parsed_toml[path[1]], path[2:end]...; centers=centers)
19e1b169aa9c Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 597
diff changeset
109 function get_stencils(parsed_toml; centers)
19e1b169aa9c Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 597
diff changeset
110 @assert parsed_toml isa Vector{Vector{String}}
19e1b169aa9c Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 597
diff changeset
111 @assert length(centers) == length(parsed_toml)
19e1b169aa9c Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 597
diff changeset
112
19e1b169aa9c Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 597
diff changeset
113 stencils = ()
19e1b169aa9c Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 597
diff changeset
114 for i ∈ 1:length(parsed_toml)
600
dd7056869294 Fix a couple of types
Jonatan Werpers <jonatan@werpers.com>
parents: 599
diff changeset
115 stencil = get_stencil(parsed_toml[i], center = centers[i])
598
19e1b169aa9c Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 597
diff changeset
116 stencils = (stencils..., stencil)
19e1b169aa9c Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 597
diff changeset
117 end
19e1b169aa9c Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 597
diff changeset
118
19e1b169aa9c Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 597
diff changeset
119 return stencils
19e1b169aa9c Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 597
diff changeset
120 end
19e1b169aa9c Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 597
diff changeset
121
609
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
122 """
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
123 get_tuple(parsed_toml, path...)
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
124
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
125 Same as [`read_tuple`](@ref)) but takes already parsed toml.
7975143118e8 Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents: 608
diff changeset
126 """
598
19e1b169aa9c Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 597
diff changeset
127 get_tuple(parsed_toml, path...) = get_tuple(parsed_toml[path[1]], path[2:end]...)
602
c2239c7cd71e Fix another typo in get_tuple signature
Jonatan Werpers <jonatan@werpers.com>
parents: 601
diff changeset
128 function get_tuple(parsed_toml)
598
19e1b169aa9c Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 597
diff changeset
129 @assert parsed_toml isa Vector{String}
19e1b169aa9c Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 597
diff changeset
130 t = Tuple(Float64.(parse_rational.(parsed_toml)))
19e1b169aa9c Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents: 597
diff changeset
131 return t
596
a9744aa5e235 Simplify read_D2_operator by introducing a get_stencil function
Jonatan Werpers <jonatan@werpers.com>
parents: 594
diff changeset
132 end
a9744aa5e235 Simplify read_D2_operator by introducing a get_stencil function
Jonatan Werpers <jonatan@werpers.com>
parents: 594
diff changeset
133
a9744aa5e235 Simplify read_D2_operator by introducing a get_stencil function
Jonatan Werpers <jonatan@werpers.com>
parents: 594
diff changeset
134 # TODO: Probably should be deleted once we have gotten rid of read_D2_operator()
594
cc86b920531a Change the readoperator function to use the .toml format
Jonatan Werpers <jonatan@werpers.com>
parents: 340
diff changeset
135 function toml_string_array_to_tuple(::Type{T}, arr::AbstractVector{String}) where T
cc86b920531a Change the readoperator function to use the .toml format
Jonatan Werpers <jonatan@werpers.com>
parents: 340
diff changeset
136 return Tuple(T.(parse_rational.(arr)))
249
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
137 end
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
138
594
cc86b920531a Change the readoperator function to use the .toml format
Jonatan Werpers <jonatan@werpers.com>
parents: 340
diff changeset
139 function parse_rational(str)
cc86b920531a Change the readoperator function to use the .toml format
Jonatan Werpers <jonatan@werpers.com>
parents: 340
diff changeset
140 expr = Meta.parse(replace(str, "/"=>"//"))
603
fbff4009c08a Add tests for parse_rational()
Jonatan Werpers <jonatan@werpers.com>
parents: 602
diff changeset
141 return eval(:(Rational($expr)))
249
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
142 end
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
143
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
144 function pad_tuple(t::NTuple{N, T}, n::Integer) where {N,T}
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
145 if N >= n
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
146 return t
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
147 else
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
148 return pad_tuple((t..., zero(T)), n)
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
149 end
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
150 end
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
151
340
29df39a7b568 readoperator.jl: Fix path to operators
Jonatan Werpers <jonatan@werpers.com>
parents: 333
diff changeset
152 sbp_operators_path() = (@__DIR__) * "/operators/"
249
7cb4492ccd60 Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff changeset
153 export sbp_operators_path