   Grid Face Concept

### Grid Face Concept

##### Description

A Grid Face represents the mathematical concept of a Face -- a 2-dimensional entity in a Grid. If the grid is 2-dimensional, a Grid Face my coincide with a Grid Cell, in a 3-dimensional grid, it may coincide with a Grid Facet.

##### Notation

F is a type which is a model of Grid Face.
f is an object of type F
C is a shorthand for the F::Cell type
c is an object of type C
g is an object of type F::grid_type
h is an object of type F::face_handle
vf is an object of type F::VertexIterator

##### Associated types

NOTE: The types and expression involving Incidence Iterators are given below for the case of vertex-on-face iteration. Analogous types and expressions can be defined for the other element types.

The tables are to be understood in the following sense:
If a Face defines the incidence iterator over vertices, then the requirements under Optional part apply. Analogous requirements take effect if `vertex' is replaced by another element type.

 Name Expression Description handle type F::face_handle type of the corresponding Face Handle cell type `F::Cell` Cell type of the Face, short for `F::grid_type::Cell`. Optional part (as example) vertex-on-face iterator F::VertexIterator type of the corr. VertexOnFaceIterator

##### Valid Expressions
 Name Expression Type requirements return type handle f.handle() F::face_handle first cell `c = f.C1()` Cell second cell `c = f.C2()` Cell Optional part (as example) vertex-on-face iteration start f.FirstVertex() F::VertexIterator number of incident vertices F.NumOfVertices() int

##### Expression semantics
 Name Expression Precondition Semantics Postcondition handle h = f.handle(); f is valid shorthand for h = f.TheGrid(). handle(f) f == f.TheGrid(). Face(h) Optional part (as example) Vertex-on-Face iteration start vf = f.FirstVertex() f is valid let fi point to the first vertex incident to f vf.TheEdge() == vf.TheAnchor() == f and vf.TheGrid() == f.TheGrid() number of incident vertices n = f.NumOfVertices() f is valid n is the number of vertices that are incident to f

##### Complexity guarantees

All operations are amortized constant timeX.

##### Models

Complex2D::Face defined in cell2d.h (identical to Complex2D::Cell)

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