Reference documentation for deal.II version GIT 6d02bd1105 2022-05-22 03:35:01+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\}}\)
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
internal::MatrixFreeFunctions Namespace Reference

Namespaces

 color
 
 internal
 
 partition
 
 VectorDataExchange
 

Classes

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

Typedefs

using compressed_constraint_kind = std::uint8_t
 

Enumerations

enum class  ConstraintKinds : std::uint16_t {
  unconstrained = 0 , subcell_x = 1 << 0 , subcell_y = 1 << 1 , subcell_z = 1 << 2 ,
  face_x = 1 << 3 , face_y = 1 << 4 , face_z = 1 << 5 , edge_x = 1 << 6 ,
  edge_y = 1 << 7 , 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_raviart_thomas = 6 , tensor_none = 7
}
 

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)
 
compressed_constraint_kind compress (const ConstraintKinds kind_in, const unsigned int dim)
 
ConstraintKinds decompress (const compressed_constraint_kind 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
 

Variables

constexpr compressed_constraint_kind unconstrained_compressed_constraint_kind = 0
 

Typedef Documentation

◆ compressed_constraint_kind

Type of the 9-bit representation of the refinement configuration.

Definition at line 75 of file hanging_nodes_internal.h.

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 91 of file hanging_nodes_internal.h.

◆ compress()

compressed_constraint_kind internal::MatrixFreeFunctions::compress ( const ConstraintKinds  kind_in,
const unsigned int  dim 
)
inline

Compress a 9-bit representation of the refinement configuration to a 8-bit representation.

Definition at line 133 of file hanging_nodes_internal.h.

◆ decompress()

ConstraintKinds internal::MatrixFreeFunctions::decompress ( const compressed_constraint_kind  kind_in,
const unsigned int  dim 
)
inline

Decompress a 8-bit representation of the refinement configuration to a 9-bit representation.

Definition at line 159 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 186 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 201 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 214 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 226 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 237 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 249 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

Variable Documentation

◆ unconstrained_compressed_constraint_kind

constexpr compressed_constraint_kind internal::MatrixFreeFunctions::unconstrained_compressed_constraint_kind = 0
constexpr

Value of compressed_constraint_kind for the unconstrained case.

Definition at line 83 of file hanging_nodes_internal.h.