Mercurial > repos > public > sbplib_julia
annotate src/SbpOperators/readoperator.jl @ 914:a9d776400251 feature/variable_derivatives
Clean up TODO.md
| author | Jonatan Werpers <jonatan@werpers.com> |
|---|---|
| date | Fri, 18 Feb 2022 07:18:38 +0100 |
| parents | d24b331547f3 |
| children |
| 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 |
|
764
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
3 export read_stencil_set |
|
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
4 export get_stencil_set |
|
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
5 |
| 766 | 6 export parse_stencil |
|
892
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
7 export parse_nested_stencil |
|
831
760c11e81fd4
Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents:
830
diff
changeset
|
8 export parse_scalar |
|
760c11e81fd4
Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents:
830
diff
changeset
|
9 export parse_tuple |
| 766 | 10 |
|
804
98e0e0f3c5a8
Move exports to top of file in readoperator.jl
Jonatan Werpers <jonatan@werpers.com>
parents:
803
diff
changeset
|
11 export sbp_operators_path |
|
98e0e0f3c5a8
Move exports to top of file in readoperator.jl
Jonatan Werpers <jonatan@werpers.com>
parents:
803
diff
changeset
|
12 |
|
249
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
13 |
|
655
ec7490fb4404
Start sketching the toml format and needed functions
Jonatan Werpers <jonatan@werpers.com>
parents:
637
diff
changeset
|
14 """ |
|
860
568058183791
Rename argument for `read_stencil_set`: `fn` -> `filename`
Jonatan Werpers <jonatan@werpers.com>
parents:
856
diff
changeset
|
15 read_stencil_set(filename; filters) |
|
655
ec7490fb4404
Start sketching the toml format and needed functions
Jonatan Werpers <jonatan@werpers.com>
parents:
637
diff
changeset
|
16 |
|
860
568058183791
Rename argument for `read_stencil_set`: `fn` -> `filename`
Jonatan Werpers <jonatan@werpers.com>
parents:
856
diff
changeset
|
17 Picks out a stencil set from a TOML file based on some key-value |
|
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
18 filters. If more than one set matches the filters an error is raised. The |
| 855 | 19 returned stencil set contains parsed TOML intended for functions like |
| 853 | 20 `parse_scalar` and `parse_stencil`. |
|
655
ec7490fb4404
Start sketching the toml format and needed functions
Jonatan Werpers <jonatan@werpers.com>
parents:
637
diff
changeset
|
21 |
| 855 | 22 The stencil set is not parsed beyond the inital TOML parse. To get usable |
|
764
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
23 stencils use the `parse_stencil` functions on the fields of the stencil set. |
|
835
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
24 |
|
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
25 The reason for this is that since stencil sets are intended to be very |
|
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
26 general, and currently do not include any way to specify how to parse a given |
|
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
27 section, the exact parsing is left to the user. |
|
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
28 |
|
852
510f744d0876
Add some documentation for the file format
Jonatan Werpers <jonatan@werpers.com>
parents:
836
diff
changeset
|
29 For more information see [Operator file format](@ref) in the documentation. |
|
510f744d0876
Add some documentation for the file format
Jonatan Werpers <jonatan@werpers.com>
parents:
836
diff
changeset
|
30 |
|
835
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
31 See also [`sbp_operators_path`](@ref), [`get_stencil_set`](@ref), [`parse_stencil`](@ref), [`parse_scalar`](@ref), [`parse_tuple`](@ref),. |
|
655
ec7490fb4404
Start sketching the toml format and needed functions
Jonatan Werpers <jonatan@werpers.com>
parents:
637
diff
changeset
|
32 """ |
|
860
568058183791
Rename argument for `read_stencil_set`: `fn` -> `filename`
Jonatan Werpers <jonatan@werpers.com>
parents:
856
diff
changeset
|
33 read_stencil_set(filename; filters...) = get_stencil_set(TOML.parsefile(filename); filters...) |
|
655
ec7490fb4404
Start sketching the toml format and needed functions
Jonatan Werpers <jonatan@werpers.com>
parents:
637
diff
changeset
|
34 |
|
764
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
35 """ |
|
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
36 get_stencil_set(parsed_toml; filters...) |
|
655
ec7490fb4404
Start sketching the toml format and needed functions
Jonatan Werpers <jonatan@werpers.com>
parents:
637
diff
changeset
|
37 |
| 855 | 38 Picks out a stencil set from an already parsed TOML based on some key-value |
| 39 filters. | |
|
835
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
40 |
|
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
41 See also [`read_stencil_set`](@ref). |
|
764
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
42 """ |
|
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
43 function get_stencil_set(parsed_toml; filters...) |
|
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
44 matches = findall(parsed_toml["stencil_set"]) do set |
|
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
45 for (key, val) ∈ filters |
|
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
46 if set[string(key)] != val |
|
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
47 return false |
|
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
48 end |
|
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
49 end |
|
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
50 |
|
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
51 return true |
|
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
52 end |
|
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
53 |
|
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
54 if length(matches) != 1 |
|
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
55 throw(ArgumentError("filters must pick out a single stencil set")) |
|
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
56 end |
|
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
57 |
|
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
58 i = matches[1] |
|
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
59 return parsed_toml["stencil_set"][i] |
|
655
ec7490fb4404
Start sketching the toml format and needed functions
Jonatan Werpers <jonatan@werpers.com>
parents:
637
diff
changeset
|
60 end |
|
597
98cd99237176
Add a function for reading a stencil directly from the a file
Jonatan Werpers <jonatan@werpers.com>
parents:
596
diff
changeset
|
61 |
|
768
7c87a33963c5
Add some notes, delete functions that won't be needed
Jonatan Werpers <jonatan@werpers.com>
parents:
767
diff
changeset
|
62 """ |
|
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
63 parse_stencil(parsed_toml) |
|
768
7c87a33963c5
Add some notes, delete functions that won't be needed
Jonatan Werpers <jonatan@werpers.com>
parents:
767
diff
changeset
|
64 |
| 855 | 65 Accepts parsed TOML and reads it as a stencil. |
|
835
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
66 |
|
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
67 See also [`read_stencil_set`](@ref), [`parse_scalar`](@ref), [`parse_tuple`](@ref). |
|
768
7c87a33963c5
Add some notes, delete functions that won't be needed
Jonatan Werpers <jonatan@werpers.com>
parents:
767
diff
changeset
|
68 """ |
|
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
69 function parse_stencil(parsed_toml) |
|
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
70 check_stencil_toml(parsed_toml) |
| 766 | 71 |
|
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
72 if parsed_toml isa Array |
|
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
73 weights = parse_rational.(parsed_toml) |
| 766 | 74 return CenteredStencil(weights...) |
| 75 end | |
| 76 | |
|
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
77 weights = parse_rational.(parsed_toml["s"]) |
|
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
78 return Stencil(weights..., center = parsed_toml["c"]) |
| 766 | 79 end |
| 80 | |
|
835
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
81 """ |
|
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
82 parse_stencil(T, parsed_toml) |
|
835
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
83 |
| 853 | 84 Parses the input as a stencil with element type `T`. |
|
835
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
85 """ |
|
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
86 parse_stencil(T, parsed_toml) = Stencil{T}(parse_stencil(parsed_toml)) |
|
828
ca182cbb8f49
Add a method to parse_stencil which allows controlling the element type
Jonatan Werpers <jonatan@werpers.com>
parents:
809
diff
changeset
|
87 |
|
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
88 function check_stencil_toml(parsed_toml) |
|
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
89 if !(parsed_toml isa Dict || parsed_toml isa Vector{String}) |
| 791 | 90 throw(ArgumentError("the TOML for a stencil must be a vector of strings or a table.")) |
| 766 | 91 end |
| 92 | |
|
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
93 if parsed_toml isa Vector{String} |
| 766 | 94 return |
| 95 end | |
| 96 | |
|
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
97 if !(haskey(parsed_toml, "s") && haskey(parsed_toml, "c")) |
| 766 | 98 throw(ArgumentError("the table form of a stencil must have fields `s` and `c`.")) |
| 99 end | |
| 100 | |
|
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
101 if !(parsed_toml["s"] isa Vector{String}) |
| 766 | 102 throw(ArgumentError("a stencil must be specified as a vector of strings.")) |
| 103 end | |
| 104 | |
|
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
105 if !(parsed_toml["c"] isa Int) |
| 766 | 106 throw(ArgumentError("the center of a stencil must be specified as an integer.")) |
| 107 end | |
| 108 end | |
| 109 | |
|
892
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
110 |
|
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
111 """ |
|
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
112 parse_nested_stencil(parsed_toml) |
|
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
113 |
|
895
d24b331547f3
Add method for controlling the element type when parsing nested stencils
Jonatan Werpers <jonatan@werpers.com>
parents:
892
diff
changeset
|
114 Accept parsed TOML and read it as a nested tuple. |
|
892
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
115 |
|
895
d24b331547f3
Add method for controlling the element type when parsing nested stencils
Jonatan Werpers <jonatan@werpers.com>
parents:
892
diff
changeset
|
116 See also [`read_stencil_set`](@ref), [`parse_stencil`](@ref). |
|
892
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
117 """ |
|
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
118 function parse_nested_stencil(parsed_toml) |
|
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
119 if parsed_toml isa Array |
|
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
120 weights = parse_stencil.(parsed_toml) |
|
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
121 return CenteredNestedStencil(weights...) |
|
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
122 end |
|
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
123 |
|
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
124 center = parsed_toml["c"] |
|
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
125 weights = parse_tuple.(parsed_toml["s"]) |
|
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
126 return NestedStencil(weights...; center) |
|
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
127 end |
|
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
128 |
|
895
d24b331547f3
Add method for controlling the element type when parsing nested stencils
Jonatan Werpers <jonatan@werpers.com>
parents:
892
diff
changeset
|
129 """ |
|
d24b331547f3
Add method for controlling the element type when parsing nested stencils
Jonatan Werpers <jonatan@werpers.com>
parents:
892
diff
changeset
|
130 parse_nested_stencil(T, parsed_toml) |
|
d24b331547f3
Add method for controlling the element type when parsing nested stencils
Jonatan Werpers <jonatan@werpers.com>
parents:
892
diff
changeset
|
131 |
|
d24b331547f3
Add method for controlling the element type when parsing nested stencils
Jonatan Werpers <jonatan@werpers.com>
parents:
892
diff
changeset
|
132 Parse the input as a nested stencil with element type `T`. |
|
d24b331547f3
Add method for controlling the element type when parsing nested stencils
Jonatan Werpers <jonatan@werpers.com>
parents:
892
diff
changeset
|
133 """ |
|
d24b331547f3
Add method for controlling the element type when parsing nested stencils
Jonatan Werpers <jonatan@werpers.com>
parents:
892
diff
changeset
|
134 parse_nested_stencil(T, parsed_toml) = NestedStencil{T}(parse_nested_stencil(parsed_toml)) |
|
892
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
135 |
|
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
136 |
|
835
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
137 """ |
|
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
138 parse_scalar(parsed_toml) |
|
831
760c11e81fd4
Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents:
830
diff
changeset
|
139 |
|
835
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
140 Parse a scalar, represented as a string or a number in the TOML, and return it as a `Rational` |
|
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
141 |
|
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
142 See also [`read_stencil_set`](@ref), [`parse_stencil`](@ref) [`parse_tuple`](@ref). |
|
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
143 """ |
|
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
144 function parse_scalar(parsed_toml) |
|
831
760c11e81fd4
Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents:
830
diff
changeset
|
145 try |
|
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
146 return parse_rational(parsed_toml) |
|
831
760c11e81fd4
Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents:
830
diff
changeset
|
147 catch e |
|
760c11e81fd4
Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents:
830
diff
changeset
|
148 throw(ArgumentError("must be a number or a string representing a number.")) |
|
760c11e81fd4
Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents:
830
diff
changeset
|
149 end |
|
760c11e81fd4
Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents:
830
diff
changeset
|
150 end |
|
760c11e81fd4
Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents:
830
diff
changeset
|
151 |
|
835
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
152 """ |
|
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
153 parse_tuple(parsed_toml) |
|
835
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
154 |
| 853 | 155 Parse an array as a tuple of scalars. |
|
835
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
156 |
|
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
157 See also [`read_stencil_set`](@ref), [`parse_stencil`](@ref), [`parse_scalar`](@ref). |
|
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
158 """ |
|
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
159 function parse_tuple(parsed_toml) |
|
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
160 if !(parsed_toml isa Array) |
|
831
760c11e81fd4
Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents:
830
diff
changeset
|
161 throw(ArgumentError("argument must be an array")) |
|
760c11e81fd4
Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents:
830
diff
changeset
|
162 end |
|
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
163 return Tuple(parse_scalar.(parsed_toml)) |
|
831
760c11e81fd4
Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents:
830
diff
changeset
|
164 end |
|
760c11e81fd4
Introduce parse_tuple and parse_scalar and replace all external calls to parse_rational
Jonatan Werpers <jonatan@werpers.com>
parents:
830
diff
changeset
|
165 |
|
835
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
166 |
|
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
167 """ |
|
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
168 parse_rational(parsed_toml) |
|
835
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
169 |
|
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
170 Parse a string or a number as a rational. |
|
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
171 """ |
|
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
172 function parse_rational(parsed_toml) |
|
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
173 if parsed_toml isa String |
|
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
174 expr = Meta.parse(replace(parsed_toml, "/"=>"//")) |
|
830
21ab60cc0a5c
Let parse_rational handle numbers and not just strings
Jonatan Werpers <jonatan@werpers.com>
parents:
828
diff
changeset
|
175 return eval(:(Rational($expr))) |
|
21ab60cc0a5c
Let parse_rational handle numbers and not just strings
Jonatan Werpers <jonatan@werpers.com>
parents:
828
diff
changeset
|
176 else |
|
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
177 return Rational(parsed_toml) |
|
830
21ab60cc0a5c
Let parse_rational handle numbers and not just strings
Jonatan Werpers <jonatan@werpers.com>
parents:
828
diff
changeset
|
178 end |
|
249
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
179 end |
|
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
180 |
|
835
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
181 """ |
|
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
182 sbp_operators_path() |
|
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
183 |
|
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
184 Calculate the path for the operators folder with included stencil sets. |
|
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
185 |
|
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
186 See also [`read_stencil_set`](@ref) |
|
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
187 """ |
|
340
29df39a7b568
readoperator.jl: Fix path to operators
Jonatan Werpers <jonatan@werpers.com>
parents:
333
diff
changeset
|
188 sbp_operators_path() = (@__DIR__) * "/operators/" |
