hangcontainer3d.h

Go to the documentation of this file.
00001 #ifndef __hangcontainer3d_h
00002 #define __hangcontainer3d_h
00003 
00004 #include "hangcontainer2d.h"
00005 
00006 /*********************************************************************/
00007 
00008 namespace Gascoigne
00009 {
00010 class HangContainer3d : public HangContainer2d
00011 {
00012  public:
00013   
00014   typedef fixarray<4,int>    FaceVector;
00015 
00016   HangList<4>   FaceToBeDeleted, FaceToBeCreated;
00017   HangList<4>   FaceNotAnyMore;
00018   HangList<4>&  FaceHanging;
00019 
00020  public:
00021 
00022   HangContainer3d(HangList<2>& lh2, HangList<4>& lh3);
00023 
00024   const HangList<4>& FaceCreating() const { return FaceToBeCreated;}
00025   const HangList<4>& FaceDeleting() const { return FaceToBeDeleted;}
00026   const HangList<4>& FaceNotMore()  const { return FaceNotAnyMore;}
00027         HangList<4>& FaceNotMore()        { return FaceNotAnyMore;}
00028 
00029   void make_consistent();
00030   void output() const;
00031 
00032   int nFaceVertexesToBeDeleted() const { return FaceToBeDeleted.size(); }
00033 
00034   int nDel()  const { return VertexToBeDeleted.size()+FaceToBeDeleted.size(); }
00035   int nNew()  const { return VertexToBeCreated.size()+FaceToBeCreated.size(); }
00036 
00037   void load_elimination (IntVector&) const;
00038   int  vertex_index     (const EdgeVector& v) const
00039     {
00040       return HangContainer2d::vertex_index(v);
00041     }
00042   int  vertex_index(const FaceVector&) const;
00043 
00044   void update_olds(IntVector&, const IntVector&);
00045   void update_news(const IntVector&, int);
00046 
00047   void face_coarse(const FaceVector&, int, int);
00048   void face_refine(const FaceVector&, int);     
00049                                         
00050   void line_coarse(EdgeVector&, int, int);
00051   void line_refine(EdgeVector&, int, const HangList<2>& oldhangs);
00052 
00053   void NeighbourSwapper();
00054   void clear_hanging_lines();
00055   void build_hanging_lines(const HangList<2>& oldhangs);
00056 
00057   /* for boundary lines */
00058   bool ToBeDeleted(const FaceVector& v) const;
00059   bool ToBeCreated(const FaceVector& v) const;
00060 };
00061 }
00062 
00063 /*********************************************************************/
00064 
00065 #endif

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