comparison test/testSbpOperators.jl @ 568:34d9e10f0001 feature/boundary_ops

Make grid larger in test to make sure there all kinds of regions are represented
author Jonatan Werpers <jonatan@werpers.com>
date Tue, 01 Dec 2020 15:15:06 +0100
parents d14d8de27546
children a8fe91861116
comparison
equal deleted inserted replaced
567:d14d8de27546 568:34d9e10f0001
173 @test Qinv*v == Qinv'*v 173 @test Qinv*v == Qinv'*v
174 end 174 end
175 175
176 @testset "BoundaryRestrictrion" begin 176 @testset "BoundaryRestrictrion" begin
177 op = readOperator(sbp_operators_path()*"d2_4th.txt",sbp_operators_path()*"h_4th.txt") 177 op = readOperator(sbp_operators_path()*"d2_4th.txt",sbp_operators_path()*"h_4th.txt")
178 g_1D = EquidistantGrid(4, 0.0, 1.0) 178 g_1D = EquidistantGrid(11, 0.0, 1.0)
179 g_2D = EquidistantGrid((4,5), (0.0, 0.0), (1.0,1.0)) 179 g_2D = EquidistantGrid((11,15), (0.0, 0.0), (1.0,1.0))
180 180
181 @testset "Constructors" begin 181 @testset "Constructors" begin
182 # 1D 182 # 1D
183 e_l = BoundaryRestriction{Float64,4,Lower}(op.eClosure,size(g_1D)) 183 e_l = BoundaryRestriction{Float64,4,Lower}(op.eClosure,size(g_1D))
184 @test e_l == BoundaryRestriction(g_1D,op.eClosure,Lower()) 184 @test e_l == BoundaryRestriction(g_1D,op.eClosure,Lower())
204 e_s = boundary_restriction(g_2D, op.eClosure, CartesianBoundary{2,Lower}()) 204 e_s = boundary_restriction(g_2D, op.eClosure, CartesianBoundary{2,Lower}())
205 e_n = boundary_restriction(g_2D, op.eClosure, CartesianBoundary{2,Upper}()) 205 e_n = boundary_restriction(g_2D, op.eClosure, CartesianBoundary{2,Upper}())
206 206
207 @testset "Sizes" begin 207 @testset "Sizes" begin
208 # 1D 208 # 1D
209 @test domain_size(e_l) == (4,) 209 @test domain_size(e_l) == (11,)
210 @test domain_size(e_r) == (4,) 210 @test domain_size(e_r) == (11,)
211 211
212 @test range_size(e_l) == () 212 @test range_size(e_l) == ()
213 @test range_size(e_r) == () 213 @test range_size(e_r) == ()
214 214
215 # 2D 215 # 2D
216 @test domain_size(e_w) == (4,5) 216 @test domain_size(e_w) == (11,15)
217 @test domain_size(e_e) == (4,5) 217 @test domain_size(e_e) == (11,15)
218 @test domain_size(e_s) == (4,5) 218 @test domain_size(e_s) == (11,15)
219 @test domain_size(e_n) == (4,5) 219 @test domain_size(e_n) == (11,15)
220 220
221 @test range_size(e_w) == (5,) 221 @test range_size(e_w) == (15,)
222 @test range_size(e_e) == (5,) 222 @test range_size(e_e) == (15,)
223 @test range_size(e_s) == (4,) 223 @test range_size(e_s) == (11,)
224 @test range_size(e_n) == (4,) 224 @test range_size(e_n) == (11,)
225 end 225 end
226 226
227 227
228 @testset "Application" begin 228 @testset "Application" begin
229 # 1D 229 # 1D
230 v = evalOn(g_1D,x->1+x^2) 230 v = evalOn(g_1D,x->1+x^2)
231 u = fill(3.124) 231 u = fill(3.124)
232 @test (e_l*v)[] == v[1] 232 @test (e_l*v)[] == v[1]
233 @test (e_r*v)[] == v[end] 233 @test (e_r*v)[] == v[end]
234 @test (e_r*v)[1] == v[end] 234 @test (e_r*v)[1] == v[end]
235 @test e_l'*u == [u[], 0, 0, 0] 235 @test e_l'*u == [u[]; zeros(10)]
236 @test e_r'*u == [0, 0, 0, u[]] 236 @test e_r'*u == [zeros(10); u[]]
237 @test_throws BoundsError (e_l*v)[2] 237 @test_throws BoundsError (e_l*v)[2]
238 @test_throws BoundsError (e_l'*u)[5] 238 @test_throws BoundsError (e_l'*u)[20]
239 239
240 # 2D 240 # 2D
241 v = zeros(Float64, 4, 5) 241 v = rand(11, 15)
242 v[:,5] = [1, 2, 3, 4]
243 v[:,4] = [1, 2, 3, 4]
244 v[:,3] = [4, 5, 6, 7]
245 v[:,2] = [7, 8, 9, 10]
246 v[:,1] = [10, 11, 12, 13]
247 242
248 @test e_w*v == v[1,:] 243 @test e_w*v == v[1,:]
249 @test e_e*v == v[end,:] 244 @test e_e*v == v[end,:]
250 @test e_s*v == v[:,1] 245 @test e_s*v == v[:,1]
251 @test e_n*v == v[:,end] 246 @test e_n*v == v[:,end]
252 247
253 248
254 g_x = [1., 2., 3., 4.] 249 g_x = rand(11)
255 g_y = [5., 4., 3., 2., 1.] 250 g_y = rand(15)
256 251
257 G_w = zeros(Float64, (4,5)) 252 G_w = zeros(Float64, (11,15))
258 G_w[1,:] = g_y 253 G_w[1,:] = g_y
259 254
260 G_e = zeros(Float64, (4,5)) 255 G_e = zeros(Float64, (11,15))
261 G_e[4,:] = g_y 256 G_e[end,:] = g_y
262 257
263 G_s = zeros(Float64, (4,5)) 258 G_s = zeros(Float64, (11,15))
264 G_s[:,1] = g_x 259 G_s[:,1] = g_x
265 260
266 G_n = zeros(Float64, (4,5)) 261 G_n = zeros(Float64, (11,15))
267 G_n[:,5] = g_x 262 G_n[:,end] = g_x
268 263
269 @test e_w'*g_y == G_w 264 @test e_w'*g_y == G_w
270 @test e_e'*g_y == G_e 265 @test e_e'*g_y == G_e
271 @test e_s'*g_x == G_s 266 @test e_s'*g_x == G_s
272 @test e_n'*g_x == G_n 267 @test e_n'*g_x == G_n
273 end 268 end
274 269
275 @testset "Inferred" begin 270 @testset "Inferred" begin
276 # 1D 271 # # 1D
277 v = ones(Float64, 4) 272 v = ones(Float64, 11)
278 u = fill(1.) 273 u = fill(1.)
279 @inferred (e_l*v)[] == 1 274 @inferred (e_l*v)[] == 1
280 @inferred (e_r*v)[] == 1 275 @inferred (e_r*v)[] == 1
281 @inferred e_l'*u == [1., 0., 0., 0.] 276 @inferred e_l'*u == [1.; zeros(10)]
282 @inferred e_r'*u == [0., 0., 0., 1.] 277 @inferred e_r'*u == [zeros(10); 1.]
283 278
284 # 2D 279 # # 2D
285 v = ones(Float64, 4, 5) 280 v = ones(Float64, 11, 15)
286 @inferred e_w*v == ones(Float64, 5) 281 @inferred e_w*v == ones(Float64, 15)
287 @inferred e_e*v == ones(Float64, 5) 282 @inferred e_e*v == ones(Float64, 15)
288 @inferred e_s*v == ones(Float64, 4) 283 @inferred e_s*v == ones(Float64, 11)
289 @inferred e_n*v == ones(Float64, 4) 284 @inferred e_n*v == ones(Float64, 11)
290 285
291 g_x = ones(Float64,4) 286 g_x = ones(Float64,11)
292 g_y = ones(Float64,5) 287 g_y = ones(Float64,15)
293 288
294 G_w = zeros(Float64, (4,5)) 289 G_w = zeros(Float64, (11,15))
295 G_w[1,:] = g_y 290 G_w[1,:] = g_y
296 291
297 G_e = zeros(Float64, (4,5)) 292 G_e = zeros(Float64, (11,15))
298 G_e[4,:] = g_y 293 G_e[4,:] = g_y
299 294
300 G_s = zeros(Float64, (4,5)) 295 G_s = zeros(Float64, (11,15))
301 G_s[:,1] = g_x 296 G_s[:,1] = g_x
302 297
303 G_n = zeros(Float64, (4,5)) 298 G_n = zeros(Float64, (11,15))
304 G_n[:,5] = g_x 299 G_n[:,5] = g_x
305 300
306 @inferred e_w'*g_y == G_w 301 @inferred e_w'*g_y == G_w
307 @inferred e_e'*g_y == G_e 302 @inferred e_e'*g_y == G_e
308 @inferred e_s'*g_x == G_s 303 @inferred e_s'*g_x == G_s