grid_tools namespace

Tools to help with grid traversal, particularly in neighborhoods of cells.

Typedefs

template<int dim>
using tria_cell_iterator = typename dealii::Triangulation<dim>::active_cell_iterator

Functions

template<int dim, typename F, typename G>
void visit_neighborhood(dealii::Triangulation<dim>& tria, const tria_cell_iterator<dim>& base_cell, F& is_in_neighborhood, G& calculate_local_quantity, bool clear_user_flags = true)
Visits neighborhood of base_cell and calculates some quantity using each cell in the neighborhood.
template<int dim, typename F, typename G>
void visit_neighbors_recursively(const tria_cell_iterator<dim>& cell, F& is_in_neighborhood, G& calculate_local_quantity)
Recursively visits each cell in neighborhood of a base cell and runs function on those cells.

Typedef documentation

template<int dim>
using grid_tools::tria_cell_iterator = typename dealii::Triangulation<dim>::active_cell_iterator

Cell iterator on a triangulation

Function documentation

template<int dim, typename F, typename G>
void grid_tools::visit_neighborhood(dealii::Triangulation<dim>& tria, const tria_cell_iterator<dim>& base_cell, F& is_in_neighborhood, G& calculate_local_quantity, bool clear_user_flags = true)

Visits neighborhood of base_cell and calculates some quantity using each cell in the neighborhood.

Parameters
tria
base_cell Cell which calculate_local_quantity is run on, and whose neighbors are visited recursively
is_in_neighborhood Function which takes a tria_cell_iterator and returns a boolean to tell whether it satisfies criteria for being in neighborhood. Users may construct is_in_neighborhood to change its internal state upon evaluation.
calculate_local_quantity Function which takes a tria_cell_iterator and calculates some quantity. Users may construct calculate_local_quantity to change its internal state upon evaluation.
clear_user_flags

Here a "neighborhood" is a connected collection of cells around base_cell for which is_in_neighborhood evaluates to true when the cells are inputted. This is essentially a wrapper function around visit_neighbors_recursively, but it clears user_flags before and after visiting the neighborhood, unless users specifically request not.

template<int dim, typename F, typename G>
void grid_tools::visit_neighbors_recursively(const tria_cell_iterator<dim>& cell, F& is_in_neighborhood, G& calculate_local_quantity)

Recursively visits each cell in neighborhood of a base cell and runs function on those cells.

Parameters
cell Cell which calculate_local_quantity is run on, and whose neighbors are visited recursively
is_in_neighborhood Function which eats a cell and returns a boolean to tell whether it satisfies criteria for being in neighborhood. Users may construct is_in_neighborhood to change its internal state upon evaluation.
calculate_local_quantity Function which takes the current cell and calculates some quantity. Users may construct calculate_local_quantity to change its internal state upon evaluation.

Given a cell cell, this function runs calculate_local_quantity, marks cell user flag as having been visited, then recursively visits neighbors if is_in_neighborhood evaluates to true on those neighbors.