OOF2: The Manual

Name

RuleSet — Refinement rule sets.

Description

When refining a Skeleton, OOF2 first decides which Segments to subdivide. It chooses up to two locations on each Segment. Then it subdivides the interior of each Element in a way that is consistent with the subdivision of its Segments, as provided by a refinement rule.

Often there is more than one way to subdivide an element's interior, and the refinement rule returns more than one possibility. In this case, OOF2 chooses between them by picking the one that minimizes the resulting effective energy. The best choice will depend upon the exact position of the original element's nodes, the positions of the segment subdivisions, and the pixels in the interior, all of which go into determining the shape and homogeneity energies of the new elements.

Because there can be very many ways of subdividing an Element, the rules parameter of Refine lets you choose between two refinement rule sets. The Large rule set considers almost all possible ways of refining an element, while the Quick rule set examines just a few simple geometries (often only one) for each element. Quick often does a good enough job, and does it faster. It may be more efficient to use Quick twice than to use Large once.

For example, when subdividing each edge of a triangular element in a single spot, the Quick rule set offers only this configuration

but the Large rule set also includes these options:

as well as these

and all 26 geometries that can be derived from the Quick refinement by subdividing one or more of its quadrilaterals into two triangles

Similarly, when bisecting one edge of a quadrilateral and trisecting a neighboring edge, the Quick rule set generates only the simple refinement

while the large rule set also considers these geometries

and all the configurations that can be derived from them by splitting quadrilaterals into two triangles.

The full set of 66 refinement rules is in SRC/engine/refinemethod.py in the OOF2 source code, along with ascii art diagrams like this for each:

   #  3---------------2   3---------------2   3---------------2
   #  |               |   |\              |   |              /|
   #  |               |   | \             |   |             / |
   #  |               |   |  \            |   |            /  |
   #  d---------------c   d   \           c   d           /   c
   #  |\             /|   |\   \         /|   |\         /   /|
   #  | \           / |   | \   \       / |   | \       /   / |
   #  |  \         /  |   |  \   \     /  |   |  \     /   /  |
   #  |   \       /   |   |   \   \   /   |   |   \   /   /   |
   #  |    \     /    |   |    \   \ /    |   |    \ /   /    |
   #  0-----a---b-----1   0-----a---b-----1   0-----a---b-----1 

Values

  • Quick: A small set of refinement rules. Quick to apply but might give worse results.
  • Large: All reasonable ways of subdividing elements.