@@ -49,8 +49,8 @@ using ReadVTK, WriteVTK
4949 Ubc (i,x,t) = i== 1 ? 1.0 : 0.5
5050 v = rand (Ng... , D) |> f # vector
5151 BC! (v,Ubc,false ); BC! (u,U,false ) # make sure we apply the same
52- @test all (v[1 , :, 1 ] .≈ u[1 , :, 1 ]) && all (v[2 , :, 1 ] .≈ u[2 , :, 1 ]) && all (v[end , :, 1 ] .≈ u[end , :, 1 ])
53- @test all (v[:, 1 , 2 ] .≈ u[:, 1 , 2 ]) && all (v[:, 2 , 2 ] .≈ u[:, 2 , 2 ]) && all (v[:, end , 2 ] .≈ u[:, end , 2 ])
52+ @test GPUArrays . @allowscalar all (v[1 , :, 1 ] .== u[1 , :, 1 ]) && all (v[2 , :, 1 ] .== u[2 , :, 1 ]) && all (v[end , :, 1 ] .== u[end , :, 1 ])
53+ @test GPUArrays . @allowscalar all (v[:, 1 , 2 ] .== u[:, 1 , 2 ]) && all (v[:, 2 , 2 ] .== u[:, 2 , 2 ]) && all (v[:, end , 2 ] .== u[:, end , 2 ])
5454 # test exit bc
5555 GPUArrays. @allowscalar v[end ,:,1 ] .= 3
5656 BC! (v,Ubc,true ) # save exit values
@@ -65,6 +65,20 @@ using ReadVTK, WriteVTK
6565 BC! (u,U,true ,(1 ,)) # saveexit has no effect here as x-periodic
6666 @test GPUArrays. @allowscalar all (u[1 : 2 , :, 1 ] .== u[end - 1 : end , :, 1 ]) && all (u[1 : 2 , :, 2 ] .== u[end - 1 : end , :, 2 ]) &&
6767 all (u[:, 1 , 2 ] .== U[2 ]) && all (u[:, 2 , 2 ] .== U[2 ]) && all (u[:, end , 2 ] .== U[2 ])
68+ # test non-uniform BCs
69+ Ubc_1 (i,x,t) = i== 1 ? x[2 ] : x[1 ]
70+ v .= 0 ; BC! (v,Ubc_1)
71+ # the tangential BC change the value of the ghost cells on the other axis, so we cannot check it
72+ @test GPUArrays. @allowscalar all (v[1 ,2 : end - 1 ,1 ] .≈ v[end ,2 : end - 1 ,1 ])
73+ @test GPUArrays. @allowscalar all (v[2 : end - 1 ,1 ,2 ] .≈ v[2 : end - 1 ,end ,2 ])
74+ # more complex
75+ Ng, D = (8 , 8 , 8 ), 3
76+ u = zeros (Ng... , D) |> f # vector
77+ Ubc_2 (i,x,t) = i== 1 ? cos (2 π* x[1 ]/ 8 ) : i== 2 ? sin (2 π* x[2 ]/ 8 ) : tan (π* x[3 ]/ 16 )
78+ BC! (u,Ubc_2)
79+ @test GPUArrays. @allowscalar all (u[1 ,:,:,1 ] .≈ cos (- 1 π/ 4 )) && all (u[2 ,:,:,1 ] .≈ cos (0 )) && all (u[end ,:,:,1 ] .≈ cos (6 π/ 4 ))
80+ @test GPUArrays. @allowscalar all (u[:,1 ,:,2 ] .≈ sin (- 1 π/ 4 )) && all (u[:,2 ,:,2 ] .≈ sin (0 )) && all (u[:,end ,:,2 ] .≈ sin (6 π/ 4 ))
81+ @test GPUArrays. @allowscalar all (u[:,:,1 ,3 ] .≈ tan (- 1 π/ 16 )) && all (u[:,:,2 ,3 ] .≈ tan (0 )) && all (u[:,:,end ,3 ]. - tan (6 π/ 16 ).< 1e-6 )
6882
6983 # test interpolation
7084 a = zeros (5 ,5 ,2 ) |> f; b = zeros (5 ,5 ) |> f
334348 )
335349 end
336350end
337-
351+ @testset " Boundary Layer Flow" begin
352+ for f ∈ arrays
353+ make_bl_flow (L= 32 ;T= Float32) = Simulation ((L,L),
354+ (i,x,t)-> i== 1 ? convert (Float32,4.0 * (((x[2 ]+ 0.5 )/ 2 L)- ((x[2 ]+ 0.5 )/ 2 L)^ 2 )) : 0.f0 ,
355+ L;ν= 0.001 ,U= 1 ,mem= f,T,exitBC= false ) # fails with exitBC=true, but the profile is maintained
356+ sim = make_bl_flow (32 )
357+ sim_step! (sim,10 )
358+ @test GPUArrays. @allowscalar all (sim. flow. u[1 ,:,1 ] .≈ sim. flow. u[end ,:,1 ])
359+ end
360+ end
338361@testset " Circle in accelerating flow" begin
339362 for f ∈ arrays
340363 make_accel_circle (radius= 32 ,H= 16 ) = Simulation (radius.* (2 H,2 H),
0 commit comments