#include <iostream>
#include <list>
#include "hash_set.h"
#include "hash_classes.h"
#include "iterator_wrapper.h"
#include "globals.h"
#include "persistance.h"
#include "util.h"
Include dependency graph for cell.h:
This graph shows which files directly or indirectly include this file:
Go to the source code of this file.
There are two types of each cell, one for BezierMesh's and one for BoundaryMeshs. The respective mesh types are built from CellComplexs which have either BezierVertex, BezierEdge, and BezierTriangle types, or BoundaryVertex, BoundaryEdge, and BoundaryFace types.
The relations of sub-cell or super-cell are maintained via lists in each cell. Thus, to find out the EdgeCells of a FaceCell, you can use the BezierTriangle::get_edge() method and FaceCell::num_edges member. This is faster and more compact than using a set of maps in CellComplex.
Each cell type also contains pointers to it's geometric data (ContolPoint) and functional data (DataPoint). These pointers are actually iterators into master lists maintained by the DataStore. To get a pointer to a data type one should look for the cp or dp member arrays. To get the actual value of the data itself, one should use the get_cp() or get_dp() functions.
Definition in file cell.h.
#define declare_iterators_any | ( | cell, | |||
plural, | |||||
out | ) |
Value:
typedef Tumble::iterators::caster<super::cell##_iterator, out*, out*> \ cell##_iterator; \ typedef Tumble::iterators::caster<super::cell##_const_iterator, const out*, const out*> \ cell##_const_iterator; \ cell##_iterator begin_##plural(); \ cell##_const_iterator begin_##plural() const; \ cell##_iterator end_##plural(); \ cell##_const_iterator end_##plural() const; \ out *get_any_##cell(); \ const out *get_any_##cell() const;
These aren't inlined because of issues of circular dependencies: BezierVertex needs to know that BezierEdge inherits from EdgeCell, but BezierEdge needs to know BezierVertex inherits from VertexCell.
#define declare_iterators_canon | ( | cell, | |||
plural, | |||||
out | ) |
Value:
typedef Tumble::iterators::caster<super::cell##_iterator, out*, out*> \ cell##_iterator; \ typedef Tumble::iterators::caster<super::cell##_const_iterator, const out*, const out*> \ cell##_const_iterator; \ cell##_iterator begin_##plural(); \ cell##_const_iterator begin_##plural() const; \ cell##_iterator end_##plural(); \ cell##_const_iterator end_##plural() const; \ out *get_canon_##cell(); \ const out *get_canon_##cell() const;
enum Movement |
Movement restrictions for Boundarys.
In some situations, one may not want certain BoundaryEdges or BoundaryVertexs to move. Thus, BoundaryVertexs and BoundaryEdges come equipped with a fixed member, which is of type Movement. This variable determines what types of movement are allowed for that Cell.
std::ostream& operator<< | ( | std::ostream & | stream, | |
const BezierTriangle & | ||||
) |
std::ostream& operator<< | ( | std::ostream & | stream, | |
const BezierEdge & | ||||
) |
std::ostream& operator<< | ( | std::ostream & | stream, | |
const BezierVertex & | ||||
) |
std::ostream& operator<< | ( | std::ostream & | stream, | |
const BoundaryFace & | ||||
) |
std::ostream& operator<< | ( | std::ostream & | stream, | |
const BoundaryEdge & | ||||
) |
std::ostream& operator<< | ( | std::ostream & | stream, | |
const BoundaryVertex & | ||||
) |