deal.II version GIT relicensing-2206-gaa53ff9447 2024-12-02 09:10:00+00:00
\(\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\}}\)
Loading...
Searching...
No Matches
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 >:
Inheritance graph
[legend]

Public Member Functions

std::size_t memory_consumption () const
 

Public Attributes

std::array< unsigned int, vectorization_width > cells_interior
 
std::array< unsigned int, vectorization_width > cells_exterior
 
types::boundary_id exterior_face_no
 
unsigned char interior_face_no
 
unsigned char subface_index
 
unsigned char face_orientation
 
unsigned char face_type
 

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.

Definition at line 53 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 122 of file face_info.h.

Member Data Documentation

◆ cells_interior

template<int vectorization_width>
std::array<unsigned int, vectorization_width> internal::MatrixFreeFunctions::FaceToCellTopology< vectorization_width >::cells_interior

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::normal_vector().

Definition at line 60 of file face_info.h.

◆ cells_exterior

template<int vectorization_width>
std::array<unsigned int, vectorization_width> internal::MatrixFreeFunctions::FaceToCellTopology< vectorization_width >::cells_exterior

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::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 75 of file face_info.h.

◆ exterior_face_no

template<int vectorization_width>
types::boundary_id 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 83 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 89 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 96 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 values of face orientation, face flip and face rotation (for one of the interior or exterior side) for the present batch of faces in the first free bits. The forth bit is one if the internal cell has non-standard orientation.

Note
In contrast to other place in the library, the face-orientation bit (first bit) is flipped.

Definition at line 110 of file face_info.h.

◆ face_type

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

Reference-cell type of the given face: 0 for line or quadrilateral, 1 for triangle.

Definition at line 116 of file face_info.h.


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