Reference documentation for deal.II version Git cd8b20072f 2020-09-24 16:28:23 -0400
\(\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\}}\)
Classes | Functions
internal::TriangulationImplementation Namespace Reference

Classes

struct  CellTypeBase
 
struct  CellTypeHex
 
struct  CellTypeLine
 
struct  CellTypePyramid
 
struct  CellTypeQuad
 
struct  CellTypeTet
 
struct  CellTypeTri
 
struct  CellTypeWedge
 
struct  Connectivity
 
struct  CRS
 
struct  Implementation
 
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  TriaFaces
 
class  TriaLevel
 
class  TriaObjects
 

Functions

template<typename T >
void determine_neighbors (const CRS< T > &con_cf, CRS< T > &con_cc)
 
template<typename T , std::size_t N>
unsigned char compute_orientation (const ReferenceCell::Type entity_type, const std::array< T, N > &vertices_0, const std::array< T, N > &vertices_1)
 
template<int key_length, typename FU >
void build_entity_templated (const unsigned int d, const std::vector< std::shared_ptr< CellTypeBase >> &cell_types, const std::vector< ReferenceCell::Type > &cell_types_index, const CRS< unsigned int > &crs, CRS< unsigned int > &crs_d, CRS< unsigned int > &crs_0, std::vector< unsigned char > &orientations, const FU &second_key_function)
 
template<typename FU >
void build_entity (const unsigned int d, const std::vector< std::shared_ptr< CellTypeBase >> &cell_types, const std::vector< ReferenceCell::Type > &cell_types_index, const CRS< unsigned int > &crs, CRS< unsigned int > &crs_d, CRS< unsigned int > &crs_0, std::vector< unsigned char > &orientations, const FU &second_key_function)
 
void build_intersection (const std::vector< std::shared_ptr< CellTypeBase >> &cell_types, const std::vector< ReferenceCell::Type > &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 std::vector< unsigned char > &ori_cq, CRS< unsigned int > &con_ql, std::vector< unsigned char > &ori_ql, std::vector< ReferenceCell::Type > &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::Type > &cell_t_id, const CRS< T > &con_cv)
 
template<typename T , int dim>
Connectivity< T > build_connectivity (const std::vector< CellData< dim >> &cells)
 
static ::ExceptionBaseExcGridHasInvalidCell (int arg1)
 
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 the index of the neighboring cell or -1 for boundary face)

Definition at line 945 of file connectivity.h.

◆ compute_orientation()

template<typename T , std::size_t N>
unsigned char internal::TriangulationImplementation::compute_orientation ( const ReferenceCell::Type  entity_type,
const std::array< T, N > &  vertices_0,
const std::array< T, N > &  vertices_1 
)
inline

Determine the orientation of an entity of type described by its vertices var_1 relative to an entity described by var_0.

Definition at line 995 of file connectivity.h.

◆ build_entity_templated()

template<int key_length, typename FU >
void internal::TriangulationImplementation::build_entity_templated ( const unsigned int  d,
const std::vector< std::shared_ptr< CellTypeBase >> &  cell_types,
const std::vector< ReferenceCell::Type > &  cell_types_index,
const CRS< unsigned int > &  crs,
CRS< unsigned int > &  crs_d,
CRS< unsigned int > &  crs_0,
std::vector< unsigned char > &  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 1099 of file connectivity.h.

◆ build_entity()

template<typename FU >
void internal::TriangulationImplementation::build_entity ( const unsigned int  d,
const std::vector< std::shared_ptr< CellTypeBase >> &  cell_types,
const std::vector< ReferenceCell::Type > &  cell_types_index,
const CRS< unsigned int > &  crs,
CRS< unsigned int > &  crs_d,
CRS< unsigned int > &  crs_0,
std::vector< unsigned char > &  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 1284 of file connectivity.h.

◆ build_intersection()

void internal::TriangulationImplementation::build_intersection ( const std::vector< std::shared_ptr< CellTypeBase >> &  cell_types,
const std::vector< ReferenceCell::Type > &  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 std::vector< unsigned char > &  ori_cq,
CRS< unsigned int > &  con_ql,
std::vector< unsigned char > &  ori_ql,
std::vector< ReferenceCell::Type > &  quad_t_id 
)

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 1345 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::Type > &  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 1460 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 1546 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 1305 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 1392 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 1499 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 1529 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 1741 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 9221 of file tria.cc.

◆ n_cells() [1/3]

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

Definition at line 11743 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 11750 of file tria.cc.

◆ n_cells() [2/3]

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

Definition at line 11758 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 11765 of file tria.cc.

◆ n_cells() [3/3]

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

Definition at line 11773 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 11780 of file tria.cc.