Reference documentation for deal.II version 8.1.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Member Functions | Public Attributes | List of all members
internal::Triangulation::TriaObjectsHex Class Reference

#include <tria_objects.h>

Inheritance diagram for internal::Triangulation::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::Triangulation::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_pair_object (const ::Triangulation< dim, spacedim > &tria)
 
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
 
std::size_t memory_consumption () const
 
void serialize (Archive &ar, const unsigned int version)
 
 DeclException3 (ExcMemoryWasted, char *, int, int,<< "The container "<< arg1<< " contains "<< arg2<< " elements, but it`s capacity is "<< arg3<< ".")
 
 DeclException2 (ExcMemoryInexact, int, int,<< "The containers have sizes "<< arg1<< " and "<< arg2<< ", which is not as expected.")
 
 DeclException2 (ExcWrongIterator, char *, char *,<< "You asked for the next free "<< arg1<< "_iterator, ""but you can only ask for "<< arg2<<"_iterators.")
 
 DeclException0 (ExcPointerIndexClash)
 

Public Attributes

std::vector< boolface_orientations
 
std::vector< boolface_flips
 
std::vector< boolface_rotations
 
- Public Attributes inherited from internal::Triangulation::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
 

Additional Inherited Members

- Protected Types inherited from internal::Triangulation::TriaObjects< TriaObject< 3 > >
enum  UserDataType
 
- Protected Attributes inherited from internal::Triangulation::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 518 of file tria_objects.h.

Member Function Documentation

bool internal::Triangulation::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 915 of file tria_objects.h.

void internal::Triangulation::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.

void internal::Triangulation::TriaObjectsHex::clear ( )

Clear all the data contained in this object.

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

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

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

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

template<class Archive >
void internal::Triangulation::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 892 of file tria_objects.h.

Member Data Documentation

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

For edges, we enforce a standard convention that opposite edges should be parallel. Now, that's enforcable 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 Agelek, Anderson, Bangerth, Barth paper mentioned in the publications list.)

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 582 of file tria_objects.h.

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

flip = rotation by 180 degrees

Definition at line 587 of file tria_objects.h.

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

rotation by 90 degrees

Definition at line 592 of file tria_objects.h.


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