   Grid Edge Concept

### Grid Edge Concept

##### Description

A Grid Edge represents the mathematical concept of an edge -- a 1-dimensional entity in a Grid.

##### Notation

E is a type which is a model of Grid Edge
e is an object of type E
V is a shorthand for the E::Vertex type
v is an object of type V
g is an object of type E::grid_type
h is an object of type E::edge_handle

##### Associated types

NOTE: The types and expression involving Incidence Iterators are given below for the case of cell-on-edge iteration. Analogous types and expressions can be defined for the other element types, like edge, facet, or cell. The tables are to be understood in the following sense:
If a edge defines the incidence iterator over cells, then the requirements under Optional part apply. Analogous requirements take effect if `cell' is replaced by another element type.

 Name Expression Description handle type E::edge_handle type of the corresponding Edge Handle vertex type `E::Vertex` Vertex type of the edge, short for `E::grid_type::Vertex`. Optional part (as example) cell-on-edge iterator E::CellIterator type of the corr. CellOnEdgeIterator

##### Valid Expressions
 Name Expression Type requirements return type handle e.handle() E::edge_handle first vertex `v = e.V1()` Vertex second vertex `v = e.V2()` Vertex Optional part (as example) cell-on-edge iteration start e.FirstCell() E::CellIterator number of incident cells E.NumOfCells() int

##### Expression semantics
 Name Expression Precondition Semantics Postcondition handle h = e.handle(); e is valid shorthand for h = e.TheGrid(). handle(e) e == e.TheGrid(). edge(h) Optional part (as example) cell-on-edge iteration start ci = e.FirstCell() e is valid let ci point to the first cell incident to e ci.TheEdge() == ci.TheAnchor() == e and ci.TheGrid() == e.TheGrid() number of incident cells n = e.NumOfCells() e is valid n is the number of cells that are incident to e

##### Complexity guarantees

All operations are amortized constant timeX.

##### Models

Complex2D::Edge defined in edge2d.h

##### Notes
1. Amortization is understood to involve calling the operations for all edges of a grid.   Grid Edge Concept