shards  Version of the Day
 All Classes Functions Variables Typedefs Enumerations Enumerator Groups
Shards_CellTopologyData.h
1 // @HEADER
2 // *****************************************************************************
3 // Shards : Shared Discretization Tools
4 //
5 // Copyright 2008-2011 NTESS and the Shards contributors.
6 // SPDX-License-Identifier: BSD-3-Clause
7 // *****************************************************************************
8 // @HEADER
9 
10 #ifndef Shards_CellTopologyData_h
11 #define Shards_CellTopologyData_h
12 
13 #if defined( __cplusplus )
14 extern "C" {
15 #endif
16 
21 /*----------------------------------------------------------------------*/
22 
23 struct CellTopologyData ;
26 
43  const struct CellTopologyData * base ;
44 
46  const char * name ;
47 
49  unsigned key ;
50 
52  unsigned dimension ;
53 
55  unsigned vertex_count ;
56 
61  unsigned node_count ;
62 
64  unsigned edge_count ;
65 
67  unsigned side_count ;
68 
70  unsigned permutation_count ;
71 
73  unsigned subcell_homogeneity[4] ;
74 
76  unsigned subcell_count[4] ;
77 
84  const struct CellTopologyData_Subcell * subcell[4] ;
85 
92  const struct CellTopologyData_Subcell * side ;
93 
101 
119  const struct CellTopologyData_Permutation * permutation_inverse ;
120 };
121 
132  const struct CellTopologyData * topology ;
133 
136  const unsigned * node ;
137 };
138 
141 
159  const unsigned * node ;
160  unsigned polarity ;
161 };
162 
164 enum {
165  CELL_PERMUTATION_POLARITY_IRRELEVANT = 0 ,
166  CELL_PERMUTATION_POLARITY_POSITIVE = 1 ,
167  CELL_PERMUTATION_POLARITY_NEGATIVE = 2
168 };
169 
173 extern
174 int mapCellFaceEdge( const CellTopologyData * cell_topology ,
175  unsigned face_ordinal ,
176  unsigned face_edge_ordinal );
177 
180 #if defined( __cplusplus )
181 } /* extern "C" */
182 #endif
183 
184 #endif /* Shards_CellTopologyData_h */
struct CellTopologyData * base
Base, a.k.a. not-extended, version of this topology where vertex_count == node_count.
unsigned subcell_homogeneity[4]
Flag if the subcells of a given dimension are homogeneous.
unsigned key
Unique key for this topology.
struct CellTopologyData_Subcell * edge
Array of edges subcells of length edge_count.
unsigned vertex_count
Number of vertices.
Array of node permutations.
int mapCellFaceEdge(const CellTopologyData *cell_topology, unsigned face_ordinal, unsigned face_edge_ordinal)
Map a cell->face->edge ordinal to the cell->edge ordinal. Return -1 for erroneous input...
unsigned subcell_count[4]
Number of subcells of each dimension.
unsigned edge_count
Number of edges (a.k.a. boundary subcells).
unsigned dimension
Topological dimension.
unsigned node_count
Number of nodes (a.k.a. subcells).
const unsigned * node
Subcell indexing of with respect to parent cell.
const char * name
Intuitive name for this topology.
struct CellTopologyData * topology
Subcell topology.
unsigned side_count
Number of sides (a.k.a. boundary subcells).
struct CellTopologyData_Subcell * side
Array of side subcells of length side_count.
struct CellTopologyData_Subcell * subcell[4]
Array of subcells of each dimension.
A simple 'C' struct of cell topology attributes.
struct CellTopologyData_Permutation * permutation
Array of node permutations.
unsigned permutation_count
Number of defined permutations.