Reference documentation for deal.II version 9.5.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
Classes | Functions
internal::TriangulationImplementation Namespace Reference

Classes

struct  CellTypeBase
 
struct  CellTypeHexahedron
 
struct  CellTypeLine
 
struct  CellTypePyramid
 
struct  CellTypeQuadrilateral
 
struct  CellTypeTetrahedron
 
struct  CellTypeTriangle
 
struct  CellTypeWedge
 
struct  Connectivity
 
struct  CRS
 
struct  Implementation
 
struct  ImplementationMixedMesh
 
struct  Iterators
 
struct  Iterators< 1, spacedim >
 
struct  Iterators< 2, spacedim >
 
struct  Iterators< 3, spacedim >
 
struct  NumberCache
 
struct  NumberCache< 1 >
 
struct  NumberCache< 2 >
 
struct  NumberCache< 3 >
 
class  Policy
 
class  PolicyWrapper
 
class  TriaFaces
 
class  TriaLevel
 
class  TriaObjects
 
class  TriaObjectsOrientations
 

Functions

template<typename T >
void determine_neighbors (const CRS< T > &con_cf, CRS< T > &con_cc)
 
template<int max_n_vertices, typename FU >
void build_face_entities_templated (const unsigned int face_dimensionality, const std::vector< std::shared_ptr< CellTypeBase > > &cell_types, const std::vector< ReferenceCell > &cell_types_index, const CRS< unsigned int > &crs, CRS< unsigned int > &crs_d, CRS< unsigned int > &crs_0, TriaObjectsOrientations &orientations, const FU &second_key_function)
 
template<typename FU >
void build_face_entities (const unsigned int face_dimensionality, const std::vector< std::shared_ptr< CellTypeBase > > &cell_types, const std::vector< ReferenceCell > &cell_types_index, const CRS< unsigned int > &crs, CRS< unsigned int > &crs_d, CRS< unsigned int > &crs_0, TriaObjectsOrientations &orientations, const FU &second_key_function)
 
void build_intersection (const std::vector< std::shared_ptr< CellTypeBase > > &cell_types, const std::vector< ReferenceCell > &cell_types_index, const CRS< unsigned int > &con_cv, const CRS< unsigned int > &con_cl, const CRS< unsigned int > &con_lv, const CRS< unsigned int > &con_cq, const CRS< unsigned int > &con_qv, const TriaObjectsOrientations &ori_cq, CRS< unsigned int > &con_ql, TriaObjectsOrientations &ori_ql, std::vector< ReferenceCell > &quad_t_id)
 
template<typename T >
Connectivity< T > build_connectivity (const unsigned int dim, const std::vector< std::shared_ptr< CellTypeBase > > &cell_t, const std::vector< ReferenceCell > &cell_t_id, const CRS< T > &con_cv)
 
template<typename T , int dim>
Connectivity< T > build_connectivity (const std::vector< CellData< dim > > &cells)
 
static ::ExceptionBaseExcInternalErrorOnCell (int arg1)
 
static ::ExceptionBaseExcCellHasNegativeMeasure (int arg1)
 
static ::ExceptionBaseExcInvalidVertexIndex (int arg1, int arg2, int arg3)
 
static ::ExceptionBaseExcLineInexistant (int arg1, int arg2)
 
static ::ExceptionBaseExcQuadInexistant (int arg1, int arg2, int arg3, int arg4)
 
static ::ExceptionBaseExcInteriorLineCantBeBoundary (int arg1, int arg2, types::boundary_id arg3)
 
static ::ExceptionBaseExcInteriorQuadCantBeBoundary (int arg1, int arg2, int arg3, int arg4, types::boundary_id arg5)
 
static ::ExceptionBaseExcMultiplySetLineInfoOfLine (int arg1, int arg2)
 
static ::ExceptionBaseExcInconsistentLineInfoOfLine (int arg1, int arg2, std::string arg3)
 
static ::ExceptionBaseExcInconsistentQuadInfoOfQuad (int arg1, int arg2, int arg3, int arg4, std::string arg5)
 
void reserve_space (TriaFaces &tria_faces, const unsigned int new_quads_in_pairs, const unsigned int new_quads_single)
 
