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

Namespaces

 color
 
 internal
 
 partition
 
 VectorDataExchange
 

Classes

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
 

Enumerations

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
}
 

Functions

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).

Enumerator
unconstrained 
subcell_x 
subcell_y 
subcell_z 
face_x 
face_y 
face_z 
edge_x 
edge_y 
edge_z 

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 
)
inline

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 )
inline

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 
)
inline

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 
)
inline

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 
)
inline

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 
)
inline

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 
)
inline

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 
)
inline

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)
inline

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