Reference documentation for deal.II version 9.6.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\}}\)
Loading...
Searching...
No Matches
internal::MatrixFreeFunctions Namespace Reference

Namespaces

namespace  internal
 
namespace  VectorDataExchange
 

Classes

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

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_symmetric_no_collocation = 3 ,
  tensor_general = 4 , truncated_tensor = 5 , tensor_symmetric_plus_dg0 = 6 , tensor_raviart_thomas = 7 ,
  tensor_none = 8
}
 

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)
 
unsigned int indicate_power_of_two (const unsigned int vectorization_length)
 
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

typedef std::uint8_t internal::MatrixFreeFunctions::compressed_constraint_kind = std::uint8_t

Type of the 8-bit representation of the refinement configuration that is in hanging_nodes_internal.h.

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

Definition at line 86 of file dof_info.h.

Enumeration Type Documentation

◆ ConstraintKinds

enum class internal::MatrixFreeFunctions::ConstraintKinds : std::uint16_t
strong

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 50 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 92 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 134 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 160 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 187 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 202 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 215 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 227 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 238 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 250 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 45 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 121 of file util.h.

◆ indicate_power_of_two()

unsigned int internal::MatrixFreeFunctions::indicate_power_of_two ( const unsigned int vectorization_length)
inline

Definition at line 192 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

compressed_constraint_kind internal::MatrixFreeFunctions::unconstrained_compressed_constraint_kind = 0
constexpr

Value of compressed_constraint_kind for the unconstrained case.

Definition at line 84 of file hanging_nodes_internal.h.