I. Edges

Each edge is tested separately to see if it should be tagged for refinement or derefinement.

Definition:

c = a user supplied tolerance

f(i) = value of the field variable f at node i

L = length of the edge

For the edge between nodes 1 and 2, we have

Criteria:

1) Junction: Refine if the edge field values straddle c.

Tag for refinement if f(1) > c and f(2) < c or f(1) < c and f(2) > c

example: For c = 0, refine if f changes sign across the edge.

2) Constant: Refine if the edgeís field values exceed c.

Tag for refinement if f(1) > c or f(2) > c

3) Maxsize: Refine if the edge length exceeds c.

Tag if l > c

4) Delta: Refine if the magnitude of the difference of the field values at the edge ends exceeds c.

Tag if f(1) - f(2) > c

5) Lambda Refine: Refine if lambda/dx < c. Where dx is a scale length (here taken to be the edge length).

Generally lambda/dx is a quality measure of the discretization. A larger value of usually indicates a better grid discretization. There are some special cases. If one of the field values is zero as could happen on a boundary, then lambda/dx 1/2. If f(1) is equal to f(2) then lambda/dx is divergent but the algorithm uses a small number e = .000001 added to the denominator lambda/dx to give a large but finite value of lambda/dx thus indicating a good discretization.