void reserve_space (TriaLevel &tria_level, const unsigned int total_cells, const unsigned int dimension, const unsigned int space_dimension)
 
static ::ExceptionBaseExcMemoryInexact (int arg1, int arg2)
 
void monitor_memory (const TriaLevel &tria_level, const unsigned int true_dimension)
 
void reserve_space (TriaObjects &tria_objects, const unsigned int new_objects_in_pairs, const unsigned int new_objects_single=0)
 
void monitor_memory (const TriaObjects &tria_object, const unsigned int)
 
template<int dim, int spacedim>
const Manifold< dim, spacedim > & get_default_flat_manifold ()
 
unsigned int n_cells (const internal::TriangulationImplementation::NumberCache< 1 > &c)
 
unsigned int n_active_cells (const internal::TriangulationImplementation::NumberCache< 1 > &c)
 
unsigned int n_cells (const internal::TriangulationImplementation::NumberCache< 2 > &c)
 
unsigned int n_active_cells (const internal::TriangulationImplementation::NumberCache< 2 > &c)
 
unsigned int n_cells (const internal::TriangulationImplementation::NumberCache< 3 > &c)
 
unsigned int n_active_cells (const internal::TriangulationImplementation::NumberCache< 3 > &c)
 

Detailed Description

A namespace for classes internal to the triangulation classes and helpers.

Function Documentation

◆ determine_neighbors()

template<typename T >
void internal::TriangulationImplementation::determine_neighbors ( const CRS< T > &  con_cf,
CRS< T > &  con_cc 
)

Determine the neighbors of all cells.

con_cf connectivity cell-face con_cc connectivity cell-cell (for each cell-face it contains the index of the neighboring cell or -1 for boundary face)

Definition at line 947 of file connectivity.h.

◆ build_face_entities_templated()

template<int max_n_vertices, typename FU >
void internal::TriangulationImplementation::build_face_entities_templated ( const unsigned int  face_dimensionality,
const std::vector< std::shared_ptr< CellTypeBase > > &  cell_types,
const std::vector< ReferenceCell > &  cell_types_index,
const CRS< unsigned int > &  crs,
CRS< unsigned int > &  crs_d,
CRS< unsigned int > &  crs_0,
TriaObjectsOrientations orientations,
const FU &  second_key_function 
)

Build entities of dimension d (with 0<d<dim). Entities are described by a set of vertices.

Furthermore, the function determines for each cell of which d-dimensional entity it consists of and its orientation relative to the cell.

Definition at line 1000 of file connectivity.h.

◆ build_face_entities()

template<typename FU >
void internal::TriangulationImplementation::build_face_entities ( const unsigned int  face_dimensionality,
const std::vector< std::shared_ptr< CellTypeBase > > &  cell_types,
const std::vector< ReferenceCell > &  cell_types_index,
const CRS< unsigned int > &  crs,
CRS< unsigned int > &  crs_d,
CRS< unsigned int > &  crs_0,
TriaObjectsOrientations orientations,
const FU &  second_key_function 
)

Call the right templated function to be able to use std::array instead of std::vector.

Definition at line 1191 of file connectivity.h.

◆ build_intersection()

void internal::TriangulationImplementation::build_intersection ( const std::vector< std::shared_ptr< CellTypeBase > > &  cell_types,
const std::vector< ReferenceCell > &  cell_types_index,
const CRS< unsigned int > &  con_cv,
const CRS< unsigned int > &  con_cl,
const CRS< unsigned int > &  con_lv,
const CRS< unsigned int > &  con_cq,
const CRS< unsigned int > &  con_qv,
const TriaObjectsOrientations ori_cq,
CRS< unsigned int > &  con_ql,
TriaObjectsOrientations ori_ql,
std::vector< ReferenceCell > &  quad_t_id 
)
inline

Build surface lines described by:

  • connectivity quad -> line
  • orientation of line relative to the quad

Furthermore, the type of the quad is determined.

Definition at line 1256 of file connectivity.h.

◆ build_connectivity() [1/2]

template<typename T >
Connectivity< T > internal::TriangulationImplementation::build_connectivity ( const unsigned int  dim,
const std::vector< std::shared_ptr< CellTypeBase > > &  cell_t,
const std::vector< ReferenceCell > &  cell_t_id,
const CRS< T > &  con_cv 
)

