Package: GrAL Complex2D        GrAL: Packages | Concepts | Homepage

GrAL::Complex2D Class Reference
[Components related to Complex2D]

General 2D grid class

An object of type Complex2D can represent a general two-dimensional grid of homogeneous dimension. The cells can be arbitrary simple polygons. The vertex sets of facets must be unique, else the facet-cell incidence relation will not be calculated correctly. More...

#include </home/guntram/tmp/GrAL/gral/complex2d/include/Gral/Grids/Complex2D/complex2d.h>

Inherits GrAL::complex2d_types.

List of all members.

Public Types

typedef self grid_type
typedef grid_category_d< 2 > category
typedef Vertex2D_Iterator VertexIterator
typedef Edge2D_Iterator EdgeIterator
typedef Edge2D_Iterator FacetIterator
typedef Cell2D_Iterator CellIterator
typedef Cell2D_Iterator FaceIterator
typedef BoundaryFacet2D_Iterator BoundaryFacetIterator
typedef
BoundaryComponent_Vertex2D_Iterator 
BoundaryVertexIterator
typedef vertex_base::CoordType CoordType

Public Member Functions

self const & TheGrid () const
self & TheGrid ()
 Complex2D (const Complex2D &rhs)
Complex2Doperator= (const Complex2D &rhs)
VertexIterator FirstVertex () const
VertexIterator EndVertex () const
EdgeIterator FirstEdge () const
EdgeIterator EndEdge () const
FacetIterator FirstFacet () const
FacetIterator EndFacet () const
CellIterator FirstCell () const
CellIterator EndCell () const
FaceIterator FirstFace () const
FaceIterator EndFace () const
void switch_vertex (Vertex &v, Edge const &e) const
void switch_edge (Vertex const &v, Edge &e, Cell const &c) const
void switch_facet (Vertex const &v, Edge &e, Cell const &c) const
void switch_cell (Edge const &e, Cell &c) const
Vertex switched_vertex (Vertex const &v, Edge const &e) const
Edge switched_edge (Vertex const &v, Edge const &e, Cell const &c) const
Facet switched_facet (Vertex const &v, Edge const &e, Cell const &c) const
Cell switched_cell (Edge const &e, Cell const &c) const
BoundaryFacetIterator FirstBoundaryFacet () const
BoundaryFacetIterator FirstBoundaryEdge () const
BoundaryVertexIterator FirstBoundaryVertex () const
size_type NumOfBoundaryVertices () const
size_type NumOfBoundaryFacets () const
size_type NumOfVertices () const
size_type NumOfEdges () const
size_type NumOfFacets () const
size_type NumOfFaces () const
size_type NumOfCells () const
cell_handle outer_cell_handle () const
 invalid cell_handle for marking "outside"
bool IsOnBoundary (EdgeOnCellIterator const &e) const
bool IsOnBoundary (Edge const &e) const
bool IsInside (cell_handle c) const
bool IsInside (const Cell &c) const
geometry
Todo:
: Remove this functionality (It's the job of geometry classes).


const CoordTypeCoord (const Vertex &v) const
CoordTypeCoord (const Vertex &v)
Archetype handling
archetype_iterator BeginArchetype () const
archetype_iterator EndArchetype () const
archetype_handle handle (archetype_iterator it) const
archetype_type const & Archetype (archetype_handle a) const
archetype_type & Archetype (archetype_handle a)
archetype_type const & ArchetypeOf (Cell const &c) const
archetype_type const & ArchetypeOf (cell_handle c) const
archetype_handle archetype_of (cell_handle c) const
archetype_handle archetype_of (Cell const &c) const
unsigned NumOfArchetypes () const
archetype_handle add_archetype (archetype_type const &A, int nv)
 Add an archetype to the archetype list.
void swap_orientation (Cell const &c)
cell_handle handle (Cell const &C) const
cell_handle handle (CellIterator const &c) const
cell_handle handle (CellNeighbourIterator const &c) const
vertex_handle handle (Vertex const &V) const
vertex_handle handle (VertexIterator const &v) const
vertex_handle handle (VertexOnCellIterator const &v) const
bool is_valid_vertex (vertex_handle v) const
bool is_valid_cell (cell_handle c) const
bool valid (vertex_handle v) const
bool valid (cell_handle c) const
bool valid_vertex (vertex_handle v) const
bool valid_cell (cell_handle c) const
edge_handle handle (const Edge &E) const
Vertex vertex (const vertex_handle &v) const
Cell cell (const cell_handle &c) const
Edge edge (const edge_handle &e) const
Edge facet (const edge_handle &e) const

Public Attributes

cell_list_complex2d _cells
vertex_list_complex2d _vertices
boundary_facet_list _boundary
size_type num_of_edges_cache
archetype_sequence archetypes
std::vector< archetype_handle > arch_for_n_vertices

Friends

class friend_for_input
class Vertex2D
class Edge2D
class Cell2D
class VertexOnCell2D_Iterator
class EdgeOnCell2D_Iterator
class BoundaryFacet2D_Iterator
class CellOnCell2D_Iterator
class CellOnVertex2D_Iterator
class Vertex2D_Iterator
class Edge2D_Iterator
class Cell2D_Iterator
enum  { dim = 2 }
unsigned dimension () const


Detailed Description

General 2D grid class

An object of type Complex2D can represent a general two-dimensional grid of homogeneous dimension. The cells can be arbitrary simple polygons. The vertex sets of facets must be unique, else the facet-cell incidence relation will not be calculated correctly.

Note:
If the grid contains non-manifold edges (having more than 2 incident cells), edge iteration (and number of edges) will not work correctly. The method check_manifold_property can be used to detect such a situation.
Complex2D is a model of Grid-With-Boundary, ArchetypedGrid, VertexRange, EdgeRange, FacetRange, and CellRange.

Its Cell type (Cell2D) is a model of VertexRange, EdgeRange, and CellRange. That is, there are types for the GridIncidenceIterator's VertexOnCellIterator (model of VertexOnCellIterator), EdgeOnCellIterator (model of EdgeOnCellIterator), and CellOnCellIterator (model of CellOnCellIterator).

Its Vertex type (Vertex2D) is a model of CellRange. That is, there is a type CellOnVertexIterator (model of CellOnVertexIterator).

Its Edge type (Edge2D) is a model of VertexRange and CellRange. That is, there are types VertexOnEdgeIterator and CellOnEdgeIterator.

Its Facet type is a typedef to its Edge type.

Definition at line 299 of file complex2d.h.


Member Function Documentation

Complex2D::archetype_handle GrAL::Complex2D::add_archetype ( Complex2D::archetype_type const &  A,
int  nv 
)

Add an archetype to the archetype list.

If there is already an archetype with nv vertices, the handle of the old archetype is returned. Else the handle of the newly added archetype is returned.

Definition at line 147 of file complex2d.C.

References REQUIRE.


The documentation for this class was generated from the following files:

©  Guntram Berti 1997-2009. See the GrAL Homepage for up-to-date information.

Generated on Tue Mar 31 19:12:38 2009 for GrAL Complex2D by doxygen 1.5.8