edgemanager.h

Go to the documentation of this file.
00001 #ifndef __edgemanager_h
00002 #define __edgemanager_h
00003 
00004 #include  <set>
00005 #include  "edge.h"
00006 #include  "quadlawandorder.h" 
00007 #include  "hangcontainer2d.h" 
00008 #include  "gascoigne.h"
00009 
00010 /*---------------------------------------------------*/
00011 
00012 namespace Gascoigne
00013 {
00014 class EdgeManager
00015 {
00016   typedef fixarray<2,int>  EdgeVector;
00017 
00018  protected:
00019 
00020   std::vector<Edge>&          edges;
00021   std::vector<Quad>&          quads;
00022   const IntVector&            co2n;
00023         IntVector&            eo2n;
00024 
00025   IntVector                SwappedEdge;
00026   QuadLawAndOrder          QuadLaO;
00027 
00028   void Update      ();
00029   void InnerEdges  (const IntSet& CellRefList);
00030   void OuterEdges  (const HangContainer2d& hangset);
00031   void OldHangings (HangContainer2d& hangset, const IntSet& CellRefList);
00032   void SwappedEdges();
00033   void NeighbourTester() const;
00034 
00035   void BSETest() const;
00036 
00037  public:
00038 
00039   EdgeManager(std::vector<Edge>&, std::vector<Quad>&, const IntVector& con, IntVector& eon);
00040 
00041   const Quad&  quad(int i)           const { return quads[i];}
00042         Quad&  quad(int i)                 { return quads[i];}
00043 
00044   fixarray<2,int> ChildrenOfEdge(int e) const;
00045 
00046   bool EdgeIsHanging(int e) const;
00047   bool EdgeIsHanging(const Edge& e) const;
00048 
00049   void LoadEdgeElimination(IntVector& edel, 
00050                            const IntSet& CellCoarseList,
00051                            const HangContainer2d& hangset) const;
00052   void Build( const IntSet& CellRefList, HangContainer2d&);
00053   void DeleteEdges();
00054   void InitEdges();
00055   void SortHangings();
00056 };
00057 }
00058 
00059 /*---------------------------------------------------*/
00060 
00061 #endif

Generated on Thu Sep 14 10:34:37 2006 for Gascoigne by  doxygen 1.4.7