Build the reduced connectivity table for the given dimension dim.

This function is inspired by the publication Anders Logg "Efficient Representation of Computational Meshes" and the FEniCS's DOLFIN mesh implementation. It has been strongly adjusted to efficiently solely meet our connectivity needs while sacrificing some of the flexibility there.

Definition at line 1374 of file connectivity.h.

◆ build_connectivity() [2/2]

template<typename T , int dim>
Connectivity< T > internal::TriangulationImplementation::build_connectivity ( const std::vector< CellData< dim > > &  cells)

Preprocessing step to remove the template argument dim.

Definition at line 1461 of file connectivity.h.

◆ reserve_space() [1/3]

void internal::TriangulationImplementation::reserve_space ( TriaFaces tria_faces,
const unsigned int  new_quads_in_pairs,
const unsigned int  new_quads_single 
)

Definition at line 1069 of file tria.cc.

◆ reserve_space() [2/3]

void internal::TriangulationImplementation::reserve_space ( TriaLevel tria_level,
const unsigned int  total_cells,
const unsigned int  dimension,
const unsigned int  space_dimension 
)

Reserve space for TriaLevel. Details:

Reserve enough space to accommodate total_cells cells on this level. Since there are no used flags on this level, you have to give the total number of cells, not only the number of newly to accommodate ones, like in the TriaLevel<N>::reserve_space functions, with N>0.

Since the number of neighbors per cell depends on the dimensions, you have to pass that additionally.

Definition at line 1150 of file tria.cc.

◆ monitor_memory() [1/2]

void internal::TriangulationImplementation::monitor_memory ( const TriaLevel tria_level,
const unsigned int  true_dimension 
)

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 1261 of file tria.cc.

◆ reserve_space() [3/3]

void internal::TriangulationImplementation::reserve_space ( TriaObjects tria_objects,
const unsigned int  new_objects_in_pairs,
const unsigned int  new_objects_single = 0 
)

Reserve space for TriaObjects. Details:

Assert that enough space is allocated to accommodate new_objs_in_pairs new objects, stored in pairs, plus new_obj_single stored individually. This function does not only call vector::reserve(), but does really append the needed elements.

In 2d e.g. refined lines have to be stored in pairs, whereas new lines in the interior of refined cells can be stored as single lines.

Definition at line 1291 of file tria.cc.

◆ monitor_memory() [2/2]

void internal::TriangulationImplementation::monitor_memory ( const TriaObjects tria_object,
const unsigned int   
)

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 1480 of file tria.cc.

◆ get_default_flat_manifold()

template<int dim, int spacedim>
const Manifold< dim, spacedim > & internal::TriangulationImplementation::get_default_flat_manifold ( )

Definition at line 11095 of file tria.cc.

◆ n_cells() [1/3]

unsigned int internal::TriangulationImplementation::n_cells ( const internal::TriangulationImplementation::NumberCache< 1 > &  c)
inline

Definition at line 13826 of file tria.cc.

◆ n_active_cells() [1/3]

unsigned int internal::TriangulationImplementation::n_active_cells ( const internal::TriangulationImplementation::NumberCache< 1 > &  c)
inline

Definition at line 13833 of file tria.cc.

◆ n_cells() [2/3]

unsigned int internal::TriangulationImplementation::n_cells ( const internal::TriangulationImplementation::NumberCache< 2 > &  c)
inline

Definition at line 13841 of file tria.cc.

◆ n_active_cells() [2/3]

unsigned int internal::TriangulationImplementation::n_active_cells ( const internal::TriangulationImplementation::NumberCache< 2 > &  c)
inline

Definition at line 13848 of file tria.cc.

◆ n_cells() [3/3]

unsigned int internal::TriangulationImplementation::n_cells ( const internal::TriangulationImplementation::NumberCache< 3 > &  c)
inline

Definition at line 13856 of file tria.cc.

◆ n_active_cells() [3/3]

unsigned int internal::TriangulationImplementation::n_active_cells ( const internal::TriangulationImplementation::NumberCache< 3 > &  c)
inline

Definition at line 13863 of file tria.cc.