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

dolfin::MeshRefinement Class Reference

Algorithm for the refinement of a triangular or tetrahedral mesh. More...

#include <MeshRefinement.h>

Inheritance diagram for dolfin::MeshRefinement:

Inheritance graph
[legend]
List of all members.

Static Public Member Functions

void refine (MeshHierarchy &meshes)
 Refine a given mesh hierarchy according to marks.


Static Protected Member Functions

void propagateLeafMarks (MeshHierarchy &meshes)
void updateEdgeMarks (MeshHierarchy &meshes)
 Update marks for edges.

void globalRefinement (MeshHierarchy &meshes)
void checkPreCondition (MeshHierarchy &meshes)
void checkPostCondition (MeshHierarchy &meshes)
void checkNumbering (MeshHierarchy &meshes)
void updateEdgeMarks (Mesh &mesh)
 Update marks for edges.

void evaluateMarks (Mesh &mesh)
void closeMesh (Mesh &mesh)
void refineMesh (Mesh &mesh)
void unrefineMesh (Mesh &mesh, const MeshHierarchy &meshes)
void closeCell (Cell &cell, List< Cell * > &cells, Array< bool > &closed)
 --- Algorithms working on a given cell ---

bool checkRule (Cell &cell, int no_marked_edges)
 Check refinement rule for given cell.

void refine (Cell &cell, Mesh &mesh)
void updateEdgeMarks (Cell &cell)
 --- A couple of special functions, placed here rather than in Cell --- Update marks for edges

bool childrenMarkedForCoarsening (Cell &cell)
 Check if all children are marked for coarsening.

bool edgeOfChildMarkedForRefinement (Cell &cell)
 Check if at least one edge of a child is marked for refinement.

bool edgeMarkedByOther (Cell &cell)
 Check if the cell has at least one edge marked by another cell (but not the cell itself).

void sortNodes (const Cell &cell, Array< Node * > &nodes)
 Sort nodes, placing the node belonging to the most number of marked edges first.

int noMarkedEdges (const Cell &cell)
 Count the number of marked edges within a cell.

int nodeNumber (const Node &node, const Cell &cell)
 Mapping from global node number to local number within cell.

bool leaf (Cell &cell)
 Check if a given cell is a leaf element.

bool okToRefine (Cell &cell)
 Check if cell is allowed to be refined.

Node & createNode (Node &node, Mesh &mesh, const Cell &cell)
 Create a new node (if it doesn't exist) and set parent-child info.

Node & createNode (const Point &p, Mesh &mesh, const Cell &cell)
 Create a new node (if it doesn't exist).

void removeNode (Node &node, Mesh &mesh)
 Remove node.

void removeCell (Cell &cell, Mesh &mesh)
 Remove cell.

Cell & createChildCopy (Cell &cell, Mesh &mesh)
 Create a new child to cell, that is a copy of cell.


Detailed Description

Algorithm for the refinement of a triangular or tetrahedral mesh.


Member Function Documentation

void MeshRefinement::checkNumbering (  MeshHierarchy &  meshes  )  [static, protected]
 

void MeshRefinement::checkPostCondition (  MeshHierarchy &  meshes  )  [static, protected]
 

void MeshRefinement::checkPreCondition (  MeshHierarchy &  meshes  )  [static, protected]
 

bool MeshRefinement::checkRule (  Cell &  cell,
int  no_marked_edges
)  [static, protected]
 

Check refinement rule for given cell.

Reimplemented in dolfin::TetMeshRefinement, and dolfin::TriMeshRefinement.

bool MeshRefinement::childrenMarkedForCoarsening (  Cell &  cell  )  [static, protected]
 

Check if all children are marked for coarsening.

void MeshRefinement::closeCell (  Cell &  cell,
List< Cell * > &  cells,
Array< bool > &  closed
)  [static, protected]
 

--- Algorithms working on a given cell ---

void MeshRefinement::closeMesh (  Mesh &  mesh  )  [static, protected]
 

Cell& dolfin::MeshRefinement::createChildCopy (  Cell &  cell,
Mesh &  mesh
)  [static, protected]
 

Create a new child to cell, that is a copy of cell.

Node & MeshRefinement::createNode (  const Point &  p,
Mesh &  mesh,
const Cell &  cell
)  [static, protected]
 

Create a new node (if it doesn't exist).

Node & MeshRefinement::createNode (  Node &  node,
Mesh &  mesh,
const Cell &  cell
)  [static, protected]
 

Create a new node (if it doesn't exist) and set parent-child info.

bool MeshRefinement::edgeMarkedByOther (  Cell &  cell  )  [static, protected]
 

Check if the cell has at least one edge marked by another cell (but not the cell itself).

bool MeshRefinement::edgeOfChildMarkedForRefinement (  Cell &  cell  )  [static, protected]
 

Check if at least one edge of a child is marked for refinement.

void MeshRefinement::evaluateMarks (  Mesh &  mesh  )  [static, protected]
 

void MeshRefinement::globalRefinement (  MeshHierarchy &  meshes  )  [static, protected]
 

bool MeshRefinement::leaf (  Cell &  cell  )  [static, protected]
 

Check if a given cell is a leaf element.

int MeshRefinement::nodeNumber (  const Node &  node,
const Cell &  cell
)  [static, protected]
 

Mapping from global node number to local number within cell.

int MeshRefinement::noMarkedEdges (  const Cell &  cell  )  [static, protected]
 

Count the number of marked edges within a cell.

bool MeshRefinement::okToRefine (  Cell &  cell  )  [static, protected]
 

Check if cell is allowed to be refined.

void MeshRefinement::propagateLeafMarks (  MeshHierarchy &  meshes  )  [static, protected]
 

void MeshRefinement::refine (  Cell &  cell,
Mesh &  mesh
)  [static, protected]
 

Reimplemented in dolfin::TetMeshRefinement, and dolfin::TriMeshRefinement.

void MeshRefinement::refine (  MeshHierarchy &  meshes  )  [static]
 

Refine a given mesh hierarchy according to marks.

void MeshRefinement::refineMesh (  Mesh &  mesh  )  [static, protected]
 

void MeshRefinement::removeCell (  Cell &  cell,
Mesh &  mesh
)  [static, protected]
 

Remove cell.

void MeshRefinement::removeNode (  Node &  node,
Mesh &  mesh
)  [static, protected]
 

Remove node.

void MeshRefinement::sortNodes (  const Cell &  cell,
Array< Node * > &  nodes
)  [static, protected]
 

Sort nodes, placing the node belonging to the most number of marked edges first.

void MeshRefinement::unrefineMesh (  Mesh &  mesh,
const MeshHierarchy &  meshes
)  [static, protected]
 

void MeshRefinement::updateEdgeMarks (  Cell &  cell  )  [static, protected]
 

--- A couple of special functions, placed here rather than in Cell --- Update marks for edges

void MeshRefinement::updateEdgeMarks (  Mesh &  mesh  )  [static, protected]
 

Update marks for edges.

void MeshRefinement::updateEdgeMarks (  MeshHierarchy &  meshes  )  [static, protected]
 

Update marks for edges.


The documentation for this class was generated from the following files:


Documentation automatically generated with Doxygen on 10 Sep 2004.