34 : _pane(pane), _conn( _pane->is_structured()?NULL:
35 (conn==NULL?pane->connectivity(i):conn))
69 const std::pair<int,int> &
id)
70 : _pane(pane), _conn(NULL) {
110 if ( lvid ==
_base)
return 0;
111 if ( lvid ==
_base+1)
return 1;
113 if ( lvid ==
int(
_base+nr))
return 3;
114 if ( lvid ==
int(
_base+nr+1))
return 2;
120 const int c1 = (
_base-1)/nr, r1 = (
_base-1)%nr;
121 const int c2 = (lvid-1)/nr, r2 = (lvid-1)%nr;
125 if ( c2 == 0)
return vertex( (nc-1)*nr+r2+1,
true);
126 if ( c2 == nc-1)
return vertex( r2+1,
true);
130 if ( r2 == 0)
return vertex( (c2+1)*nr,
true);
131 if ( r2 == nr-1)
return vertex( c2*nr+1,
true);
139 if ( lvid == *p)
return i;
148 nodes.resize( num_nodes);
155 : _ene(ene), _k(k), _ne(0) {
157 const_cast<int&
>(
_ne) = 1;
164 const_cast<int&
>(
_ne) = 3;
170 const_cast<int&
>(
_ne) = (
_k==0)? 4 : 3;
177 const_cast<int&
>(
_ne) = (
_k<3)? 4 : 3;
184 const_cast<int&
>(
_ne) = 4;
201 nn +=
_ne + (num_nodes == 18 &&
_k<3 || num_nodes == 27);
224 nodes[0] = (*_ene)[(
_k)%num_edges];
225 nodes[1] = (*_ene)[(
_k+1)%num_edges];
227 if (nn>2) nodes[2] = (*_ene)[num_edges+
_k];
235 { {0, 2, 1, 6, 5, 4}, { 0, 1, 3, 4, 8, 7},
236 {1, 2, 3, 5, 9, 8}, {2, 0, 3, 6, 7, 9}};
239 { {0,3,2,1,8,7,6,5}, {0,1,4,5,10,9,-1,-1}, {1,2,4,6,11,10,-1,-1},
240 {2,3,4,7,12,11,-1,-1}, {3,0,4,8,9,12,-1,-1}};
243 { {0,1,4,3,6,10,12,9,15}, {1,2,5,4,7,11,13,10,16}, {2,0,3,5,8,9,14,11,17},
244 {0,2,1,8,7,6,-1,-1,-1}, {3,4,5,12,13,14,-1,-1,-1}};
247 { {0,3,2,1,11,10,9, 8, 20}, {0,1,5,4,8, 13,16,12,21},
248 {1,2,6,5,9, 14,17,13,22}, {2,3,7,6,10,15,18,14,23},
249 {0,4,7,3,12,19,15,11,24}, {4,5,6,7,16,17,18,19,25}};
A Pane object contains a mesh, pane attribute, and field variables.
#define COM_assertion(EX)
Error checking utility similar to the assert macro of the C language.
An adaptor for enumerating node IDs of an element.
int size_of_corners() const
const int * pointer() const
Get a constant pointer to the connectivity array.
int vertex(int lvid, bool level=false) const
Get the vertex index of an vertex within the element.
#define COM_assertion_msg(EX, msg)
void get_nodes(std::vector< int > &nodes, bool quad_ret)
Vector_n max(const Array_n_const &v1, const Array_n_const &v2)
const Connectivity * _conn
bool is_structured() const
Is mesh of the pane structured?
static const int _face_node_lists_pris[5][9]
void get_nodes(std::vector< int > &nodes)
Get a vector of all of the nodes in the element.
Size size_of_elements() const
Get the total number of elements in the pane (including ghost elements).
Facet_node_enumerator(const Element_node_enumerator *ene, int k)
static const int _face_node_lists_hexa[6][9]
Size index_offset() const
Get the index of the first element.
int operator[](int i) const
int size_of_edges() const
Number of edges per element.
Size size_j() const
Get the number of nodes in j-dimension if the mesh is structured.
int size_of_nodes() const
Number of nodes per element.
This file contains a set of routines for error assertion.
int dimension() const
Get the dimension of the base pane.
bool is_unstructured() const
Is mesh of the pane unstructured?
Element_node_enumerator()
static const int _face_node_lists_tets[4][6]
const Element_node_enumerator *const _ene
int dimension() const
Dimension of the pane.
Size size_of_nodes_pe() const
Get the number of nodes per element of the current connectivity table.
Connectivity * connectivity(Size i)
Obtain the connectivity table containing the element with the given ID.
int is_quadratic() const
Check whether the element is quadratic.
Size size_of_elements() const
Get the total number of elements (including ghost elements) in the table.
void next()
Go to the next element within the connectivity tables of a pane.
int size_of_nodes() const
Size size_i() const
Get the number of nodes in i-dimension if the mesh is structured.
Encapsulates an element-connectivity of a mesh.
static const int _face_node_lists_pyra[5][8]