Go to Overview over all GrAL packages.
Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Related Pages  

Gral/Grids/Cartesian2D/boundary.h

Go to the documentation of this file.
00001 #ifndef NMWR_GB_BOUNDARY_REG2D_H
00002 #define NMWR_GB_BOUNDARY_REG2D_H
00003 
00004 // $LICENSE
00005 
00006 #include "Gral/Base/boundary.h"
00007 #include "Gral/Base/grid-functors.h"
00008 
00009 #include "Gral/Iterators/boundary-iterator.h"
00010 
00011 #include "Gral/Grids/Cartesian2D/cartesian-grid2d.h"
00012 
00016 class BoundaryRange<RegGrid2D> {
00017 public:
00018 
00019   typedef RegGrid2D                grid_type;
00020   typedef grid_types<grid_type>    gt;
00021   typedef gt::Edge                 Edge;
00022   typedef gt::Vertex               Vertex;
00023 
00024   typedef iscellinside_pred<grid_type>                          inside_p;
00025   typedef BoundaryComponentVertexIterator2D<grid_type,inside_p> VertexIterator;
00026   typedef BoundaryComponentEdgeIterator2D  <grid_type,inside_p> EdgeIterator;
00027   typedef BoundaryComponentEdgeIterator2D <grid_type,inside_p>  FacetIterator;
00028 private:
00029   grid_type const* g;
00030   Edge             seed_edge;
00031 public:
00032   BoundaryRange() : g(0) {}
00033   BoundaryRange(grid_type const& gg) : g(&gg) 
00034     {
00035       // get edge on boundary (should be the first edge)
00036       gt::EdgeIterator e = TheGrid().FirstEdge();
00037      while(! TheGrid().IsOnBoundary(*e))
00038        ++e;
00039      seed_edge = *e;
00040     }
00041 
00042 
00043   //  VertexIterator FirstVertex() const { return VertexIterator(seed_edge,IsEdgeOnBoundary(*g));}
00044   //  EdgeIterator   FirstEdge()   const { return EdgeIterator  (seed_edge,IsEdgeOnBoundary(*g));}
00045   //  FacetIterator  FirstFacet()  const { return FacetIterator (seed_edge,IsEdgeOnBoundary(*g));}
00046   VertexIterator FirstVertex() const { return VertexIterator(seed_edge,IsCellInside(*g));}
00047   EdgeIterator   FirstEdge()   const { return EdgeIterator  (seed_edge,IsCellInside(*g));}
00048   FacetIterator  FirstFacet()  const { return FacetIterator (seed_edge,IsCellInside(*g));}
00049 
00050   //  unsigned NumOfVertices() const;
00051   //  unsigned NumOfEdges()    const;
00052   //  unsigned NumOfFacets()   const;
00053   grid_type const& TheGrid() const { return *g;}
00054 
00055 };
00056 
00057 struct grid_types<BoundaryRange<RegGrid2D> > 
00058 {
00059   typedef grid_types<RegGrid2D>     gt;
00060   typedef BoundaryRange<RegGrid2D>  BrC;
00061 
00062   typedef  gt::Vertex Vertex;
00063   typedef  gt::Edge   Edge;
00064  // typedef  gt::Facet  Facet;
00065  // typedef  gt::Cell   Cell;
00066 
00067   typedef  BrC::VertexIterator VertexIterator;
00068   typedef  BrC::EdgeIterator   EdgeIterator;
00069  // typedef  BrC::FacetIterator  FacetIterator;
00070   //  typedef  BrC::CellIterator   CellIterator;
00071 
00072  // typedef  gt::VertexOnCellIterator VertexOnCellIterator;
00073  // typedef  gt::EdgeOnCellIterator   EdgeOnCellIterator;
00074  // typedef  gt::FacetOnCellIterator  FacetOnCellIterator;
00075  // typedef  gt::CellOnCellIterator   CellOnCellIterator;
00076 };
00077 
00078 
00079 
00080 #endif
00081 

Copyright (c) Guntram Berti 1997-2002. See the GrAL Homepage for up-to-date information.

Generated at Tue Feb 26 16:08:08 2002 for GrAL Cartesian2D by doxygen 1.2.11-20011104 written by Dimitri van Heesch, © 1997-2000