comparison test/testSbpOperators.jl @ 517:2edacece1637 feature/boundary_ops

Fix range_size not returning empty tuple
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Tue, 24 Nov 2020 18:30:25 +0100
parents d55008f5e2f3
children 51e4bf6ab755
comparison
equal deleted inserted replaced
516:f932af8c1e56 517:2edacece1637
182 e_r = BoundaryRestriction(g,op.eClosure,Upper()) 182 e_r = BoundaryRestriction(g,op.eClosure,Upper())
183 183
184 v = evalOn(g,x->1+x^2) 184 v = evalOn(g,x->1+x^2)
185 u = fill(3.124) 185 u = fill(3.124)
186 186
187 e_l*v isa LazyTensorMappingApplication
188 @test_broken (e_l*v)[Index{Lower}(1)] == v[1] 187 @test_broken (e_l*v)[Index{Lower}(1)] == v[1]
189 @test_broken (e_r*v)[Index{Upper}(4)] == v[end] 188 @test_broken (e_r*v)[Index{Upper}(4)] == v[end]
190 @test e_l'*u == [u[], 0, 0, 0] 189 @test e_l'*u == [u[], 0, 0, 0]
191 @test e_r'*u == [0, 0, 0, u[]] 190 @test e_r'*u == [0, 0, 0, u[]]
192 @test_throws BoundsError (e_l*v)[Index{Lower}(3)] 191 @test_throws BoundsError (e_l*v)[Index{Lower}(3)]
207 v[:,1] = [10, 11, 12, 13] 206 v[:,1] = [10, 11, 12, 13]
208 207
209 @test e_w isa TensorMapping{T,1,2} where T 208 @test e_w isa TensorMapping{T,1,2} where T
210 @test e_w' isa TensorMapping{T,2,1} where T 209 @test e_w' isa TensorMapping{T,2,1} where T
211 210
212
213
214 @test domain_size(e_w) == (4,5) 211 @test domain_size(e_w) == (4,5)
215 @test domain_size(e_e) == (4,5) 212 @test domain_size(e_e) == (4,5)
216 @test domain_size(e_s) == (4,5) 213 @test domain_size(e_s) == (4,5)
217 @test domain_size(e_n) == (4,5) 214 @test domain_size(e_n) == (4,5)
218 215
219 @test range_size(e_w) == (1,5) 216 @test range_size(e_w) == (5,)
220 @test range_size(e_e) == (1,5) 217 @test range_size(e_e) == (5,)
221 @test range_size(e_s) == (4,1) 218 @test range_size(e_s) == (4,)
222 @test range_size(e_n) == (4,1) 219 @test range_size(e_n) == (4,)
223 220
224 e_w*v isa LazyTensorMappingApplication 221 @test_broken e_w*v == [10,7,4,1.0,1]
225 222 @test_broken e_e*v == [13,10,7,4,4.0]
226 @test_broken e_w'*v == [10,7,4,1.0,1] 223 @test_broken e_s*v == [10,11,12,13.0]
227 @test_broken e_e'*v == [13,10,7,4,4.0] 224 @test_broken e_n*v == [1,2,3,4.0]
228 @test_broken e_s'*v == [10,11,12,13.0]
229 @test_broken e_n'*v == [1,2,3,4.0]
230 225
231 g_x = [1,2,3,4.0] 226 g_x = [1,2,3,4.0]
232 g_y = [5,4,3,2,1.0] 227 g_y = [5,4,3,2,1.0]
233 228
234 G_w = zeros(Float64, (4,5)) 229 G_w = zeros(Float64, (4,5))
241 G_s[:,1] = g_x 236 G_s[:,1] = g_x
242 237
243 G_n = zeros(Float64, (4,5)) 238 G_n = zeros(Float64, (4,5))
244 G_n[:,5] = g_x 239 G_n[:,5] = g_x
245 240
246 @test_broken size(e_w*g_y) == (UnknownDim,5) 241 @test_broken e_w'*g_y == G_w
247 @test_broken size(e_e*g_y) == (UnknownDim,5) 242 @test_broken e_e'*g_y == G_e
248 @test_broken size(e_s*g_x) == (4,UnknownDim) 243 @test_broken e_s'*g_x == G_s
249 @test_broken size(e_n*g_x) == (4,UnknownDim) 244 @test_broken e_n'*g_x == G_n
250
251 # These tests should be moved to where they are possible (i.e we know what the grid should be)
252 @test_broken e_w*g_y == G_w
253 @test_broken e_e*g_y == G_e
254 @test_broken e_s*g_x == G_s
255 @test_broken e_n*g_x == G_n
256 end 245 end
257 # 246 #
258 # @testset "NormalDerivative" begin 247 # @testset "NormalDerivative" begin
259 # op = readOperator(sbp_operators_path()*"d2_4th.txt",sbp_operators_path()*"h_4th.txt") 248 # op = readOperator(sbp_operators_path()*"d2_4th.txt",sbp_operators_path()*"h_4th.txt")
260 # g = EquidistantGrid((5,6), (0.0, 0.0), (4.0,5.0)) 249 # g = EquidistantGrid((5,6), (0.0, 0.0), (4.0,5.0))