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.

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

NodecreateNode (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.

CellcreateChildCopy (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.