Reference documentation for deal.II version 9.2.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\}}\)
Public Member Functions | Public Attributes | List of all members
internal::TriangulationImplementation::TriaObjectsHex Class Reference

#include <deal.II/grid/tria_objects.h>

Inheritance diagram for internal::TriangulationImplementation::TriaObjectsHex:
[legend]

Public Member Functions

bool face_orientation (const unsigned int cell, const unsigned int face) const
 
void reserve_space (const unsigned int new_objs)
 
void clear ()
 
void monitor_memory (const unsigned int true_dimension) const
 
std::size_t memory_consumption () const
 
template<class Archive >
void serialize (Archive &ar, const unsigned int version)
 
- Public Member Functions inherited from internal::TriangulationImplementation::TriaObjects< TriaObject< 3 > >
 TriaObjects ()
 
void reserve_space (const unsigned int new_objs_in_pairs, const unsigned int new_objs_single=0)
 
::TriaRawIterator<::TriaAccessor< TriaObject< 3 > ::dimension, dim, spacedim > > next_free_single_object (const Triangulation< dim, spacedim > &tria)
 
::TriaRawIterator<::TriaAccessor< TriaObject< 3 > ::dimension, dim, spacedim > > next_free_single_object (const Triangulation< dim, spacedim > &tria)
 
::TriaRawIterator<::TriaAccessor< TriaObject< 3 > ::dimension, dim, spacedim > > next_free_pair_object (const Triangulation< dim, spacedim > &tria)
 
::TriaRawIterator<::TriaAccessor< TriaObject< 3 > ::dimension, dim, spacedim > > next_free_pair_object (const Triangulation< dim, spacedim > &tria)
 
Triangulation< dim, spacedim >::raw_hex_iterator next_free_hex (const Triangulation< dim, spacedim > &tria, const unsigned int level)
 
typename::Triangulation< dim, spacedim >::raw_hex_iterator next_free_hex (const ::Triangulation< dim, spacedim > &tria, const unsigned int level)
 
void clear ()
 
bool face_orientation (const unsigned int cell, const unsigned int face) const
 
void *& user_pointer (const unsigned int i)
 
const void * user_pointer (const unsigned int i) const
 
unsigned intuser_index (const unsigned int i)
 
unsigned int user_index (const unsigned int i) const
 
void clear_user_data (const unsigned int i)
 
void clear_user_data ()
 
void clear_user_flags ()
 
void monitor_memory (const unsigned int true_dimension) const
 
void monitor_memory (const unsigned int) const
 
void monitor_memory (const unsigned int) const
 
void monitor_memory (const unsigned int) const
 
std::size_t memory_consumption () const
 
void serialize (Archive &ar, const unsigned int version)
 

Public Attributes

std::vector< boolface_orientations
 
std::vector< boolface_flips
 
std::vector< boolface_rotations
 
- Public Attributes inherited from internal::TriangulationImplementation::TriaObjects< TriaObject< 3 > >
std::vector< TriaObject< 3 > > cells
 
std::vector< intchildren
 
std::vector< RefinementCase< TriaObject< 3 > ::dimension > > refinement_cases
 
std::vector< boolused
 
std::vector< booluser_flags
 
std::vector< BoundaryOrMaterialId > boundary_or_material_id
 
std::vector< types::manifold_idmanifold_id
 

Additional Inherited Members

- Static Public Member Functions inherited from internal::TriangulationImplementation::TriaObjects< TriaObject< 3 > >
static ::ExceptionBaseExcMemoryInexact (int arg1, int arg2)
 
static ::ExceptionBaseExcPointerIndexClash ()
 
- Protected Types inherited from internal::TriangulationImplementation::TriaObjects< TriaObject< 3 > >
enum  UserDataType
 
- Protected Attributes inherited from internal::TriangulationImplementation::TriaObjects< TriaObject< 3 > >
unsigned int next_free_single
 
unsigned int next_free_pair
 
bool reverse_order_next_free_single
 
std::vector< UserData > user_data
 
UserDataType user_data_type
 

Detailed Description

For hexahedra the data of TriaObjects needs to be extended, as we can obtain faces (quads) in non-standard-orientation, therefore we declare a class TriaObjectsHex, which additionally contains a bool-vector of the face-orientations.

Definition at line 424 of file tria_objects.h.

Member Function Documentation

◆ face_orientation()

bool internal::TriangulationImplementation::TriaObjectsHex::face_orientation ( const unsigned int  cell,
const unsigned int  face 
) const
inline

The orientation of the face number face of the cell with number cell. The return value is true, if the normal vector points the usual way (GeometryInfo::unit_normal_orientation) and false if they point in opposite direction.

Definition at line 768 of file tria_objects.h.

◆ reserve_space()

void internal::TriangulationImplementation::TriaObjectsHex::reserve_space ( const unsigned int  new_objs)

Assert that enough space is allocated to accommodate new_objs new objects. This function does not only call vector::reserve(), but does really append the needed elements.

Definition at line 170 of file tria_objects.cc.

◆ clear()

void internal::TriangulationImplementation::TriaObjectsHex::clear ( )

Clear all the data contained in this object.

Definition at line 405 of file tria_objects.cc.

◆ monitor_memory()

void internal::TriangulationImplementation::TriaObjectsHex::monitor_memory ( const unsigned int  true_dimension) const

Check the memory consistency of the different containers. Should only be called with the preprocessor flag DEBUG set. The function should be called from the functions of the higher TriaLevel classes.

Definition at line 345 of file tria_objects.cc.

◆ memory_consumption()

std::size_t internal::TriangulationImplementation::TriaObjectsHex::memory_consumption ( ) const

Determine an estimate for the memory consumption (in bytes) of this object.

Definition at line 438 of file tria_objects.cc.

◆ serialize()

template<class Archive >
void internal::TriangulationImplementation::TriaObjectsHex::serialize ( Archive &  ar,
const unsigned int  version 
)

Read or write the data of this object to or from a stream for the purpose of serialization

Definition at line 747 of file tria_objects.h.

Member Data Documentation

◆ face_orientations

std::vector<bool> internal::TriangulationImplementation::TriaObjectsHex::face_orientations

For edges, we enforce a standard convention that opposite edges should be parallel. Now, that's enforceable in most cases, and we have code that makes sure that if a mesh allows this to happen, that we have this convention. We also know that it is always possible to have opposite faces have parallel normal vectors. (For both things, see the paper by Agelek, Anderson, Bangerth, Barth in the ACM Transactions on Mathematical Software mentioned in the documentation of the GridReordering class.)

The problem is that we originally had another condition, namely that faces 0, 2 and 6 have normals that point into the cell, while the other faces have normals that point outward. It turns out that this is not always possible. In effect, we have to store whether the normal vector of each face of each cell follows this convention or not. If this is so, then this variable stores a true value, otherwise a false value.

In effect, this field has 6*n_cells elements, being the number of cells times the six faces each has.

Definition at line 460 of file tria_objects.h.

◆ face_flips

std::vector<bool> internal::TriangulationImplementation::TriaObjectsHex::face_flips

flip = rotation by 180 degrees

Definition at line 465 of file tria_objects.h.

◆ face_rotations

std::vector<bool> internal::TriangulationImplementation::TriaObjectsHex::face_rotations

rotation by 90 degrees

Definition at line 470 of file tria_objects.h.


The documentation for this class was generated from the following files: