Mercurial > repos > public > sbplib_julia
annotate src/SbpOperators/readoperator.jl @ 655:ec7490fb4404 operator_storage_array_of_table
Start sketching the toml format and needed functions
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Sun, 24 Jan 2021 22:15:16 +0100 |
parents | 4a81812150f4 |
children | d34b515b0ae7 |
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 |
594
cc86b920531a
Change the readoperator function to use the .toml format
Jonatan Werpers <jonatan@werpers.com>
parents:
340
diff
changeset
|
12 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
|
13 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
|
14 D2 = operators["D2"] |
cc86b920531a
Change the readoperator function to use the .toml format
Jonatan Werpers <jonatan@werpers.com>
parents:
340
diff
changeset
|
15 H = operators["H"] |
cc86b920531a
Change the readoperator function to use the .toml format
Jonatan Werpers <jonatan@werpers.com>
parents:
340
diff
changeset
|
16 e = operators["e"] |
cc86b920531a
Change the readoperator function to use the .toml format
Jonatan Werpers <jonatan@werpers.com>
parents:
340
diff
changeset
|
17 d1 = operators["d1"] |
249
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
18 |
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
19 # Create inner stencil |
596
a9744aa5e235
Simplify read_D2_operator by introducing a get_stencil function
Jonatan Werpers <jonatan@werpers.com>
parents:
594
diff
changeset
|
20 innerStencil = get_stencil(operators, "D2", "inner_stencil") |
249
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
21 |
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
22 # Create boundary stencils |
594
cc86b920531a
Change the readoperator function to use the .toml format
Jonatan Werpers <jonatan@werpers.com>
parents:
340
diff
changeset
|
23 boundarySize = length(D2["closure_stencils"]) |
249
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
24 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
|
25 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
|
26 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
|
27 end |
596
a9744aa5e235
Simplify read_D2_operator by introducing a get_stencil function
Jonatan Werpers <jonatan@werpers.com>
parents:
594
diff
changeset
|
28 # TODO: Get rid of the padding here. Any padding should be handled by the consturctor accepting the stencils. |
a9744aa5e235
Simplify read_D2_operator by introducing a get_stencil function
Jonatan Werpers <jonatan@werpers.com>
parents:
594
diff
changeset
|
29 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
|
30 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
|
31 |
637
4a81812150f4
Change qudrature closure from tuple of reals to tuple of Stencils. Also remove parametrization of stencil width in D2 since this was illformed for the 2nd order case.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
609
diff
changeset
|
32 q_tuple = pad_tuple(toml_string_array_to_tuple(Float64, H["closure"]), boundarySize) |
4a81812150f4
Change qudrature closure from tuple of reals to tuple of Stencils. Also remove parametrization of stencil width in D2 since this was illformed for the 2nd order case.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
609
diff
changeset
|
33 quadratureClosure = Vector{typeof(innerStencil)}() |
4a81812150f4
Change qudrature closure from tuple of reals to tuple of Stencils. Also remove parametrization of stencil width in D2 since this was illformed for the 2nd order case.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
609
diff
changeset
|
34 for i ∈ 1:boundarySize |
4a81812150f4
Change qudrature closure from tuple of reals to tuple of Stencils. Also remove parametrization of stencil width in D2 since this was illformed for the 2nd order case.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
609
diff
changeset
|
35 quadratureClosure = (quadratureClosure..., Stencil((q_tuple[i],), center=1)) |
4a81812150f4
Change qudrature closure from tuple of reals to tuple of Stencils. Also remove parametrization of stencil width in D2 since this was illformed for the 2nd order case.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
609
diff
changeset
|
36 end |
4a81812150f4
Change qudrature closure from tuple of reals to tuple of Stencils. Also remove parametrization of stencil width in D2 since this was illformed for the 2nd order case.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
609
diff
changeset
|
37 |
594
cc86b920531a
Change the readoperator function to use the .toml format
Jonatan Werpers <jonatan@werpers.com>
parents:
340
diff
changeset
|
38 d2 = SbpOperators.D2( |
249
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
39 innerStencil, |
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
40 closureStencils, |
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
41 eClosure, |
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
42 dClosure, |
637
4a81812150f4
Change qudrature closure from tuple of reals to tuple of Stencils. Also remove parametrization of stencil width in D2 since this was illformed for the 2nd order case.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
609
diff
changeset
|
43 quadratureClosure, |
249
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
44 even |
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
45 ) |
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
46 |
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
47 return d2 |
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
48 end |
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
49 |
655
ec7490fb4404
Start sketching the toml format and needed functions
Jonatan Werpers <jonatan@werpers.com>
parents:
637
diff
changeset
|
50 """ |
ec7490fb4404
Start sketching the toml format and needed functions
Jonatan Werpers <jonatan@werpers.com>
parents:
637
diff
changeset
|
51 read_stencil_set(fn, filter_pairs::Vararg{Pair}) |
ec7490fb4404
Start sketching the toml format and needed functions
Jonatan Werpers <jonatan@werpers.com>
parents:
637
diff
changeset
|
52 |
ec7490fb4404
Start sketching the toml format and needed functions
Jonatan Werpers <jonatan@werpers.com>
parents:
637
diff
changeset
|
53 Picks out a stencil set from the given toml file based on some filters. |
ec7490fb4404
Start sketching the toml format and needed functions
Jonatan Werpers <jonatan@werpers.com>
parents:
637
diff
changeset
|
54 If more than one set matches the filters an error is raised. |
ec7490fb4404
Start sketching the toml format and needed functions
Jonatan Werpers <jonatan@werpers.com>
parents:
637
diff
changeset
|
55 |
ec7490fb4404
Start sketching the toml format and needed functions
Jonatan Werpers <jonatan@werpers.com>
parents:
637
diff
changeset
|
56 """ |
ec7490fb4404
Start sketching the toml format and needed functions
Jonatan Werpers <jonatan@werpers.com>
parents:
637
diff
changeset
|
57 read_stencil_set(fn, filter_pairs::Vararg{Pair}) = get_stencil_set(TOML.parsefile(fn), filter_pairs...) |
ec7490fb4404
Start sketching the toml format and needed functions
Jonatan Werpers <jonatan@werpers.com>
parents:
637
diff
changeset
|
58 |
ec7490fb4404
Start sketching the toml format and needed functions
Jonatan Werpers <jonatan@werpers.com>
parents:
637
diff
changeset
|
59 function get_stencil_set(parsed_toml, filter_pairs::Vararg{Pair}) |
ec7490fb4404
Start sketching the toml format and needed functions
Jonatan Werpers <jonatan@werpers.com>
parents:
637
diff
changeset
|
60 |
ec7490fb4404
Start sketching the toml format and needed functions
Jonatan Werpers <jonatan@werpers.com>
parents:
637
diff
changeset
|
61 end |
597
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 """ |
98cd99237176
Add a function for reading a stencil directly from the a file
Jonatan Werpers <jonatan@werpers.com>
parents:
596
diff
changeset
|
64 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
|
65 |
98cd99237176
Add a function for reading a stencil directly from the a file
Jonatan Werpers <jonatan@werpers.com>
parents:
596
diff
changeset
|
66 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
|
67 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
|
68 |
609
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
69 See also: [`read_stencils`](@ref), [`read_tuple`](@ref), [`get_stencil`](@ref). |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
70 |
597
98cd99237176
Add a function for reading a stencil directly from the a file
Jonatan Werpers <jonatan@werpers.com>
parents:
596
diff
changeset
|
71 # Examples |
98cd99237176
Add a function for reading a stencil directly from the a file
Jonatan Werpers <jonatan@werpers.com>
parents:
596
diff
changeset
|
72 ``` |
98cd99237176
Add a function for reading a stencil directly from the a file
Jonatan Werpers <jonatan@werpers.com>
parents:
596
diff
changeset
|
73 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
|
74 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
|
75 ``` |
98cd99237176
Add a function for reading a stencil directly from the a file
Jonatan Werpers <jonatan@werpers.com>
parents:
596
diff
changeset
|
76 """ |
98cd99237176
Add a function for reading a stencil directly from the a file
Jonatan Werpers <jonatan@werpers.com>
parents:
596
diff
changeset
|
77 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
|
78 |
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 read_stencils(fn, path...; centers) |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
81 |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
82 Read stencils at `path` from the file `fn`. |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
83 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
|
84 |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
85 See also: [`read_stencil`](@ref), [`read_tuple`](@ref), [`get_stencils`](@ref). |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
86 """ |
608 | 87 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
|
88 |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
89 """ |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
90 read_tuple(fn, path...) |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
91 |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
92 Read tuple at `path` from the file `fn`. |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
93 |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
94 See also: [`read_stencil`](@ref), [`read_stencils`](@ref), [`get_tuple`](@ref). |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
95 """ |
600
dd7056869294
Fix a couple of types
Jonatan Werpers <jonatan@werpers.com>
parents:
599
diff
changeset
|
96 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
|
97 |
609
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
98 """ |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
99 get_stencil(parsed_toml, path...; center=nothing) |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
100 |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
101 Same as [`read_stencil`](@ref)) but takes already parsed toml. |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
102 """ |
598
19e1b169aa9c
Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
597
diff
changeset
|
103 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
|
104 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
|
105 @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
|
106 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
|
107 |
598
19e1b169aa9c
Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
597
diff
changeset
|
108 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
|
109 |
598
19e1b169aa9c
Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
597
diff
changeset
|
110 if isnothing(center) |
19e1b169aa9c
Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
597
diff
changeset
|
111 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
|
112 end |
a9744aa5e235
Simplify read_D2_operator by introducing a get_stencil function
Jonatan Werpers <jonatan@werpers.com>
parents:
594
diff
changeset
|
113 |
598
19e1b169aa9c
Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
597
diff
changeset
|
114 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
|
115 end |
19e1b169aa9c
Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
597
diff
changeset
|
116 |
609
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
117 """ |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
118 get_stencils(parsed_toml, path...; centers) |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
119 |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
120 Same as [`read_stencils`](@ref)) but takes already parsed toml. |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
121 """ |
598
19e1b169aa9c
Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
597
diff
changeset
|
122 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
|
123 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
|
124 @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
|
125 @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
|
126 |
19e1b169aa9c
Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
597
diff
changeset
|
127 stencils = () |
19e1b169aa9c
Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
597
diff
changeset
|
128 for i ∈ 1:length(parsed_toml) |
600
dd7056869294
Fix a couple of types
Jonatan Werpers <jonatan@werpers.com>
parents:
599
diff
changeset
|
129 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
|
130 stencils = (stencils..., stencil) |
19e1b169aa9c
Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
597
diff
changeset
|
131 end |
19e1b169aa9c
Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
597
diff
changeset
|
132 |
19e1b169aa9c
Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
597
diff
changeset
|
133 return stencils |
19e1b169aa9c
Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
597
diff
changeset
|
134 end |
19e1b169aa9c
Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
597
diff
changeset
|
135 |
609
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
136 """ |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
137 get_tuple(parsed_toml, path...) |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
138 |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
139 Same as [`read_tuple`](@ref)) but takes already parsed toml. |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
140 """ |
598
19e1b169aa9c
Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
597
diff
changeset
|
141 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
|
142 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
|
143 @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
|
144 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
|
145 return t |
596
a9744aa5e235
Simplify read_D2_operator by introducing a get_stencil function
Jonatan Werpers <jonatan@werpers.com>
parents:
594
diff
changeset
|
146 end |
a9744aa5e235
Simplify read_D2_operator by introducing a get_stencil function
Jonatan Werpers <jonatan@werpers.com>
parents:
594
diff
changeset
|
147 |
655
ec7490fb4404
Start sketching the toml format and needed functions
Jonatan Werpers <jonatan@werpers.com>
parents:
637
diff
changeset
|
148 function get_rationals() |
ec7490fb4404
Start sketching the toml format and needed functions
Jonatan Werpers <jonatan@werpers.com>
parents:
637
diff
changeset
|
149 end |
ec7490fb4404
Start sketching the toml format and needed functions
Jonatan Werpers <jonatan@werpers.com>
parents:
637
diff
changeset
|
150 |
596
a9744aa5e235
Simplify read_D2_operator by introducing a get_stencil function
Jonatan Werpers <jonatan@werpers.com>
parents:
594
diff
changeset
|
151 # 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
|
152 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
|
153 return Tuple(T.(parse_rational.(arr))) |
249
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
154 end |
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
155 |
594
cc86b920531a
Change the readoperator function to use the .toml format
Jonatan Werpers <jonatan@werpers.com>
parents:
340
diff
changeset
|
156 function parse_rational(str) |
cc86b920531a
Change the readoperator function to use the .toml format
Jonatan Werpers <jonatan@werpers.com>
parents:
340
diff
changeset
|
157 expr = Meta.parse(replace(str, "/"=>"//")) |
603
fbff4009c08a
Add tests for parse_rational()
Jonatan Werpers <jonatan@werpers.com>
parents:
602
diff
changeset
|
158 return eval(:(Rational($expr))) |
249
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
159 end |
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
160 |
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
161 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
|
162 if N >= n |
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
163 return t |
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
164 else |
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
165 return pad_tuple((t..., zero(T)), n) |
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
166 end |
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
167 end |
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
168 |
340
29df39a7b568
readoperator.jl: Fix path to operators
Jonatan Werpers <jonatan@werpers.com>
parents:
333
diff
changeset
|
169 sbp_operators_path() = (@__DIR__) * "/operators/" |
249
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
170 export sbp_operators_path |