Skip to content

Commit

Permalink
Select correct code path for neighbor elements
Browse files Browse the repository at this point in the history
  • Loading branch information
bergbauer committed Nov 18, 2021
1 parent 7dedee9 commit 047c2fb
Showing 1 changed file with 14 additions and 9 deletions.
23 changes: 14 additions & 9 deletions include/deal.II/matrix_free/fe_evaluation.h
Original file line number Diff line number Diff line change
Expand Up @@ -444,7 +444,9 @@ class FEEvaluationBaseData

/**
* Flag holding information whether a face is an interior or exterior face
* according to the defined direction of the normal. Not used for cells.
* according to the defined direction of the normal. For cells it defines if
* the dof values should be read from the actual cell corresponding to the
* interior face or the neighboring cell corresponding to the exterior face.
*/
bool is_interior_face;

Expand Down Expand Up @@ -3964,10 +3966,11 @@ FEEvaluationBaseData<dim, Number, is_face, VectorizedArrayType>::
for (unsigned int i = 0; i < v_len; ++i)
cells[i] = numbers::invalid_unsigned_int;

if (is_face &&
this->dof_access_index ==
internal::MatrixFreeFunctions::DoFInfo::dof_access_cell &&
this->is_interior_face == false)
if ((is_face &&
this->dof_access_index ==
internal::MatrixFreeFunctions::DoFInfo::dof_access_cell &&
this->is_interior_face == false) ||
(!is_face && !this->is_interior_face))
{
// cell-based face-loop: plus face
for (unsigned int i = 0; i < v_len; ++i)
Expand Down Expand Up @@ -4929,7 +4932,8 @@ FEEvaluationBase<dim, n_components_, Number, is_face, VectorizedArrayType>::
!(is_face &&
this->dof_access_index ==
internal::MatrixFreeFunctions::DoFInfo::dof_access_cell &&
this->is_interior_face == false))
this->is_interior_face == false) &&
!(!is_face && !this->is_interior_face))
{
const unsigned int dof_index =
dof_indices_cont[this->cell * VectorizedArrayType::size()] +
Expand Down Expand Up @@ -4963,9 +4967,10 @@ FEEvaluationBase<dim, n_components_, Number, is_face, VectorizedArrayType>::
this->dof_info->n_vectorization_lanes_filled[ind][this->cell];

const bool is_ecl =
this->dof_access_index ==
internal::MatrixFreeFunctions::DoFInfo::dof_access_cell &&
this->is_interior_face == false;
(this->dof_access_index ==
internal::MatrixFreeFunctions::DoFInfo::dof_access_cell &&
this->is_interior_face == false) ||
(!is_face && !this->is_interior_face);

if (vectors_sm[0] != nullptr)
{
Expand Down

0 comments on commit 047c2fb

Please sign in to comment.