Mercurial > repos > public > sbplib_julia
annotate src/SbpOperators/stencil_set.jl @ 2002:4300c59bbeff feature/grids/geometry_functions
Merge feature/grids/manifolds
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Tue, 29 Apr 2025 09:00:42 +0200 |
parents | 8315c456e3b4 |
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 |
804
98e0e0f3c5a8
Move exports to top of file in readoperator.jl
Jonatan Werpers <jonatan@werpers.com>
parents:
803
diff
changeset
|
3 |
989
7bf3121c6864
Add type StencilSet
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
860
diff
changeset
|
4 """ |
7bf3121c6864
Add type StencilSet
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
860
diff
changeset
|
5 StencilSet |
7bf3121c6864
Add type StencilSet
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
860
diff
changeset
|
6 |
7bf3121c6864
Add type StencilSet
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
860
diff
changeset
|
7 A `StencilSet` contains a set of associated stencils. The stencils |
1513
d7bc11053951
Fix spelling mistakes
Jonatan Werpers <jonatan@werpers.com>
parents:
1355
diff
changeset
|
8 are are stored in a table, and can be accessed by indexing into the `StencilSet`. |
991
37fd8c1cadb2
Make StencilSet(filename; filters...) an outer constructor again
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
990
diff
changeset
|
9 """ |
37fd8c1cadb2
Make StencilSet(filename; filters...) an outer constructor again
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
990
diff
changeset
|
10 struct StencilSet |
37fd8c1cadb2
Make StencilSet(filename; filters...) an outer constructor again
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
990
diff
changeset
|
11 table |
37fd8c1cadb2
Make StencilSet(filename; filters...) an outer constructor again
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
990
diff
changeset
|
12 end |
37fd8c1cadb2
Make StencilSet(filename; filters...) an outer constructor again
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
990
diff
changeset
|
13 Base.getindex(set::StencilSet,I...) = set.table[I...] |
249
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
14 |
991
37fd8c1cadb2
Make StencilSet(filename; filters...) an outer constructor again
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
990
diff
changeset
|
15 |
37fd8c1cadb2
Make StencilSet(filename; filters...) an outer constructor again
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
990
diff
changeset
|
16 """ |
1201
ec2a4d5dd8e8
Fix typo in docstring
Jonatan Werpers <jonatan@werpers.com>
parents:
1019
diff
changeset
|
17 read_stencil_set(filename; filters) |
655
ec7490fb4404
Start sketching the toml format and needed functions
Jonatan Werpers <jonatan@werpers.com>
parents:
637
diff
changeset
|
18 |
989
7bf3121c6864
Add type StencilSet
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
860
diff
changeset
|
19 Creates a `StencilSet` 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
|
20 filters. If more than one set matches the filters an error is raised. The |
989
7bf3121c6864
Add type StencilSet
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
860
diff
changeset
|
21 table of the `StencilSet` is a parsed TOML intended for functions like |
853 | 22 `parse_scalar` and `parse_stencil`. |
655
ec7490fb4404
Start sketching the toml format and needed functions
Jonatan Werpers <jonatan@werpers.com>
parents:
637
diff
changeset
|
23 |
1513
d7bc11053951
Fix spelling mistakes
Jonatan Werpers <jonatan@werpers.com>
parents:
1355
diff
changeset
|
24 The `StencilSet` table is not parsed beyond the initial TOML parse. To get usable |
764
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
25 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
|
26 |
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
27 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
|
28 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
|
29 section, the exact parsing is left to the user. |
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
30 |
852
510f744d0876
Add some documentation for the file format
Jonatan Werpers <jonatan@werpers.com>
parents:
836
diff
changeset
|
31 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
|
32 |
1018
5ec49dd2c7c4
Reintroduce read_stencil_set
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
991
diff
changeset
|
33 See also [`StencilSet`](@ref), [`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
|
34 """ |
1018
5ec49dd2c7c4
Reintroduce read_stencil_set
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
991
diff
changeset
|
35 read_stencil_set(filename; filters...) = StencilSet(get_stencil_set(TOML.parsefile(filename); filters...)) |
990
b6238afd3bb0
Add methods for creating derivative operators in 1D from stencil sets without providing directions
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
989
diff
changeset
|
36 |
655
ec7490fb4404
Start sketching the toml format and needed functions
Jonatan Werpers <jonatan@werpers.com>
parents:
637
diff
changeset
|
37 |
764
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
38 """ |
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
39 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
|
40 |
855 | 41 Picks out a stencil set from an already parsed TOML based on some key-value |
42 filters. | |
835
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
43 |
1018
5ec49dd2c7c4
Reintroduce read_stencil_set
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
991
diff
changeset
|
44 See also [`read_stencil_set`](@ref). |
764
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
45 """ |
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
46 function get_stencil_set(parsed_toml; filters...) |
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
47 matches = findall(parsed_toml["stencil_set"]) do set |
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
48 for (key, val) ∈ filters |
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
49 if set[string(key)] != val |
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
50 return false |
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
51 end |
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 return true |
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
55 end |
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
56 |
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
57 if length(matches) != 1 |
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
58 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
|
59 end |
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
60 |
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
61 i = matches[1] |
d34b515b0ae7
Add functions for reading stencil sets
Jonatan Werpers <jonatan@werpers.com>
parents:
655
diff
changeset
|
62 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
|
63 end |
597
98cd99237176
Add a function for reading a stencil directly from the a file
Jonatan Werpers <jonatan@werpers.com>
parents:
596
diff
changeset
|
64 |
768
7c87a33963c5
Add some notes, delete functions that won't be needed
Jonatan Werpers <jonatan@werpers.com>
parents:
767
diff
changeset
|
65 """ |
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
66 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
|
67 |
855 | 68 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
|
69 |
1018
5ec49dd2c7c4
Reintroduce read_stencil_set
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
991
diff
changeset
|
70 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
|
71 """ |
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
72 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
|
73 check_stencil_toml(parsed_toml) |
766 | 74 |
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
75 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
|
76 weights = parse_rational.(parsed_toml) |
766 | 77 return CenteredStencil(weights...) |
78 end | |
79 | |
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
80 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
|
81 return Stencil(weights..., center = parsed_toml["c"]) |
766 | 82 end |
83 | |
835
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
84 """ |
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
85 parse_stencil(T, parsed_toml) |
835
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
86 |
853 | 87 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
|
88 """ |
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
89 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
|
90 |
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
91 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
|
92 if !(parsed_toml isa Dict || parsed_toml isa Vector{String}) |
791 | 93 throw(ArgumentError("the TOML for a stencil must be a vector of strings or a table.")) |
766 | 94 end |
95 | |
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
96 if parsed_toml isa Vector{String} |
766 | 97 return |
98 end | |
99 | |
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
100 if !(haskey(parsed_toml, "s") && haskey(parsed_toml, "c")) |
766 | 101 throw(ArgumentError("the table form of a stencil must have fields `s` and `c`.")) |
102 end | |
103 | |
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
104 if !(parsed_toml["s"] isa Vector{String}) |
766 | 105 throw(ArgumentError("a stencil must be specified as a vector of strings.")) |
106 end | |
107 | |
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
108 if !(parsed_toml["c"] isa Int) |
766 | 109 throw(ArgumentError("the center of a stencil must be specified as an integer.")) |
110 end | |
111 end | |
112 | |
892
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
113 |
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
114 """ |
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
115 parse_nested_stencil(parsed_toml) |
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
116 |
895
d24b331547f3
Add method for controlling the element type when parsing nested stencils
Jonatan Werpers <jonatan@werpers.com>
parents:
892
diff
changeset
|
117 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
|
118 |
895
d24b331547f3
Add method for controlling the element type when parsing nested stencils
Jonatan Werpers <jonatan@werpers.com>
parents:
892
diff
changeset
|
119 See also [`read_stencil_set`](@ref), [`parse_stencil`](@ref). |
892
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
120 """ |
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
121 function parse_nested_stencil(parsed_toml) |
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
122 if parsed_toml isa Array |
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
123 weights = parse_stencil.(parsed_toml) |
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
124 return CenteredNestedStencil(weights...) |
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
125 end |
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
126 |
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
127 center = parsed_toml["c"] |
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
128 weights = parse_tuple.(parsed_toml["s"]) |
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
129 return NestedStencil(weights...; center) |
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
130 end |
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
131 |
895
d24b331547f3
Add method for controlling the element type when parsing nested stencils
Jonatan Werpers <jonatan@werpers.com>
parents:
892
diff
changeset
|
132 """ |
d24b331547f3
Add method for controlling the element type when parsing nested stencils
Jonatan Werpers <jonatan@werpers.com>
parents:
892
diff
changeset
|
133 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
|
134 |
d24b331547f3
Add method for controlling the element type when parsing nested stencils
Jonatan Werpers <jonatan@werpers.com>
parents:
892
diff
changeset
|
135 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
|
136 """ |
d24b331547f3
Add method for controlling the element type when parsing nested stencils
Jonatan Werpers <jonatan@werpers.com>
parents:
892
diff
changeset
|
137 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
|
138 |
06c510d40ebb
Add parse_nested_stencil
Jonatan Werpers <jonatan@werpers.com>
parents:
860
diff
changeset
|
139 |
835
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
140 """ |
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
141 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
|
142 |
835
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
143 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
|
144 |
1018
5ec49dd2c7c4
Reintroduce read_stencil_set
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
991
diff
changeset
|
145 See also [`read_stencil_set`](@ref), [`parse_stencil`](@ref) [`parse_tuple`](@ref). |
835
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
146 """ |
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
147 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
|
148 try |
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
149 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
|
150 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
|
151 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
|
152 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
|
153 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
|
154 |
835
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
155 """ |
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
156 parse_tuple(parsed_toml) |
835
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
157 |
853 | 158 Parse an array as a tuple of scalars. |
835
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
159 |
1018
5ec49dd2c7c4
Reintroduce read_stencil_set
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
991
diff
changeset
|
160 See also [`read_stencil_set`](@ref), [`parse_stencil`](@ref), [`parse_scalar`](@ref). |
835
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
161 """ |
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
162 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
|
163 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
|
164 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
|
165 end |
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
166 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
|
167 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
|
168 |
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 """ |
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
171 parse_rational(parsed_toml) |
835
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
172 |
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
173 Parse a string or a number as a rational. |
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
174 """ |
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
175 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
|
176 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
|
177 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
|
178 return eval(:(Rational($expr))) |
21ab60cc0a5c
Let parse_rational handle numbers and not just strings
Jonatan Werpers <jonatan@werpers.com>
parents:
828
diff
changeset
|
179 else |
836
91a63b04b1c9
Attempt to make variable names for parse functions more descriptive
Jonatan Werpers <jonatan@werpers.com>
parents:
835
diff
changeset
|
180 return Rational(parsed_toml) |
830
21ab60cc0a5c
Let parse_rational handle numbers and not just strings
Jonatan Werpers <jonatan@werpers.com>
parents:
828
diff
changeset
|
181 end |
249
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
182 end |
7cb4492ccd60
Refactor package SbpOperators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
183 |
835
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
184 """ |
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
185 sbp_operators_path() |
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
186 |
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
187 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
|
188 |
1018
5ec49dd2c7c4
Reintroduce read_stencil_set
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
991
diff
changeset
|
189 See also [`StencilSet`](@ref), [`read_stencil_set`](@ref). |
835
fc2ac236dd73
Add a bunch of documentation
Jonatan Werpers <jonatan@werpers.com>
parents:
831
diff
changeset
|
190 """ |
340
29df39a7b568
readoperator.jl: Fix path to operators
Jonatan Werpers <jonatan@werpers.com>
parents:
333
diff
changeset
|
191 sbp_operators_path() = (@__DIR__) * "/operators/" |