Reference documentation for deal.II version 9.2.0
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Public Member Functions | Public Attributes | List of all members
internal::MatrixFreeFunctions::FaceToCellTopology< vectorization_width > Struct Template Reference

#include <deal.II/matrix_free/face_info.h>

Inheritance diagram for internal::MatrixFreeFunctions::FaceToCellTopology< vectorization_width >:
[legend]

Public Member Functions

std::size_t memory_consumption () const
 

Public Attributes

unsigned int cells_interior [vectorization_width]
 
unsigned int cells_exterior [vectorization_width]
 
unsigned char interior_face_no
 
unsigned char exterior_face_no
 
unsigned char subface_index
 
unsigned char face_orientation
 

Detailed Description

template<int vectorization_width>
struct internal::MatrixFreeFunctions::FaceToCellTopology< vectorization_width >

Data type for information about the batches build for vectorization of the face integrals. The setup of the batches for the faces is independent of the cells, and thus, we must store the relation to the cell indexing for accessing the degrees of freedom.

Interior faces are stored by the two adjacent cells, which we label as "interior" and "exterior" side of the face. Normal vectors stored in MappingInfo are only stored once and are the outer normals to the cells on the "interior" side, whereas the sign is the opposite for the "exterior" side.

This data field is stored as a vector for all faces involved in the computation. In order to avoid gaps in the memory representation, the four 'char' variables are put next to each other which occupies the same size as the unsigned integers on most architectures.

Author
Katharina Kormann, Martin Kronbichler, 2018

Definition at line 56 of file face_info.h.

Member Function Documentation

◆ memory_consumption()

template<int vectorization_width>
std::size_t internal::MatrixFreeFunctions::FaceToCellTopology< vectorization_width >::memory_consumption ( ) const
inline

Return the memory consumption of the present data structure.

Definition at line 114 of file face_info.h.

Member Data Documentation

◆ cells_interior

template<int vectorization_width>
unsigned int internal::MatrixFreeFunctions::FaceToCellTopology< vectorization_width >::cells_interior[vectorization_width]

Indices of the faces in the current face batch as compared to the numbers of the cells on the logical "interior" side of the face which is aligned to the direction of FEEvaluation::get_normal_vector().

Definition at line 63 of file face_info.h.

◆ cells_exterior

template<int vectorization_width>
unsigned int internal::MatrixFreeFunctions::FaceToCellTopology< vectorization_width >::cells_exterior[vectorization_width]

Indices of the faces in the current face batch as compared to the numbers of the cells on the logical "exterior" side of the face which is aligned to the opposite direction of FEEvaluation::get_normal_vector(). Note that the distinction into interior and exterior faces is purely logical and refers to the direction of the normal only. In the actual discretization of a problem, the discretization typically needs to make sure that interior and exterior sides are treated properly, such as with upwind fluxes.

For boundary faces, the numbers are set to numbers::invalid_unsigned_int.

Definition at line 78 of file face_info.h.

◆ interior_face_no

template<int vectorization_width>
unsigned char internal::MatrixFreeFunctions::FaceToCellTopology< vectorization_width >::interior_face_no

Index of the face between 0 and GeometryInfo::faces_per_cell within the cells on the "interior" side of the faces.

Definition at line 84 of file face_info.h.

◆ exterior_face_no

template<int vectorization_width>
unsigned char internal::MatrixFreeFunctions::FaceToCellTopology< vectorization_width >::exterior_face_no

Index of the face between 0 and GeometryInfo::faces_per_cell within the cells on the "exterior" side of the faces.

For a boundary face, this data field stores the boundary id.

Definition at line 92 of file face_info.h.

◆ subface_index

template<int vectorization_width>
unsigned char internal::MatrixFreeFunctions::FaceToCellTopology< vectorization_width >::subface_index

For adaptively refined meshes, the cell on the exterior side of the face might be less refined than the interior side. This index indicates the possible subface index on the exterior side.

Definition at line 99 of file face_info.h.

◆ face_orientation

template<int vectorization_width>
unsigned char internal::MatrixFreeFunctions::FaceToCellTopology< vectorization_width >::face_orientation

In 3D, one of the two cells adjacent to a face might use a different orientation (also called as face orientation, face flip and face rotation) than the standard orientation. This variable stores the value (for one of the interior or exterior side) for the present batch of faces.

Definition at line 108 of file face_info.h.


The documentation for this struct was generated from the following file: