INMOST
A toolkit for distributed mathematical modeling
|
An interface for elements of type CELL. More...
#include <inmost_mesh.h>
Public Member Functions | |
Cell () | |
Basic constructor. More... | |
Cell (Mesh *m, HandleType h) | |
Basic constructor with fixed handle. More... | |
Cell (Mesh *m, HandleType *h) | |
Basic constructor with an assignable handle. More... | |
Cell (const Cell &other) | |
Copy constructor. More... | |
Cell & | operator= (Cell const &other) |
Assignment operator. More... | |
Cell * | operator-> () |
Operator of dereference to pointer. More... | |
const Cell * | operator-> () const |
Operator of dereference to constant pointer. More... | |
Cell & | self () |
Get self-reference. More... | |
const Cell & | self () const |
Get constant self-reference. More... | |
ElementArray< Node > | getNodes () const |
Get all the nodes of the current cell. More... | |
ElementArray< Edge > | getEdges () const |
Get all the edges of the current cell. More... | |
ElementArray< Face > | getFaces () const |
Get all the faces of the current cell. More... | |
ElementArray< Node > | getNodes (MarkerType mask, bool invert_mask=false) const |
Get the subset of the nodes of the current cell that are (not) marked by provided marker. More... | |
ElementArray< Edge > | getEdges (MarkerType mask, bool invert_mask=false) const |
Get the subset of the edges of the current cell that are (not) marked by provided marker. More... | |
ElementArray< Face > | getFaces (MarkerType mask, bool invert_mask=false) const |
Get the subset of the faces of the current cell that are (not) marked by provided marker. More... | |
bool | CheckEdgeOrder () const |
Check that sequence of edges form a closed loop and each edge have a node that matches one of the nodes at the next edge. More... | |
bool | FixEdgeOrder () const |
Repair the sequence of edges so that each edge have node that matches one of the nodes at the next edge. More... | |
Cell | Neighbour (Face face) const |
Get a cell that share a face with the current cell. More... | |
ElementArray< Cell > | NeighbouringCells () const |
Get all cells that share the face with the current cell. More... | |
bool | Inside (const real *point) const |
Determine, if point lies inside element. More... | |
bool | InsidePrint (const real *point, std::ostream &sout=std::cout) const |
real | Volume () const |
Return volume of the cell. More... | |
bool | Closure () const |
Test that faces of the cell form the closed set. More... | |
void | SwapBackCell () const |
For each adjacent cell make me a front cell and fix normal orientation accordingly. | |
bool | CheckConvexity () const |
Public Member Functions inherited from INMOST::Element | |
Element (Mesh *m, HandleType h) | |
Element (Mesh *m, HandleType *h) | |
Element (const Element &other) | |
Element & | operator= (Element const &other) |
Element * | operator-> () |
const Element * | operator-> () const |
Element & | self () |
const Element & | self () const |
virtual enumerator | nbAdjElements (ElementType etype) const |
Retrieve number of adjacent elements. More... | |
virtual ElementArray< Element > | getAdjElements (ElementType etype) const |
Retrieve unordered array of adjacent elements. More... | |
virtual enumerator | nbAdjElements (ElementType etype, MarkerType mask, bool invert_mask=false) const |
Retrieve number of adjacent elements with marker. More... | |
virtual ElementArray< Element > | getAdjElements (ElementType etype, MarkerType mask, bool invert_mask=false) const |
Retrieve unordered array of adjacent elements with marker. More... | |
ElementArray< Element > | BridgeAdjacencies (ElementType Bridge, ElementType Dest, MarkerType bridge_mask=0, bool bridge_invert=false, MarkerType target_mask=0, bool target_invert=false) const |
ElementArray< Node > | BridgeAdjacencies2Node (ElementType Bridge, MarkerType bridge_mask=0, bool bridge_invert=false, MarkerType target_mask=0, bool target_invert=false) const |
ElementArray< Edge > | BridgeAdjacencies2Edge (ElementType Bridge, MarkerType bridge_mask=0, bool bridge_invert=false, MarkerType target_mask=0, bool target_invert=false) const |
ElementArray< Face > | BridgeAdjacencies2Face (ElementType Bridge, MarkerType bridge_mask=0, bool bridge_invert=false, MarkerType target_mask=0, bool target_invert=false) const |
ElementArray< Cell > | BridgeAdjacencies2Cell (ElementType Bridge, MarkerType bridge_mask=0, bool bridge_invert=false, MarkerType target_mask=0, bool target_invert=false) const |
virtual ElementArray< Cell > | getCells () const |
Return all the cells of the element. More... | |
virtual ElementArray< Cell > | getCells (MarkerType mask, bool invert_mask=false) const |
GeometricType | GetGeometricType () const |
unsigned int | GetElementDimension () const |
Status | GetStatus () const |
void | SetStatus (Status status) const |
Storage::integer & | GlobalID () const |
bool | CheckElementConnectivity () const |
void | PrintElementConnectivity () const |
void | CastRay (const real *pos, const real *dir, std::map< HandleType, real > &hits) const |
void | ComputeGeometricType () const |
void | Centroid (real *cnt) const |
void | Barycenter (real *cnt) const |
Storage::real | Mean (const MeanFunc &f, real time) const |
Storage::real | Mean (real(*func)(real *x, real t), real time) const |
bool | Boundary () const |
Determine that the element is on the boundary. More... | |
bool | Planarity () const |
bool | Hide () const |
If the function returns true then element was hidden, works only inside BeginModification and EndModification, on EndModification all Hidden elements are deleted. More... | |
bool | Show () const |
If the function returns true then element was recovered from hidden state, works only inside BeginModification and EndModification. More... | |
bool | Delete () |
Remove element from mesh. More... | |
bool | Hidden () const |
bool | New () const |
void | Disconnect (bool delete_upper_adjacent) const |
void | Disconnect (const HandleType *adjacent, INMOST_DATA_ENUM_TYPE num) const |
Disconnect element. More... | |
void | Connect (const HandleType *adjacent, INMOST_DATA_ENUM_TYPE num) const |
Connects lower adjacencies to current element. More... | |
void | SendTo (std::set< Storage::integer > &procs) const |
Update geometric data for element, calls RecomputeGeometricData from Mesh. More... | |
void | SendTo (std::vector< Storage::integer > &procs) const |
void | SendTo (Storage::integer_array procs) const |
Public Member Functions inherited from INMOST::Storage | |
Storage (const Storage &other) | |
Storage (Mesh *mesh, HandleType handle) | |
Storage (Mesh *mesh, HandleType *handle) | |
This constructor allows for remote handle modification. | |
Storage & | operator= (Storage const &other) |
If there is a link to handle provided (automatically by ElementArray and reference_array), then remote handle value will be modified. | |
__INLINE bool | operator< (const Storage &other) const |
__INLINE bool | operator> (const Storage &other) const |
__INLINE bool | operator<= (const Storage &other) const |
__INLINE bool | operator>= (const Storage &other) const |
__INLINE bool | operator== (const Storage &other) const |
__INLINE bool | operator!= (const Storage &other) const |
__INLINE Storage * | operator-> () |
__INLINE const Storage * | operator-> () const |
__INLINE Storage & | self () |
__INLINE const Storage & | self () const |
__INLINE real & | Real (const Tag &tag) const |
Retrieve real value associated with Tag. More... | |
__INLINE integer & | Integer (const Tag &tag) const |
Retrieve integer value associated with Tag. More... | |
__INLINE bulk & | Bulk (const Tag &tag) const |
Retrieve one byte of abstract data associated with Tag. More... | |
__INLINE reference & | Reference (const Tag &tag) const |
Retrieve Element reference associated with Tag. More... | |
__INLINE remote_reference & | RemoteReference (const Tag &tag) const |
Retrieve remote Element reference associated with Tag. More... | |
__INLINE real_array | RealArray (const Tag &tag) const |
Retrieve array of real values associated with Tag. More... | |
__INLINE integer_array | IntegerArray (const Tag &tag) const |
Retrieve array of integer values associated with Tag. More... | |
__INLINE bulk_array | BulkArray (const Tag &tag) const |
Retrieve abstract data associated with Tag as a series of bytes. More... | |
__INLINE reference_array | ReferenceArray (const Tag &tag) const |
Retrieve array of Element references associated with Tag. More... | |
__INLINE remote_reference_array | RemoteReferenceArray (const Tag &tag) const |
Retrieve array of Element references associated with Tag. More... | |
__INLINE real_array | RealArrayDF (const Tag &tag) const |
__INLINE integer_array | IntegerArrayDF (const Tag &tag) const |
__INLINE bulk_array | BulkArrayDF (const Tag &tag) const |
__INLINE reference_array | ReferenceArrayDF (const Tag &tag) const |
__INLINE remote_reference_array | RemoteReferenceArrayDF (const Tag &tag) const |
__INLINE real & | RealDF (const Tag &tag) const |
__INLINE integer & | IntegerDF (const Tag &tag) const |
__INLINE bulk & | BulkDF (const Tag &tag) const |
__INLINE reference & | ReferenceDF (const Tag &tag) const |
__INLINE remote_reference & | RemoteReferenceDF (const Tag &tag) const |
__INLINE real_array | RealArrayDV (const Tag &tag) const |
__INLINE integer_array | IntegerArrayDV (const Tag &tag) const |
__INLINE bulk_array | BulkArrayDV (const Tag &tag) const |
__INLINE reference_array | ReferenceArrayDV (const Tag &tag) const |
__INLINE remote_reference_array | RemoteReferenceArrayDV (const Tag &tag) const |
__INLINE real & | RealDV (const Tag &tag) const |
__INLINE integer & | IntegerDV (const Tag &tag) const |
__INLINE bulk & | BulkDV (const Tag &tag) const |
__INLINE reference & | ReferenceDV (const Tag &tag) const |
__INLINE remote_reference & | RemoteReferenceDV (const Tag &tag) const |
__INLINE var & | Variable (const Tag &tag) const |
Retrieve variable reference associated with Tag. | |
__INLINE var & | VariableDF (const Tag &tag) const |
__INLINE var & | VariableDV (const Tag &tag) const |
__INLINE var_array | VariableArray (const Tag &tag) const |
Retrieve array of variables associated with Tag. | |
__INLINE var_array | VariableArrayDF (const Tag &tag) const |
__INLINE var_array | VariableArrayDV (const Tag &tag) const |
__INLINE INMOST_DATA_ENUM_TYPE | GetDataSize (const Tag &tag) const |
Return the data length associated with Tag. More... | |
__INLINE INMOST_DATA_ENUM_TYPE | GetDataCapacity (const Tag &tag) const |
Return the size of the structure required to represent the data on current element. More... | |
__INLINE void | SetDataSize (const Tag &tag, INMOST_DATA_ENUM_TYPE new_size) const |
Set the length of data associated with Tag. More... | |
__INLINE void | GetData (const Tag &tag, INMOST_DATA_ENUM_TYPE shift, INMOST_DATA_ENUM_TYPE size, void *data) const |
Extract part of the data associated with Tag. More... | |
__INLINE void | SetData (const Tag &tag, INMOST_DATA_ENUM_TYPE shift, INMOST_DATA_ENUM_TYPE size, const void *data) const |
__INLINE void | DelData (const Tag &tag) const |
__INLINE bool | DelSparseData (const Tag &tag) const |
Deallocates space allocated for sparse data, frees variable array if necessary. | |
__INLINE void | DelDenseData (const Tag &tag) const |
Frees variable array or fills field with zeroes. | |
__INLINE bool | HaveData (const Tag &tag) const |
Check if any data is associated with Tag. | |
__INLINE ElementType | GetElementType () const |
__INLINE integer | GetElementNum () const |
__INLINE void | SetMarker (MarkerType n) const |
__INLINE bool | GetMarker (MarkerType n) const |
__INLINE void | RemMarker (MarkerType n) const |
__INLINE void | SetPrivateMarker (MarkerType n) const |
__INLINE bool | GetPrivateMarker (MarkerType n) const |
__INLINE void | RemPrivateMarker (MarkerType n) const |
__INLINE void | ClearMarkerSpace () const |
__INLINE void | GetMarkerSpace (bulk copy[MarkerFields]) const |
__INLINE void | SetMarkerSpace (bulk source[MarkerFields]) const |
__INLINE integer | LocalID () const |
__INLINE integer | DataLocalID () const |
This number is guaranteed to be between 0 and Mesh::NumberOf(type of element) after Mesh::ReorderEmpty. | |
__INLINE bool | isValid () const |
__INLINE Mesh * | GetMeshLink () const |
__INLINE HandleType | GetHandle () const |
__INLINE Element | getAsElement () const |
__INLINE Node | getAsNode () const |
__INLINE Edge | getAsEdge () const |
__INLINE Face | getAsFace () const |
__INLINE Cell | getAsCell () const |
__INLINE ElementSet | getAsSet () const |
Static Public Member Functions | |
static Cell | UniteCells (const ElementArray< Cell > &cells, MarkerType del_protect) |
Unite a set of given cells into one cell. More... | |
static bool | TestUniteCells (const ElementArray< Cell > &cells, MarkerType del_protect) |
Test that no marked element will be deleted during union of given cells. More... | |
static ElementArray< Cell > | SplitCell (Cell cell, const ElementArray< Face > &faces, MarkerType del_protect) |
Separate a cell according to the set of provided faces. More... | |
static bool | TestSplitCell (Cell cell, const ElementArray< Face > &faces, MarkerType del_protect) |
This functions checks is it possible to split the cell by the given set of faces without deleting marked elements. More... | |
Static Public Member Functions inherited from INMOST::Element | |
static const char * | GeometricTypeName (GeometricType t) |
static integer | GetGeometricDimension (GeometricType m_type) |
static const char * | StatusName (Status s) |
static bool | CheckConnectivity (Mesh *m) |
Additional Inherited Members | |
Public Types inherited from INMOST::Element | |
typedef INMOST_DATA_BULK_TYPE | GeometricType |
typedef INMOST_DATA_BULK_TYPE | Status |
typedef inner_reference_array | adj_type |
typedef adj_type::iterator | adj_iterator |
typedef adj_type::const_iterator | const_adj_iterator |
typedef adj_type::reverse_iterator | adj_reverse_iterator |
typedef adj_type::const_reverse_iterator | const_adj_reverse_iterator |
Public Types inherited from INMOST::Storage | |
typedef INMOST_DATA_REAL_TYPE | real |
Storage type for representing real values. | |
typedef INMOST_DATA_INTEGER_TYPE | integer |
Storage type for representing integer values. | |
typedef INMOST_DATA_BULK_TYPE | bulk |
Storage type for representing one byte of abstract data. | |
typedef INMOST_DATA_ENUM_TYPE | enumerator |
type for representing unsigned integer values. | |
typedef HandleType | reference |
Storage type for representing references to Element. | |
typedef RemoteHandleType | remote_reference |
Storage type for representing references to Element in another Mesh. | |
typedef shell< real > | real_array |
Storage type for representing arrays of real values. | |
typedef shell< integer > | integer_array |
Storage type for representing arrays of integer values. | |
typedef shell< bulk > | bulk_array |
Storage type for representing abstract data as a series of bytes. | |
typedef variable | var |
Storage type for representing real value with vector of variations. | |
typedef shell< variable > | var_array |
Storage type for representing array of values with vectors of variations. | |
Static Public Attributes inherited from INMOST::Element | |
static const GeometricType | Unset = 0 |
static const GeometricType | Vertex = 1 |
static const GeometricType | Line = 2 |
static const GeometricType | MultiLine = 3 |
static const GeometricType | Tri = 4 |
static const GeometricType | Quad = 5 |
static const GeometricType | Polygon = 6 |
static const GeometricType | MultiPolygon = 7 |
static const GeometricType | Tet = 8 |
static const GeometricType | Hex = 9 |
static const GeometricType | Prism = 10 |
static const GeometricType | Pyramid = 11 |
static const GeometricType | Polyhedron = 12 |
static const GeometricType | Set = 253 |
static const GeometricType | MeshPart = 254 |
static const GeometricType | MaxType = 255 |
static const Status | Owned = 1 |
static const Status | Shared = 2 |
static const Status | Ghost = 4 |
static const Status | Any = 0 |
Protected Member Functions inherited from INMOST::Element | |
void | SetGeometricType (GeometricType t) |
Protected Attributes inherited from INMOST::Storage | |
HandleType | handle |
HandleType * | handle_link |
An interface for elements of type CELL.
This interface carry the link to the mesh and the element's handle that represents position of the element's data in the mesh.
Interface provides some operations that can be done uniquely on the object of class Element for which Element::GetElementType retruns CELL.
For the basic set of operations on all of the elements check class Element.
For the basic set of operations on the data of the element check class Storage.
You can obtain object of class Cell from Mesh::iteratorCell, in this case obtained object is always valid. Also you can get it through Mesh::CellByLocalID, check with Element::isValid to see whether you have obtained valid object. You can convert an object of class Element into an object of class Cell by Element::getAsCell. In debug mode it will internally check that the element is of type CELL. You may compose an object of class Cell by using constructor and specifing pointer to the mesh and providing element's handle. You can make a handle with ComposeHandle(CELL,local_id) function.
Definition at line 688 of file inmost_mesh.h.
|
inline |
|
inline |
Basic constructor with fixed handle.
When constructed this way, only handle within object may change.
m | Pointer to the mesh to which the element belongs. |
h | Unique handle that describes position of the element within the mesh. |
Definition at line 701 of file inmost_mesh.h.
|
inline |
Basic constructor with an assignable handle.
When constructed this way, the provided memory location for handle will be modified on assignment.
The purpose of this function is to be used in various non-constant iterators of containers that allow underlying contents to be changed.
m | Pointer to the mesh to which the element belongs. |
h | Pointer to the handle that describes position of the element within mesh. |
Definition at line 712 of file inmost_mesh.h.
|
inline |
Copy constructor.
New object will inherit the assignment behavior of the initial object.
other | Object of type Cell to be duplicated. |
Definition at line 718 of file inmost_mesh.h.
bool INMOST::Cell::CheckEdgeOrder | ( | ) | const |
Check that sequence of edges form a closed loop and each edge have a node that matches one of the nodes at the next edge.
This function works for cells for which Element::GetElementDimension returns 2.
bool INMOST::Cell::Closure | ( | ) | const |
Test that faces of the cell form the closed set.
This is automatically checked for if you activate NEED_TEST_CLOSURE in Mesh::SetTopologyCheck.
bool INMOST::Cell::FixEdgeOrder | ( | ) | const |
Repair the sequence of edges so that each edge have node that matches one of the nodes at the next edge.
This function works for cells for which Element::GetGeometricDimension returns 2.
This function may fail if all the edges does not form a closed loop.
|
virtual |
Get all the edges of the current cell.
This function traverses down the adjacency graph by two levels.
The order of the edges is unspecified.
Reimplemented from INMOST::Element.
|
virtual |
Get the subset of the edges of the current cell that are (not) marked by provided marker.
This function traverses down the adjacency graph by two levels.
The order of the edges is unspecified.
mask | Marker that should be used to filter elements. |
invert_mask | If false then those elements that are marked will be taken, otherwise elements that are not marked will be taken. |
Reimplemented from INMOST::Element.
|
virtual |
Get all the faces of the current cell.
This function traverses down the adjacency graph by one level.
The order of the faces returned by this function is preserved from the moment of the construction of the cell.
Reimplemented from INMOST::Element.
|
virtual |
Get the subset of the faces of the current cell that are (not) marked by provided marker.
This function traverses down the adjacency graph by one level.
The order of the faces returned by this function is preserved from the moment of the construction of the cell.
mask | Marker that should be used to filter elements. |
invert_mask | If false then those elements that are marked will be taken, otherwise elements that are not marked will be taken. |
Reimplemented from INMOST::Element.
|
virtual |
Get all the nodes of the current cell.
This function traverses up the adjacency graph by one level.
The order of nodes will be preserved from the moment of the construction of the cell. When suggest_nodes array is not supplied into the Mesh::CreateCell functions, then for known types the order of nodes follows VTK convention. For polyhedral cells the order is unspecified. When suggest_nodes_order was provided into Mesh::CreateCell then the order follows provided order.
Reimplemented from INMOST::Element.
|
virtual |
Get the subset of the nodes of the current cell that are (not) marked by provided marker.
This function traverses up the adjacency graph by one level.
The order of nodes will be preserved from the moment of the construction of the cell. When suggest_nodes array is not supplied into the Mesh::CreateCell functions, then for known types the order of nodes follows VTK convention. For polyhedral cells the order is unspecified. When suggest_nodes_order was provided into Mesh::CreateCell then the order follows provided order.
mask | Marker that should be used to filter elements. |
invert_mask | If false then those elements that are marked will be taken, otherwise elements that are not marked will be taken. |
Reimplemented from INMOST::Element.
bool INMOST::Cell::Inside | ( | const real * | point | ) | const |
Determine, if point lies inside element.
Now it works only for 3-dimensional elements, at future it will be extended to support polygons and segments.
point | coordinates of the point, it is assumed that number of the coordinates is the same as the number of dimensions in the mesh. |
Get a cell that share a face with the current cell.
Don't forget to check that the returned cell is valid. It would return invalid cell for boundary face.
face | A face of current cell for which neighbouring cell is determined. |
ElementArray<Cell> INMOST::Cell::NeighbouringCells | ( | ) | const |
Get all cells that share the face with the current cell.
|
inline |
Operator of dereference to pointer.
This is needed for iterators to work properly.
Definition at line 733 of file inmost_mesh.h.
|
inline |
Operator of dereference to constant pointer.
This is needed for const_iterators to work properly.
Definition at line 739 of file inmost_mesh.h.
Assignment operator.
Assigned object will inherit the asignment behavior of the initial object only in case it was constructed without pointer to a handle. Otherwise it will only modify the memory location to which it points.
other | Object of type Cell to be duplicated. |
Definition at line 727 of file inmost_mesh.h.
|
inline |
Get self-reference.
Main purpose is to convert iterators into elements and to pass them as arguments of functions.
Definition at line 745 of file inmost_mesh.h.
|
inline |
Get constant self-reference.
Main purpose is to convert iterators into elements and to pass them as arguments of functions.
Definition at line 751 of file inmost_mesh.h.
|
static |
Separate a cell according to the set of provided faces.
You should first separate all edges with new nodes by Edge::SplitEdge, then faces with new edges by Face::SplitFace and then create faces using new edges from faces of initial cell and optionally edges from inside of the cell. All faces are supposed to be internal with respect to the current cell. Internally this function will resolve geometry of new cells inside of the current cell by running through adjacency graph.
cell | A cell to be split. |
faces | A set of faces, internal for current cell, that will be used for construction of new cells. |
del_protect | Marker that may be used to protect some elements from deletion by algorithm. Zero means no check. |
|
static |
This functions checks is it possible to split the cell by the given set of faces without deleting marked elements.
cell | A cell to be split. |
faces | Set of faces, internal for current cell, that will be used for new cells. |
del_protect | Marker that may be used to protect some elements from deletion by algorithm. Zero means no check. |
|
static |
Test that no marked element will be deleted during union of given cells.
cells | A set of cells to be united. |
del_protect | A marker that protects elements from deletion. Zero means no check. |
|
static |
Unite a set of given cells into one cell.
This will create a cell whose faces are formed by symmetric difference of faces of given cells. If you specify a nonzero marker then the procedure will fail if any marked element have to be deleted during union.
cells | A set of cells to be united. |
del_protect | A marker that protects elements from deletion. Zero means no check. |
real INMOST::Cell::Volume | ( | ) | const |
Return volume of the cell.
Note that currently the volume for non-convex cells may be calculated incorrectly.