atlas::mesh::actions::ReorderImpl class

Base class for reordering the mesh nodes and elements.

Derived classes

class NoReorder
Dummy implemenation of ReorderImpl which does nothing.
class ReorderHilbert
class ReorderReverseCuthillMckee

Public static functions

static void reorderNodes(Mesh& mesh, const std::vector<idx_t>& order)
static void reorderCellsUsingNodes(Mesh& mesh)
Reorder the cells by lowest node local index within each cell.
static void reorderEdgesUsingNodes(Mesh& mesh)
Reorder the edges by lowest node local index within each edge.

Constructors, destructors, conversion operators

ReorderImpl() defaulted

Public functions

void operator()(Mesh&) virtual
auto computeNodesOrder(Mesh&) -> std::vector<idx_t> pure virtual

Function documentation

static void atlas::mesh::actions::ReorderImpl::reorderNodes(Mesh& mesh, const std::vector<idx_t>& order)

Reorder the nodes in the given mesh using a given order

  • All fields in mesh.nodes() are reordered.
  • mesh.cells().node_connectivity() gets updated
  • mesh.edges().node_connectivity() gets updated

void atlas::mesh::actions::ReorderImpl::operator()(Mesh&) virtual

Reorder the nodes in the given mesh using the order computed with the computeNodesOrder function Then apply reorderCellsUsingNodes and reorderEdgesUsingNodes