Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members

TetMeshRefinement.h

Go to the documentation of this file.
00001 // Copyright (C) 2003 Johan Hoffman and Anders Logg.
00002 // Licensed under the GNU GPL Version
00003 
00004 #ifndef __TET_MESH_REFINEMENT_H
00005 #define __TET_MESH_REFINEMENT_H
00006 
00007 #include <dolfin/MeshRefinement.h>
00008 
00009 namespace dolfin {
00010 
00011   class Mesh;
00012   class Cell;
00013   class Face;
00014 
00018   
00019   class TetMeshRefinement : public MeshRefinement {
00020   public:
00021 
00023     static bool checkRule(Cell& cell, int no_marked_edges);
00024 
00026     static void refine(Cell& cell, Mesh& mesh);
00027 
00028     // Friends
00029     friend class MeshRefinement;
00030 
00031   private:
00032 
00033     static bool checkRuleRegular   (Cell& cell, int no_marked_edges);
00034     static bool checkRuleIrregular1(Cell& cell, int no_marked_edges);
00035     static bool checkRuleIrregular2(Cell& cell, int no_marked_edges);
00036     static bool checkRuleIrregular3(Cell& cell, int no_marked_edges);
00037     static bool checkRuleIrregular4(Cell& cell, int no_marked_edges);
00038 
00039     static void refineNoRefine   (Cell& cell, Mesh& mesh);
00040     static void refineRegular    (Cell& cell, Mesh& mesh);
00041     static void refineIrregular1 (Cell& cell, Mesh& mesh);
00042     static void refineIrregular2 (Cell& cell, Mesh& mesh);
00043     static void refineIrregular3 (Cell& cell, Mesh& mesh);
00044     static void refineIrregular4 (Cell& cell, Mesh& mesh);
00045 
00046     static void refineIrregular31(Cell& cell, Mesh& mesh);
00047     static void refineIrregular32(Cell& cell, Mesh& mesh,
00048                                   Array<Node*>& sorted_nodes);
00049     static void refineIrregular33(Cell& cell, Mesh& mesh, 
00050                                   Array<Node*>& sorted_nodes, Cell& face_neighbor);
00051 
00052     static bool  markedEdgesOnSameFace (Cell& cell);
00053     static Cell* findNeighbor          (Cell& cell, Face& face);
00054 
00055     static Cell& createCell(Node& n0, Node& n1, Node& n2, Node& n3,
00056                             Mesh& mesh, Cell& cell);
00057 
00058     static Cell& createChildCopy(Cell& cell, Mesh& mesh);
00059 
00060   };
00061 
00062 }
00063 
00064 #endif


Documentation automatically generated with Doxygen on 10 Sep 2004.