Closed trevilo closed 1 year ago
This is an easy fix. I am holding off until changes on gpu_cleanup_integration_arrays
are finished and merged.
The difference between GetNBE()
and GetNFbyType(FaceType::Boundary)
is real, but it introduces no fundamental issue (beyond increased code complexity), because tr = mesh->GetBdrFaceTransformations(f);
returns NULL
for the periodic faces, so the following logic is sufficient:
The result is that for cases with periodic boundaries, some of the entries (i.e., those that correspond to the periodic face indices) in the boundary data struct are not used. This design is suboptimal but not incorrect, so I won't fix it for now.
In setting up data structures that support the boundary face integration for the gpu code path, we use
FiniteElementSpace::GetNBE()
. However, as the comments inmfem
indicate, this is not necessarily the true number of boundary faces. Specifically, comments withinclass Mesh
state:See similar comments in
class FiniteElementSpace
as well.To fix this, we need to swap
GetNBE()
forGetNFbyType(FaceType::Boundary)
.