![]() |
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.