Reference documentation for deal.II version 9.0.0
|
#include <deal.II/grid/tria_objects.h>
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_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 int & | user_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) |
Public Attributes | |
std::vector< bool > | face_orientations |
std::vector< bool > | face_flips |
std::vector< bool > | face_rotations |
Public Attributes inherited from internal::TriangulationImplementation::TriaObjects< TriaObject< 3 > > | |
std::vector< TriaObject< 3 > > | cells |
std::vector< int > | children |
std::vector< RefinementCase< TriaObject< 3 > ::dimension > > | refinement_cases |
std::vector< bool > | used |
std::vector< bool > | user_flags |
std::vector< BoundaryOrMaterialId > | boundary_or_material_id |
std::vector< types::manifold_id > | manifold_id |
Additional Inherited Members | |
Static Public Member Functions inherited from internal::TriangulationImplementation::TriaObjects< TriaObject< 3 > > | |
static ::ExceptionBase & | ExcMemoryInexact (int arg1, int arg2) |
static ::ExceptionBase & | ExcPointerIndexClash () |
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 |
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 403 of file tria_objects.h.
|
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 746 of file tria_objects.h.
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 168 of file tria_objects.cc.
void internal::TriangulationImplementation::TriaObjectsHex::clear | ( | ) |
Clear all the data contained in this object.
Definition at line 412 of file tria_objects.cc.
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 351 of file tria_objects.cc.
std::size_t internal::TriangulationImplementation::TriaObjectsHex::memory_consumption | ( | ) | const |
Determine an estimate for the memory consumption (in bytes) of this object.
Definition at line 445 of file tria_objects.cc.
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 723 of file tria_objects.h.
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 438 of file tria_objects.h.
std::vector<bool> internal::TriangulationImplementation::TriaObjectsHex::face_flips |
flip = rotation by 180 degrees
Definition at line 443 of file tria_objects.h.
std::vector<bool> internal::TriangulationImplementation::TriaObjectsHex::face_rotations |
rotation by 90 degrees
Definition at line 448 of file tria_objects.h.