@@ -24,32 +24,31 @@ struct VolumeAverage <: AbstractFilter end
2424 Φ (vectorfield (setup_les), u, setup_les, compression)
2525
2626function (:: FaceAverage )(v, u, setup_les, comp)
27- (; grid, workgroupsize) = setup_les
27+ (; grid, backend, workgroupsize) = setup_les
2828 (; Nu, Iu) = grid
2929 D = length (u)
3030 @kernel function Φ! (v, u, :: Val{α} , face, I0) where {α}
3131 I = @index (Global, Cartesian)
3232 J = I0 + comp * (I - oneunit (I))
33- s = zero (eltype (v[α] ))
33+ s = zero (eltype (v))
3434 for i in face
35- s += u[α][ J+ i]
35+ s += u[J+ i, α ]
3636 end
37- v[α][ I0+ I] = s / comp^ (D - 1 )
37+ v[I0+ I, α ] = s / comp^ (D - 1 )
3838 end
3939 for α = 1 : D
4040 ndrange = Nu[α]
41- I0 = first (Iu[α])
42- I0 -= oneunit (I0)
41+ I0 = getoffset (Iu[α])
4342 face = CartesianIndices (ntuple (β -> β == α ? (comp: comp) : (1 : comp), D))
44- Φ! (get_backend (v[ 1 ]) , workgroupsize)(v, u, Val (α), face, I0; ndrange)
43+ Φ! (backend , workgroupsize)(v, u, Val (α), face, I0; ndrange)
4544 end
4645 v
4746end
4847
4948" Reconstruct DNS velocity `u` from LES velocity `v`."
5049function reconstruct! (u, v, setup_dns, setup_les, comp)
51- (; grid, boundary_conditions, workgroupsize) = setup_les
52- (; N, Iu ) = grid
50+ (; grid, boundary_conditions, backend, workgroupsize) = setup_les
51+ (; N) = grid
5352 D = length (u)
5453 e = Offset (D)
5554 @assert all (bc -> bc[1 ] isa PeriodicBC && bc[2 ] isa PeriodicBC, boundary_conditions)
@@ -61,15 +60,15 @@ function reconstruct!(u, v, setup_dns, setup_les, comp)
6160 Jleft. I[α] == 1 && (Jleft += (N[α] - 2 ) * e (α))
6261 for i in volume
6362 s = zero (eltype (v[α]))
64- s += (comp - i. I[α]) * v[α][J ]
65- s += i. I[α] * v[α][ Jleft]
66- u[α][ I- i] = s / comp
63+ s += (comp - i. I[α]) * v[J, α ]
64+ s += i. I[α] * v[Jleft, α ]
65+ u[I- i, α ] = s / comp
6766 end
6867 end
6968 for α = 1 : D
7069 ndrange = N .- 2
7170 volume = CartesianIndices (ntuple (β -> 0 : comp- 1 , D))
72- R! (get_backend (v[ 1 ]) , workgroupsize)(u, v, Val (α), volume; ndrange)
71+ R! (backend , workgroupsize)(u, v, Val (α), volume; ndrange)
7372 end
7473 u
7574end
@@ -79,7 +78,7 @@ reconstruct(v, setup_dns, setup_les, comp) =
7978 reconstruct! (vectorfield (setup_dns), v, setup_dns, setup_les, comp)
8079
8180function (:: VolumeAverage )(v, u, setup_les, comp)
82- (; grid, boundary_conditions, workgroupsize) = setup_les
81+ (; grid, boundary_conditions, backend, workgroupsize) = setup_les
8382 (; N, Nu, Iu) = grid
8483 D = length (u)
8584 @assert all (bc -> bc[1 ] isa PeriodicBC && bc[2 ] isa PeriodicBC, boundary_conditions)
@@ -93,16 +92,15 @@ function (::VolumeAverage)(v, u, setup_les, comp)
9392 K = J + i
9493 K = mod1 .(K. I, comp .* (N .- 2 ))
9594 K = CartesianIndex (K)
96- s += u[α][K ]
95+ s += u[K, α ]
9796 # n += 1
9897 end
9998 n = (iseven (comp) ? comp + 1 : comp) * comp^ (D - 1 )
100- v[α][ I0+ I] = s / n
99+ v[I0+ I, α ] = s / n
101100 end
102101 for α = 1 : D
103102 ndrange = Nu[α]
104- I0 = first (Iu[α])
105- I0 -= oneunit (I0)
103+ I0 = getoffset (Iu[α])
106104 volume = CartesianIndices (
107105 ntuple (
108106 β ->
@@ -112,7 +110,7 @@ function (::VolumeAverage)(v, u, setup_les, comp)
112110 D,
113111 ),
114112 )
115- Φ! (get_backend (v[ 1 ]) , workgroupsize)(v, u, Val (α), volume, I0; ndrange)
113+ Φ! (backend , workgroupsize)(v, u, Val (α), volume, I0; ndrange)
116114 end
117115 v
118116end
0 commit comments