Mercurial > repos > public > sbplib_julia
comparison test/SbpOperators/volumeops/volume_operator_test.jl @ 1047:d12ab8120d29 feature/first_derivative
Merge default
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Wed, 23 Mar 2022 12:43:03 +0100 |
parents | 1ba8a398af9c |
children | 05a25a5063bb |
comparison
equal
deleted
inserted
replaced
1046:e00eb000346e | 1047:d12ab8120d29 |
---|---|
20 @testset "Constructors" begin | 20 @testset "Constructors" begin |
21 @testset "1D" begin | 21 @testset "1D" begin |
22 op = VolumeOperator(inner_stencil,closure_stencils,(11,),even) | 22 op = VolumeOperator(inner_stencil,closure_stencils,(11,),even) |
23 @test op == VolumeOperator(g_1D,inner_stencil,closure_stencils,even) | 23 @test op == VolumeOperator(g_1D,inner_stencil,closure_stencils,even) |
24 @test op == volume_operator(g_1D,inner_stencil,closure_stencils,even,1) | 24 @test op == volume_operator(g_1D,inner_stencil,closure_stencils,even,1) |
25 @test op isa TensorMapping{T,1,1} where T | 25 @test op isa LazyTensor{T,1,1} where T |
26 end | 26 end |
27 @testset "2D" begin | 27 @testset "2D" begin |
28 op_x = volume_operator(g_2D,inner_stencil,closure_stencils,even,1) | 28 op_x = volume_operator(g_2D,inner_stencil,closure_stencils,even,1) |
29 op_y = volume_operator(g_2D,inner_stencil,closure_stencils,even,2) | 29 op_y = volume_operator(g_2D,inner_stencil,closure_stencils,even,2) |
30 Ix = IdentityMapping{Float64}((11,)) | 30 Ix = IdentityTensor{Float64}((11,)) |
31 Iy = IdentityMapping{Float64}((12,)) | 31 Iy = IdentityTensor{Float64}((12,)) |
32 @test op_x == VolumeOperator(inner_stencil,closure_stencils,(11,),even)⊗Iy | 32 @test op_x == VolumeOperator(inner_stencil,closure_stencils,(11,),even)⊗Iy |
33 @test op_y == Ix⊗VolumeOperator(inner_stencil,closure_stencils,(12,),even) | 33 @test op_y == Ix⊗VolumeOperator(inner_stencil,closure_stencils,(12,),even) |
34 @test op_x isa TensorMapping{T,2,2} where T | 34 @test op_x isa LazyTensor{T,2,2} where T |
35 @test op_y isa TensorMapping{T,2,2} where T | 35 @test op_y isa LazyTensor{T,2,2} where T |
36 end | 36 end |
37 @testset "3D" begin | 37 @testset "3D" begin |
38 op_x = volume_operator(g_3D,inner_stencil,closure_stencils,even,1) | 38 op_x = volume_operator(g_3D,inner_stencil,closure_stencils,even,1) |
39 op_y = volume_operator(g_3D,inner_stencil,closure_stencils,even,2) | 39 op_y = volume_operator(g_3D,inner_stencil,closure_stencils,even,2) |
40 op_z = volume_operator(g_3D,inner_stencil,closure_stencils,even,3) | 40 op_z = volume_operator(g_3D,inner_stencil,closure_stencils,even,3) |
41 Ix = IdentityMapping{Float64}((11,)) | 41 Ix = IdentityTensor{Float64}((11,)) |
42 Iy = IdentityMapping{Float64}((12,)) | 42 Iy = IdentityTensor{Float64}((12,)) |
43 Iz = IdentityMapping{Float64}((10,)) | 43 Iz = IdentityTensor{Float64}((10,)) |
44 @test op_x == VolumeOperator(inner_stencil,closure_stencils,(11,),even)⊗Iy⊗Iz | 44 @test op_x == VolumeOperator(inner_stencil,closure_stencils,(11,),even)⊗Iy⊗Iz |
45 @test op_y == Ix⊗VolumeOperator(inner_stencil,closure_stencils,(12,),even)⊗Iz | 45 @test op_y == Ix⊗VolumeOperator(inner_stencil,closure_stencils,(12,),even)⊗Iz |
46 @test op_z == Ix⊗Iy⊗VolumeOperator(inner_stencil,closure_stencils,(10,),even) | 46 @test op_z == Ix⊗Iy⊗VolumeOperator(inner_stencil,closure_stencils,(10,),even) |
47 @test op_x isa TensorMapping{T,3,3} where T | 47 @test op_x isa LazyTensor{T,3,3} where T |
48 @test op_y isa TensorMapping{T,3,3} where T | 48 @test op_y isa LazyTensor{T,3,3} where T |
49 @test op_z isa TensorMapping{T,3,3} where T | 49 @test op_z isa LazyTensor{T,3,3} where T |
50 end | 50 end |
51 end | 51 end |
52 | 52 |
53 @testset "Sizes" begin | 53 @testset "Sizes" begin |
54 @testset "1D" begin | 54 @testset "1D" begin |
87 ry[:,Ny-1:Ny] = -v[:,Ny-1:Ny] | 87 ry[:,Ny-1:Ny] = -v[:,Ny-1:Ny] |
88 | 88 |
89 @testset "Application" begin | 89 @testset "Application" begin |
90 @test op_x*v ≈ rx rtol = 1e-14 | 90 @test op_x*v ≈ rx rtol = 1e-14 |
91 @test op_y*v ≈ ry rtol = 1e-14 | 91 @test op_y*v ≈ ry rtol = 1e-14 |
92 | |
93 @test (op_x*rand(ComplexF64,size(g_2D)))[2,2] isa ComplexF64 | |
92 end | 94 end |
93 | 95 |
94 @testset "Regions" begin | 96 @testset "Regions" begin |
95 @test (op_x*v)[Index(1,Lower),Index(3,Interior)] ≈ rx[1,3] rtol = 1e-14 | 97 @test (op_x*v)[Index(1,Lower),Index(3,Interior)] ≈ rx[1,3] rtol = 1e-14 |
96 @test (op_x*v)[Index(2,Lower),Index(3,Interior)] ≈ rx[2,3] rtol = 1e-14 | 98 @test (op_x*v)[Index(2,Lower),Index(3,Interior)] ≈ rx[2,3] rtol = 1e-14 |