atlas::mesh::actions::ReorderReverseCuthillMckee class

Reorder implementation that reorders nodes of a mesh following a Reverse Cuthill-Mckee algorithm based on the node-to-node connectivity by mesh edges Cells and edges are reordered to follow lowest node index.

Usage: auto reorder = Reorder{ option::type("reverse_cuthill_mckee") | config }; reorder( mesh );

The optional extra config can contain:

  • "ghost_at_end" : <bool> (default=true) // Determines if ghost nodes should be reordered in between // internal nodes or added/remain at the end

Base classes

class ReorderImpl
Base class for reordering the mesh nodes and elements.

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

ReorderReverseCuthillMckee(const eckit::Parametrisation& = util::NoConfig())

Public functions

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

Function documentation

static void atlas::mesh::actions::ReorderReverseCuthillMckee::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

static void atlas::mesh::actions::ReorderReverseCuthillMckee::reorderCellsUsingNodes(Mesh& mesh)

Reorder the cells by lowest node local index within each cell.

static void atlas::mesh::actions::ReorderReverseCuthillMckee::reorderEdgesUsingNodes(Mesh& mesh)

Reorder the edges by lowest node local index within each edge.

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

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