Mercurial > repos > public > sbplib_julia
annotate src/SbpOperators/readoperator.jl @ 837:126e169bb0b7 feature/setup_documenter
Initial setup of Documenter.jl
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Fri, 14 Jan 2022 09:01:12 +0100 |
parents | e14627e79a54 |
children | fdd48f6ace1c |
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. |
671
e14627e79a54
Add stencil constructor for centered stencils and change from tuple to vararg in stencil constructor taking cneter
Jonatan Werpers <jonatan@werpers.com>
parents:
637
diff
changeset
|
29 eClosure = Stencil(pad_tuple(toml_string_array_to_tuple(Float64, e["closure"]), boundarySize)..., center=1) |
e14627e79a54
Add stencil constructor for centered stencils and change from tuple to vararg in stencil constructor taking cneter
Jonatan Werpers <jonatan@werpers.com>
parents:
637
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 |
671
e14627e79a54
Add stencil constructor for centered stencils and change from tuple to vararg in stencil constructor taking cneter
Jonatan Werpers <jonatan@werpers.com>
parents:
637
diff
changeset
|
35 quadratureClosure = (quadratureClosure..., Stencil(q_tuple[i], center=1)) |
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
|
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 |
597
98cd99237176
Add a function for reading a stencil directly from the a file
Jonatan Werpers <jonatan@werpers.com>
parents:
596
diff
changeset
|
50 |
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_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
|
53 |
98cd99237176
Add a function for reading a stencil directly from the a file
Jonatan Werpers <jonatan@werpers.com>
parents:
596
diff
changeset
|
54 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
|
55 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
|
56 |
609
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
57 See also: [`read_stencils`](@ref), [`read_tuple`](@ref), [`get_stencil`](@ref). |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
58 |
597
98cd99237176
Add a function for reading a stencil directly from the a file
Jonatan Werpers <jonatan@werpers.com>
parents:
596
diff
changeset
|
59 # Examples |
98cd99237176
Add a function for reading a stencil directly from the a file
Jonatan Werpers <jonatan@werpers.com>
parents:
596
diff
changeset
|
60 ``` |
98cd99237176
Add a function for reading a stencil directly from the a file
Jonatan Werpers <jonatan@werpers.com>
parents:
596
diff
changeset
|
61 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
|
62 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
|
63 ``` |
98cd99237176
Add a function for reading a stencil directly from the a file
Jonatan Werpers <jonatan@werpers.com>
parents:
596
diff
changeset
|
64 """ |
98cd99237176
Add a function for reading a stencil directly from the a file
Jonatan Werpers <jonatan@werpers.com>
parents:
596
diff
changeset
|
65 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
|
66 |
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(fn, path...; centers) |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
69 |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
70 Read stencils at `path` from the file `fn`. |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
71 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
|
72 |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
73 See also: [`read_stencil`](@ref), [`read_tuple`](@ref), [`get_stencils`](@ref). |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
74 """ |
608 | 75 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
|
76 |
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(fn, path...) |
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 tuple at `path` from the file `fn`. |
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 See also: [`read_stencil`](@ref), [`read_stencils`](@ref), [`get_tuple`](@ref). |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
83 """ |
600
dd7056869294
Fix a couple of types
Jonatan Werpers <jonatan@werpers.com>
parents:
599
diff
changeset
|
84 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
|
85 |
609
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 get_stencil(parsed_toml, path...; center=nothing) |
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 Same as [`read_stencil`](@ref)) but takes already parsed toml. |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
90 """ |
598
19e1b169aa9c
Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
597
diff
changeset
|
91 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
|
92 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
|
93 @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
|
94 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
|
95 |
598
19e1b169aa9c
Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
597
diff
changeset
|
96 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
|
97 |
598
19e1b169aa9c
Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
597
diff
changeset
|
98 if isnothing(center) |
19e1b169aa9c
Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
597
diff
changeset
|
99 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
|
100 end |
a9744aa5e235
Simplify read_D2_operator by introducing a get_stencil function
Jonatan Werpers <jonatan@werpers.com>
parents:
594
diff
changeset
|
101 |
671
e14627e79a54
Add stencil constructor for centered stencils and change from tuple to vararg in stencil constructor taking cneter
Jonatan Werpers <jonatan@werpers.com>
parents:
637
diff
changeset
|
102 return Stencil(stencil_weights..., center=center) |
598
19e1b169aa9c
Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
597
diff
changeset
|
103 end |
19e1b169aa9c
Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
597
diff
changeset
|
104 |
609
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 get_stencils(parsed_toml, path...; centers) |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
107 |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
108 Same as [`read_stencils`](@ref)) but takes already parsed toml. |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
109 """ |
598
19e1b169aa9c
Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
597
diff
changeset
|
110 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
|
111 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
|
112 @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
|
113 @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
|
114 |
19e1b169aa9c
Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
597
diff
changeset
|
115 stencils = () |
19e1b169aa9c
Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
597
diff
changeset
|
116 for i ∈ 1:length(parsed_toml) |
600
dd7056869294
Fix a couple of types
Jonatan Werpers <jonatan@werpers.com>
parents:
599
diff
changeset
|
117 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
|
118 stencils = (stencils..., stencil) |
19e1b169aa9c
Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
597
diff
changeset
|
119 end |
19e1b169aa9c
Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
597
diff
changeset
|
120 |
19e1b169aa9c
Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
597
diff
changeset
|
121 return stencils |
19e1b169aa9c
Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
597
diff
changeset
|
122 end |
19e1b169aa9c
Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
597
diff
changeset
|
123 |
609
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 get_tuple(parsed_toml, path...) |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
126 |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
127 Same as [`read_tuple`](@ref)) but takes already parsed toml. |
7975143118e8
Add some documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
608
diff
changeset
|
128 """ |
598
19e1b169aa9c
Add funcitons for reading several stecils or reading tuples
Jonatan Werpers <jonatan@werpers.com>
parents:
597
diff
changeset
|
129 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
|
130 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
|
131 @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
|
132 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
|
133 return t |
596
a9744aa5e235
Simplify read_D2_operator by introducing a get_stencil function
Jonatan Werpers <jonatan@werpers.com>
parents:
594
diff
changeset
|
134 end |
a9744aa5e235
Simplify read_D2_operator by introducing a get_stencil function
Jonatan Werpers <jonatan@werpers.com>
parents:
594
diff
changeset
|
135 |
a9744aa5e235
Simplify read_D2_operator by introducing a get_stencil function
Jonatan Werpers <jonatan@werpers.com>
parents:
594
diff
changeset
|
136 # 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
|
137 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
|
138 return Tuple(T.(parse_rational.(arr))) |
249
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
139 end |
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
140 |
594
cc86b920531a
Change the readoperator function to use the .toml format
Jonatan Werpers <jonatan@werpers.com>
parents:
340
diff
changeset
|
141 function parse_rational(str) |
cc86b920531a
Change the readoperator function to use the .toml format
Jonatan Werpers <jonatan@werpers.com>
parents:
340
diff
changeset
|
142 expr = Meta.parse(replace(str, "/"=>"//")) |
603
fbff4009c08a
Add tests for parse_rational()
Jonatan Werpers <jonatan@werpers.com>
parents:
602
diff
changeset
|
143 return eval(:(Rational($expr))) |
249
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
144 end |
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
145 |
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
146 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
|
147 if N >= n |
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
148 return t |
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
149 else |
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
150 return pad_tuple((t..., zero(T)), n) |
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
151 end |
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
152 end |
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
153 |
340
29df39a7b568
readoperator.jl: Fix path to operators
Jonatan Werpers <jonatan@werpers.com>
parents:
333
diff
changeset
|
154 sbp_operators_path() = (@__DIR__) * "/operators/" |
249
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
155 export sbp_operators_path |