~njansson/dolfin/hpc

« back to all changes in this revision

Viewing changes to src/kernel/mesh/dolfin/TriMeshRefinement.h

  • Committer: Anders Logg
  • Date: 2007-01-10 09:04:44 UTC
  • mfrom: (1689.1.221 trunk)
  • Revision ID: logg@simula.no-20070110090444-ecyux3n1qnei4i8h
Remove old head

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
// Copyright (C) 2003-2005 Johan Hoffman and Anders Logg.
2
 
// Licensed under the GNU GPL Version 2.
3
 
//
4
 
// First added:  2003
5
 
// Last changed: 2005-12-01
6
 
 
7
 
#ifndef __TRI_MESH_REFINEMENT_H
8
 
#define __TRI_MESH_REFINEMENT_H
9
 
 
10
 
#include <dolfin/MeshRefinement.h>
11
 
 
12
 
namespace dolfin
13
 
{
14
 
 
15
 
  class Mesh;
16
 
  class Cell;
17
 
 
18
 
  /// Algorithm for the refinement of a triangular mesh, a modified version
19
 
  /// of the algorithm described in the paper "Tetrahedral Mesh Refinement"
20
 
  /// by J�rgen Bey, in Computing 55, pp. 355-378 (1995).
21
 
  
22
 
  class TriMeshRefinement : public MeshRefinement
23
 
  {
24
 
  public:
25
 
 
26
 
    /// Choose refinement rule
27
 
    static bool checkRule(Cell& cell, int no_marked_edges);
28
 
 
29
 
    /// Refine according to rule
30
 
    static void refine(Cell& cell, Mesh& mesh);
31
 
 
32
 
    // Friends
33
 
    friend class MeshRefinement;
34
 
 
35
 
  private:
36
 
 
37
 
    static bool checkRuleRegular   (Cell& cell, int no_marked_edges);
38
 
    static bool checkRuleIrregular1(Cell& cell, int no_marked_edges);
39
 
    static bool checkRuleIrregular2(Cell& cell, int no_marked_edges);
40
 
 
41
 
    static void refineNoRefine  (Cell& cell, Mesh& mesh);
42
 
    static void refineRegular   (Cell& cell, Mesh& mesh);
43
 
    static void refineIrregular1(Cell& cell, Mesh& mesh);
44
 
    static void refineIrregular2(Cell& cell, Mesh& mesh);
45
 
 
46
 
    static Cell& createCell(Vertex& n0, Vertex& n1, Vertex& n2, Mesh& mesh,
47
 
                            Cell& cell);
48
 
    
49
 
  };
50
 
 
51
 
}
52
 
 
53
 
#endif