Reference documentation for deal.II version Git 73c87d96ef 2021-11-30 22:54:44 +0100
\(\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\}}\)
Namespaces | Classes | Enumerations | Functions
internal::MatrixFreeFunctions Namespace Reference




struct  ConstraintValues
struct  DGP_dofs_per_component
struct  DGP_dofs_per_component< 1, degree >
struct  DoFInfo
struct  FaceIdentifier
struct  FaceInfo
struct  FaceSetup
struct  FaceToCellTopology
struct  FPArrayComparator
class  HangingNodes
class  MappingDataOnTheFly
struct  MappingInfo
struct  MappingInfoCellsOrFaces
struct  MappingInfoCellsOrFaces< dim, Number, false, VectorizedArrayType >
struct  MappingInfoCellsOrFaces< dim, Number, true, VectorizedArrayType >
struct  MappingInfoStorage
class  MPICommunication
struct  ShapeInfo
struct  TaskInfo
struct  UnivariateShapeData


enum  ConstraintKinds : std::uint16_t {
  ConstraintKinds::unconstrained = 0, ConstraintKinds::subcell_x = 1 << 0, ConstraintKinds::subcell_y = 1 << 1, ConstraintKinds::subcell_z = 1 << 2,
  ConstraintKinds::face_x = 1 << 3, ConstraintKinds::face_y = 1 << 4, ConstraintKinds::face_z = 1 << 5, ConstraintKinds::edge_x = 1 << 6,
  ConstraintKinds::edge_y = 1 << 7, ConstraintKinds::edge_z = 1 << 8
enum  GeometryType : unsigned char { cartesian = 0, affine = 1, flat_faces = 2, general = 3 }
enum  ElementType {
  tensor_symmetric_collocation = 0, tensor_symmetric_hermite = 1, tensor_symmetric = 2, tensor_general = 3,
  truncated_tensor = 4, tensor_symmetric_plus_dg0 = 5, tensor_none = 6


template<int vectorization_width>
void collect_faces_vectorization (const std::vector< FaceToCellTopology< 1 >> &faces_in, const std::vector< bool > &hard_vectorization_boundary, std::vector< unsigned int > &face_partition_data, std::vector< FaceToCellTopology< vectorization_width >> &faces_out)
bool check (const ConstraintKinds &kind_in, const unsigned int dim)
std::size_t memory_consumption (const ConstraintKinds &)
ConstraintKinds operator| (const ConstraintKinds f1, const ConstraintKinds f2)
ConstraintKindsoperator|= (ConstraintKinds &f1, const ConstraintKinds f2)
bool operator!= (const ConstraintKinds f1, const ConstraintKinds f2)
bool operator< (const ConstraintKinds f1, const ConstraintKinds f2)
ConstraintKinds operator & (const ConstraintKinds f1, const ConstraintKinds f2)
template<int dim>
std::pair<::ReferenceCell, ::hp::QCollection< dim - 1 > > get_face_quadrature_collection (const Quadrature< dim > &quad, const bool do_assert=true)
template<int dim>
std::pair< Quadrature< dim - 1 >, Quadrature< dim - 1 > > get_unique_face_quadratures (const Quadrature< dim > &quad)
template void DoFInfo::print_memory_consumption< std::ostream > (std::ostream &, const TaskInfo &) const

Enumeration Type Documentation

◆ ConstraintKinds

Here is the system for how we store constraint types in a binary mask. This is not a complete contradiction-free system, i.e., there are invalid states. You can use internal::MatrixFreeFunctions::check() to check if the mask is in a valid state.

If the mask is zero, there are no constraints. Then, there are three different fields with one bit per dimension. The first field determines the subcell, or the position of an element along each direction. The second field determines if there is a constrained face with that direction as normal. The last field determines if there is a constrained edge in that direction (only valid in 3D).


Definition at line 49 of file hanging_nodes_internal.h.

Function Documentation

◆ collect_faces_vectorization()

template<int vectorization_width>
void internal::MatrixFreeFunctions::collect_faces_vectorization ( const std::vector< FaceToCellTopology< 1 >> &  faces_in,
const std::vector< bool > &  hard_vectorization_boundary,
std::vector< unsigned int > &  face_partition_data,
std::vector< FaceToCellTopology< vectorization_width >> &  faces_out 

Actually form the batches for vectorized execution of face integrals.

◆ check()

bool internal::MatrixFreeFunctions::check ( const ConstraintKinds kind_in,
const unsigned int  dim 

Check if the combinations of the bits in kind_in are valid.

Definition at line 76 of file hanging_nodes_internal.h.

◆ memory_consumption()

std::size_t internal::MatrixFreeFunctions::memory_consumption ( const ConstraintKinds )

Return the memory consumption in bytes of this enum class.

Definition at line 117 of file hanging_nodes_internal.h.

◆ operator|()

ConstraintKinds internal::MatrixFreeFunctions::operator| ( const ConstraintKinds  f1,
const ConstraintKinds  f2 

Global operator which returns an object in which all bits are set which are either set in the first or the second argument. This operator exists since if it did not then the result of the bit-or operator | would be an integer which would in turn trigger a compiler warning when we tried to assign it to an object of type UpdateFlags.

Definition at line 132 of file hanging_nodes_internal.h.

◆ operator|=()

ConstraintKinds& internal::MatrixFreeFunctions::operator|= ( ConstraintKinds f1,
const ConstraintKinds  f2 

Global operator which sets the bits from the second argument also in the first one.

Definition at line 145 of file hanging_nodes_internal.h.

◆ operator!=()

bool internal::MatrixFreeFunctions::operator!= ( const ConstraintKinds  f1,
const ConstraintKinds  f2 

Global operator which checks inequality.

Definition at line 157 of file hanging_nodes_internal.h.

◆ operator<()

bool internal::MatrixFreeFunctions::operator< ( const ConstraintKinds  f1,
const ConstraintKinds  f2 

Global operator which checks if the first argument is less than the second.

Definition at line 169 of file hanging_nodes_internal.h.

◆ operator &()

ConstraintKinds internal::MatrixFreeFunctions::operator& ( const ConstraintKinds  f1,
const ConstraintKinds  f2 

Global operator which performs a binary and for the provided arguments.

Definition at line 180 of file hanging_nodes_internal.h.

◆ get_face_quadrature_collection()

template<int dim>
std::pair<::ReferenceCell, ::hp::QCollection<dim - 1> > internal::MatrixFreeFunctions::get_face_quadrature_collection ( const Quadrature< dim > &  quad,
const bool  do_assert = true 

Given a quadrature rule quad defined on a cell, return the type of the cell and a collection of lower-dimensional quadrature rules that are defined on each face.

Definition at line 44 of file util.h.

◆ get_unique_face_quadratures()

template<int dim>
std::pair<Quadrature<dim - 1>, Quadrature<dim - 1> > internal::MatrixFreeFunctions::get_unique_face_quadratures ( const Quadrature< dim > &  quad)

Return face quadrature rules. In contrast to get_face_quadrature_collection(), it does not return the quadrature face for each face but returns one of each type. The first entry of the returned pair might contain a quadrature rule defined on lines and quadrilaterals, while the second entry might contain a quadrature rule defined on a triangle.

Definition at line 111 of file util.h.

◆ DoFInfo::print_memory_consumption< std::ostream >()

template void internal::MatrixFreeFunctions::DoFInfo::print_memory_consumption< std::ostream > ( std::ostream &  ,
const TaskInfo  
) const