Class template Dune::XT::Grid::PeriodicGridView

template<class RealGridLayerImp, bool codim_iters_provided>
class Dune::XT::Grid::PeriodicGridView

GridView that takes an arbitrary Dune::GridView and adds periodic boundaries

PeriodicGridView is templated by and derived from an arbitrary Dune::GridView. All methods are forwarded to the underlying grid view except for begin, end, ibegin, iend, size and indexSet. The ibegin and iend methods return a PeriodicIntersectionIterator which behaves like the underlying IntersectionIterator except that it returns a PeriodicIntersection in its operator*. The PeriodicIntersection behaves like an Intersection of the underlying grid view, but may return neighbor() == true and an outside() entity even if it is on the boundary. The outside() entity is the entity adjacent to the periodically equivalent intersection, i.e. the intersection at the same position on the opposite side of the grid. The begin and end methods return a PeriodicIterator, which behaves exactly like the corresponding Iterator of the underlying grid view except that visits only one entity of several periodically equivalent entities. The indexSet() method returns a PeriodicIndexSet which returns the same index for entities that are periodically equivalent. Consequently, the PeriodicIndexSet is usually smaller than the IndexSet. The size(…) methods return the corresponding sizes of the PeriodicIndexSet In the constructor, PeriodicGridViewWrapper will build a map mapping intersections on a periodic boundary to the corresponding outside entity. Further, periodically equivalent entities will be identified and given the same index. Thus, the construction may take quite some time as several grid walks have to be done. By default, all coordinate directions will be made periodic. By supplying a std::bitset < dimension > you can decide for each direction whether it should be periodic (1 means periodic, 0 means ‘behave like underlying grid view in that direction’).

Note

  • PeriodicGridView will only work with grid views on axis-parallel hyperrectangle grids - Only cube and regular simplex grids have been tested so far. Other grids may not work properly. This is due to the heuristics for finding the periodic neighbor entity: Given an intersection on the boundary that shall be periodic, the coordinates intersection.geometry().center() are moved to the opposite side of the grid and then supplied to ::Grid::EntityInLevelSearch. As the coordinates are on the boundary of the wanted entity, this search will fail for some grids. Thus, the coordinates are moved a little to the inside of the grid before searching for the entity. The moved coordinates will be inside the correct entity for cube and usual simplex grids but this is not guaranteed for arbitrary grids.

PeriodicGridView<BaseGridViewImp, codim_iters_provided> &Dune::XT::Grid::PeriodicGridView::operator=(const PeriodicGridView<BaseGridViewImp, codim_iters_provided> &other)

No documentation provided.

const BaseGridViewType &Dune::XT::Grid::PeriodicGridView::as_base_grid_view() const

No documentation provided.

BaseGridViewType &Dune::XT::Grid::PeriodicGridView::as_base_grid_view()

No documentation provided.

void Dune::XT::Grid::PeriodicGridView::update()

No documentation provided.

template<>
Dune::XT::Grid::PeriodicGridView::PeriodicGridView<RealGridLayerImp, codim_iters_provided>(const BaseGridViewType &base_grid_view, const int periodic_directions = <recovery-expr>())

No documentation provided.

template<>
Dune::XT::Grid::PeriodicGridView::PeriodicGridView<RealGridLayerImp, codim_iters_provided>(const PeriodicGridView<BaseGridViewImp, codim_iters_provided> &other)

No documentation provided.

type Dune::XT::Grid::PeriodicGridView::Implementation

No documentation provided.

type Dune::XT::Grid::PeriodicGridView::ImplementationStorage

No documentation provided.

type Dune::XT::Grid::PeriodicGridView::BaseGridViewType

No documentation provided.