Technical History of Hex Mesh Generation Scott A. Mitchell Sandia National Labs

Download Report

Transcript Technical History of Hex Mesh Generation Scott A. Mitchell Sandia National Labs

Technical History of Hex Mesh Generation
Technical History of
Hex Mesh Generation
Scott A. Mitchell
Sandia National Labs
Sandia is a multiprogram laboratory operated by Sandia Corporation, a Lockheed Martin Company,
for the United States Department of Energy under contract DE-AC04-94AL85000.
CUBIT Mesh Generation Project
Outline
Technical History of Hex Mesh Generation
Introduction
 Relationship Map

» Sweep-like techniques
» 3d techniques
» Synthesis

Where are we now?
» Hopes
CUBIT Mesh Generation Project
Technical History of Hex Mesh Generation
Introduction
CUBIT Mesh Generation Project
Introduction
Technical History of Hex Mesh Generation
What I will cover
 What I won’t cover
 Why is hex meshing hard

CUBIT Mesh Generation Project
What I will cover
Technical History of Hex Mesh Generation


Asked to give technical talk
Unstructed hex meshing algorithms and ideas
» Relationships between algorithms
– Technical threads from one technique to another

Focus on assembly meshing problems
» Multiple interlocking parts

Focus on connectivity problem
» 3d Algorithms
» A little sweeping
CUBIT Mesh Generation Project
What I won’t cover
Technical History of Hex Mesh Generation
Tools, packaging, ease of use…
 Nodal positioning for good quality

» Bias and sizing control
» Except as approach to connectivity
problem

I’ll get some names right, but not all,
and leave some people out. Sorry, no
offense intended.
CUBIT Mesh Generation Project
What I won’t cover
Technical History of Hex Mesh Generation

Techniques involving
» Mixed elements
– Hex-dominant methods
» Non-conforming meshes
– Overset grids
» Primitives and Special algorithms for restricted
classes of geometries
– Sphere-like assemblies (Hex3d at LANL…)
– Air around airplanes, cars,…


CFD block primitives
Medial-axis and Midpoint Subdivision
CUBIT Mesh Generation Project
Why is Hex Meshing Hard?
Technical History of Hex Mesh Generation

Connectivity of tet meshing is “easy”
» Delaunay triangulations
– Given set of points, can connect them up to form
triangles, tetrahedra, d-simplices
– Empty-sphere property shows you how
– Caveats


Good quality is difficult in 3 dimensions
Boundary constraints is difficult in 3 dimensions
» Octree (subdivision) techniques
– Keep dividing polyhedron until you get simplices

No new points on the boundary are necessary
» Advancing front techniques
– Remaining space always dividable into tetrahedra
CUBIT Mesh Generation Project
Why is Hex Meshing Hard?
Technical History of Hex Mesh Generation

Quads harder than tris (i.e. even 2d is harder)
» Can’t just divide polygons into quads
– New points on the boundary may be necessary
q
?
q
?
» In practice, an even number of boundary edges can be
divided into quads (with new interior points).
– Necessary and sufficient
Euler:
CUBIT Mesh Generation Project
4q  2e int ebdy
3D Approaches
Technical History of Hex Mesh Generation

Assume: assembly problem
» Fixed boundary mesh

Geometry first
» constrained by topology

Topology first
» unconstrained
– fix-up afterwards
» constrained by geometry
CUBIT Mesh Generation Project
Relationship Map
Technical History of Hex Mesh Generation

Will refer to these map for context
throughout talk
CUBIT Mesh Generation Project
Sweep Relationship Map
2D
Technical History of Hex Mesh Generation
1-1 Sweeping / Projection / Rotation (lots)
Sweeping Node
Placement Strategies
2.75D
2.5D
M-1 Sweeping (several)
CUBIT Mesh Generation Project
Cooper Tool
Good Source Surface
Mesh Strategies
M-M Sweeping
Inside-out
3d
Multi-axis
Cooper Tool
Grafting
samitch: be careful to imply conceptual
relationship, not cause and effect of efforts or
people
3D Relationship Map
clean-up
construction discovery
Technical History of Hex Mesh Generation
Paving/Plastering
THEX
STC dual structure
rediscovered
Hex-to-void
Schneider’s
open problem
DualParticle
Methods
Whisker
STC folds
Weaving
state list
geometry first
Sweep-like
techniques
Inside-out
techniques
CUBIT Mesh Generation Project
Existence Proofs
Dual cycle
Elimination
& Shelling
THEX
Slicing doughnuts
Whisker Weaving
curve contraction
Recursive
bisection
Linear-size
topology first
Geode
Refinement and
coarsening
Local reconnection
and smoothing
? Hex
Flipping,
dominant?
(planar faces)
Prepare the boundary mesh:
splicing
Geode between
shells
3D Relationship Map
clean-up
construction discovery
Technical History of Hex Mesh Generation
Paving/Plastering
THEX
STC dual structure
rediscovered
Hex-to-void
Schneider’s
open problem
DualParticle
Methods
Whisker
STC folds
Weaving
state list
geometry first
Sweep-like
techniques
Inside-out
techniques
CUBIT Mesh Generation Project
Existence Proofs
Dual cycle
Elimination
& Shelling
THEX
Slicing doughnuts
Whisker Weaving
curve contraction
Recursive
bisection
Linear-size
topology first
Geode
Refinement and
coarsening
Local reconnection
and smoothing
? Hex
Flipping,
dominant?
(planar faces)
Prepare the boundary mesh:
splicing
Geode between
shells
Paving/Plastering
Technical History of Hex Mesh Generation
~12 years ago
 Blacker, Stephenson, Cass, Benzley
 Paving

» 2d advancing front
– Advance based on geometric criteria
– Merge connectivity when fronts collide

CUBIT Mesh Generation Project
Theme: geometry first, connectivity second
Paving
Technical History of Hex Mesh Generation
Paving
•Advancing Front: Begins with front at boundary
•Forms rows or single of elements based on front angles
•Must have even number of intervals for all-quad mesh
(Blacker,92)(Cass,96)
CUBIT Mesh Generation Project
Paving
Technical History of Hex Mesh Generation
Paving
•Advancing Front: Begins with front at boundary
•Forms rows of elements based on front angles
•Must have even number of intervals for all-quad mesh
(Blacker,92)(Cass,96)
CUBIT Mesh Generation Project
Paving
Technical History of Hex Mesh Generation
Form new row
and check for
overlap
Paving
•Advancing Front: Begins with front at boundary
•Forms rows of elements based on front angles
•Must have even number of intervals for all-quad mesh
(Blacker,92)(Cass,96)
CUBIT Mesh Generation Project
Paving
Technical History of Hex Mesh Generation
Insert
“Wedge
”
Paving
•Advancing Front: Begins with front at boundary
•Forms rows of elements based on front angles
•Must have even number of intervals for all-quad mesh
(Blacker,92)(Cass,96)
CUBIT Mesh Generation Project
Paving
Technical History of Hex Mesh Generation
Seams
Paving
•Advancing Front: Begins with front at boundary
•Forms rows of elements based on front angles
•Must have even number of intervals for all-quad mesh
(Blacker,92)(Cass,96)
CUBIT Mesh Generation Project
Paving
Technical History of Hex Mesh Generation
Close Loops
and smooth
Paving
•Advancing Front: Begins with front at boundary
•Forms rows of elements based on front angles
•Must have even number of intervals for all-quad mesh
(Blacker,92)(Cass,96)
CUBIT Mesh Generation Project
Paving
Technical History of Hex Mesh Generation

Interesting / relevant details for later
– Single loop: if seaming, keep two resulting loops even
?
– Multiple loops?

Finesse by having each loop even at all stage
?
CUBIT Mesh Generation Project
Plastering
Technical History of Hex Mesh Generation


~10 years ago, Blacker, Canann, Stephenson
Paving worked so well, why not try paving in
3d? = Plastering
» Start with fixed surface mesh
» Add proto-hexes (faces) one by one, conforming
to bdy
» Seam together nearby points, edges, faces
– Build hexes
CUBIT Mesh Generation Project
Plastering
Technical History of Hex Mesh Generation

Kind of worked
» Could fill up most of space
CUBIT Mesh Generation Project
Plastering
Technical History of Hex Mesh Generation

Difficulties
» Advancing fronts rarely seemed to close
– Seams and Wedges (knives) Blacker et al.
Remove from
front for now
Drive or
collapse later
– Ted Blacker to Pete Murdoch

CUBIT Mesh Generation Project
Find some way of closing up remaining region
3D Relationship Map
clean-up
construction discovery
Technical History of Hex Mesh Generation
Paving/Plastering
THEX
STC dual structure
rediscovered
Hex-to-void
Schneider’s
open problem
DualParticle
Methods
Whisker
STC folds
Weaving
state list
geometry first
Sweep-like
techniques
Inside-out
techniques
CUBIT Mesh Generation Project
Existence Proofs
Dual cycle
Elimination
& Shelling
THEX
Slicing doughnuts
Whisker Weaving
curve contraction
Recursive
bisection
Linear-size
topology first
Geode
Refinement and
coarsening
Local reconnection
and smoothing
? Hex
Flipping,
dominant?
(planar faces)
Prepare the boundary mesh:
splicing
Geode between
shells
Plastering as hex dominant
Technical History of Hex Mesh Generation

Years later
» Knives are ok finite elements, as are pyramids
– Leave knives in?
– vaporware
» Hex-tet interface, fill remaining void with pyramids and tets
– Geode transition template
– Developed but not used

We’ll leave this thread and come back to it later
– Ted Blacker to Pete Murdoch
(Meyers, Stephenson, Benzley)

CUBIT Mesh Generation Project
Find some way of closing up remaining region
3D Relationship Map
clean-up
construction discovery
Technical History of Hex Mesh Generation
Paving/Plastering
THEX
STC dual structure
rediscovered
Hex-to-void
Schneider’s
open problem
DualParticle
Methods
Whisker
STC folds
Weaving
state list
geometry first
Sweep-like
techniques
Inside-out
techniques
CUBIT Mesh Generation Project
Existence Proofs
Dual cycle
Elimination
& Shelling
THEX
Slicing doughnuts
Whisker Weaving
curve contraction
Recursive
bisection
Linear-size
topology first
Geode
Refinement and
coarsening
Local reconnection
and smoothing
? Hex
Flipping,
dominant?
(planar faces)
Prepare the boundary mesh:
splicing
Geode between
shells
STC Dual Structure
Rediscovered for Engr.
Technical History of Hex Mesh Generation

Dual of tri / tet mesh

» is just the dual!
Dual of quad / hex mesh
» is structure of arrangement of curves or surfaces
» Murdoch, 16 September 1993
CUBIT Mesh Generation Project
STC Dual Structure
Rediscovered
Technical History of Hex Mesh Generation

Rediscovered a couple of times
» Physicists: divide high-dimensional space into cubes to
study relativity
– A.B. Zamalodchikov: Tetrahedron equations and the relativistic
S-matrix of straight strings in 2+1 dimensions, Comm. Math.
Phys. 79, 489-505 (1981)
» Mathematics: arrangements
– B. Grünbaum: Arrangements and Spreads, Reg. Conf. Ser. in
Math. no 10, Amer. Math Soc. (1972)
» Topology: geometric
– I. R. Aitchison, J. H. Rubinstein: An introduction to polyhedral
metrics of nonpositive curvature on 3-manifolds, Geometry of
manifolds, ed S Donaldson and C Thomas, Cambridge Univ.
Press 1990
CUBIT Mesh Generation Project
Plastering’s downfall
Technical History of Hex Mesh Generation
» Seaming and connecting together based
on geometry won’t create this nice
structure.
CUBIT Mesh Generation Project
3D Relationship Map
clean-up
construction discovery
Technical History of Hex Mesh Generation
Paving/Plastering
THEX
STC dual structure
rediscovered
Hex-to-void
Schneider’s
open problem
DualParticle
Methods
Whisker
STC folds
Weaving
state list
geometry first
Sweep-like
techniques
Inside-out
techniques
CUBIT Mesh Generation Project
Existence Proofs
Dual cycle
Elimination
& Shelling
THEX
Slicing doughnuts
Whisker Weaving
curve contraction
Recursive
bisection
Linear-size
topology first
Geode
Refinement and
coarsening
Local reconnection
and smoothing
? Hex
Flipping,
dominant?
(planar faces)
Prepare the boundary mesh:
splicing
Geode between
shells
Murdoch’s thesis (1995)
Technical History of Hex Mesh Generation


“The Spatial Twist Continuum (S.T.C.) is a dual representation of
the hexahedral mesh. The S.T.C. method of representing a
mesh inherently captures the global connectivity constraint of all
hexahedral meshes and thereby allows the construction of the
mesh in a robust ordered or random manner”
Ideas
» Geometric curvature and continuity of twist planes
» Envision mostly regular arrangement, with careful attention paid to
few places of irregular connectivity, and how to combine them
together
CUBIT Mesh Generation Project
Murdoch’s vaporware
STC fold algorithm
Technical History of Hex Mesh Generation

“…a valid hexahedral mesh will have a valid S.T.C., the question
is then whether to create the S.T.C. first or use it as a tool to
guide the internal mesh connectivity”
» Suggested creating surface and volume mesh simultaneously by
inserting geometric twist planes one by one, guided by desired
mesh density functions
» Seemed hard
– Could you do that for an assembly? Or just single volume?
– How to define geometry of twist-planes?
– How to ensure dual of surface mesh captured the topology of the
model? Compare to octree, inside out method by Schneiders (which
hadn’t been done yet): ½ time spent on surface isomorphism!
CUBIT Mesh Generation Project
Murdoch’s vaporware
STC fold algorithm
Technical History of Hex Mesh Generation
» To my knowledge, no serious investment in simultaneous surface
and volume approach. They all create the surface mesh, then try to
get the volume mesh
– If it worked for fixed surface mesh, it would solve the assembly problem
– Refinement and coarsening, mesh improvement, flipping, sheet
pushing = after initial arrangement, mostly topology
– Ostenson’s idea
– Thuston’s minimal energy surface (soap bubble) idea to define
geometry
– Get a good surface mesh – visit later




Shepherd’s splicing
Mattias Muller-Hanneman
WW surface mesh fixup
WW add geode templates
» Surface mesh first, then volume, turned out to be hard, too!
CUBIT Mesh Generation Project
3D Relationship Map
clean-up
construction discovery
Technical History of Hex Mesh Generation
Paving/Plastering
THEX
STC dual structure
rediscovered
Hex-to-void
Schneider’s
open problem
DualParticle
Methods
Whisker
STC folds
Weaving
state list
geometry first
Sweep-like
techniques
Inside-out
techniques
CUBIT Mesh Generation Project
Existence Proofs
Dual cycle
Elimination
& Shelling
THEX
Slicing doughnuts
Whisker Weaving
curve contraction
Recursive
bisection
Linear-size
topology first
Geode
Refinement and
coarsening
Local reconnection
and smoothing
? Hex
Flipping,
dominant?
(planar faces)
Prepare the boundary mesh:
splicing
Geode between
shells
Whisker Weaving State List
Technical History of Hex Mesh Generation

Instead of Plastering hexes,
» With so much structure capturing these
implicit constraints, why not start with the
STC, then dualize to get hexes?
» Blacker, Tautges, Mitchell
CUBIT Mesh Generation Project
Whisker Weaving
State List Ideas
Technical History of Hex Mesh Generation

Main ideas of state list Whisker Weaving
» Start with fixed surface mesh
– This defines “boundary loops” of the sheets = twistplanes
green
CUBIT Mesh Generation Project
red
blue
purple
Whisker Weaving
State List Ideas
Technical History of Hex Mesh Generation
» Add dual of hex (STC vertex) from bdy inward,
one at a time
– Compare to plastering…
– Each sheet is 2d: did we reduce this 3d problem to a set
of 2d problems? I think not…although it is easier to
understand and visualize than free-floating primal edges.
crossing = weaving
CUBIT Mesh Generation Project
Whisker Weaving
State List Ideas
Technical History of Hex Mesh Generation

Now it’s different than Plastering
» Try to get good local connectivity
– Connectivity Rules about where to add, when to seam, …
 Easily identify seaming = joining cases
 Rarely join two loops together
» Keep sheets as disk
– Hmm, knives=wedges sometimes show up at the end of chords
where loops self-intersect…try tracing a knife
» Geometric rules: consider geometric dihedral angles of faces
near surface mesh, no flat hexes
» Heroic effort by Tautges to build rules for good
all-hexes and close the weave
– In practice, often unclosed region left-over, like Plastering
– In practice, very complicated sheets
CUBIT Mesh Generation Project
WW complicated sheets
Technical History of Hex Mesh Generation
• One or two sheets going through
most of the surface quads
• Related to expected connectivity
of random graphs on lattice?
• Red = knives (wedges)
edge w/ 10 hexes
CUBIT Mesh Generation Project
3D Relationship Map
clean-up
construction discovery
Technical History of Hex Mesh Generation
Paving/Plastering
THEX
STC dual structure
rediscovered
Hex-to-void
Schneider’s
open problem
DualParticle
Methods
Whisker
STC folds
Weaving
state list
geometry first
Sweep-like
techniques
Inside-out
techniques
CUBIT Mesh Generation Project
Existence Proofs
Dual cycle
Elimination
& Shelling
THEX
Slicing doughnuts
Whisker Weaving
curve contraction
Recursive
bisection
Linear-size
topology first
Geode
Refinement and
coarsening
Local reconnection
and smoothing
? Hex
Flipping,
dominant?
(planar faces)
Prepare the boundary mesh:
splicing
Geode between
shells
Schneiders Open Problem
Technical History of Hex Mesh Generation


Can anyone create an all-hex mesh conforming to the following
surface mesh?
http://www-users.informatik.rwth-aachen.de/~roberts/open.html
» He didn’t really say why you’d want to. But, if you could, then for
any model, you could Plaster a while, add these, fill with tets, then
divide into all-hex mesh.
» Are there “bad” surface meshes that aren’t fillable?
CUBIT Mesh Generation Project
3D Relationship Map
clean-up
construction discovery
Technical History of Hex Mesh Generation
Paving/Plastering
THEX
STC dual structure
rediscovered
Hex-to-void
Schneider’s
open problem
DualParticle
Methods
Whisker
STC folds
Weaving
state list
geometry first
Sweep-like
techniques
Inside-out
techniques
CUBIT Mesh Generation Project
Existence Proofs
Dual cycle
Elimination
& Shelling
THEX
Slicing doughnuts
Whisker Weaving
curve contraction
Recursive
bisection
Linear-size
topology first
Geode
Refinement and
coarsening
Local reconnection
and smoothing
? Hex
Flipping,
dominant?
(planar faces)
Prepare the boundary mesh:
splicing
Geode between
shells
Existence Proofs
Technical History of Hex Mesh Generation

Parallel thread, unknown at the time to
Murdoch, Blacker, Mitchell
» Mac Casel, of PDA, posting to sci-math:
– Under what conditions can you hex-mesh a polyhedron
without modifying its boundary?
» Bill Thurston (world’s best topologist)
– 25 Oct 1993, 39 days after Murdoch rediscovered the
STC, knew about “STC” all along, answers in 1 ½ pages:
– If the dual curves (loops) intersect an even number of
times, then there is a topological hex mesh
– “As for the geometric question: My first guess is it can be
done geometrically if it can be done topologically, but it
looks very tricky…. Which question are you really trying
to answer?”
CUBIT Mesh Generation Project
Existence Proofs
Technical History of Hex Mesh Generation

Mitchell’s proof, very similar to Thurston’s outline, a
couple years later (mid 1995)
»
»
»
»
»
»
Map surface mesh to a sphere (smooth)
Form STC loops – smooth closed curves
Extend loops into closed surfaces
Fix arrangement of surfaces to avoid degenerate elements
Dualize to form hexes
Map back to original object.
CUBIT Mesh Generation Project
Necessary Conditions
Technical History of Hex Mesh Generation
CUBIT Mesh Generation Project
Aside:
What about tet meshing?
Technical History of Hex Mesh Generation


Tet’s have 4 (even) triangles, so all tet meshes are
bounded by an even number of tets, too!
But triangle’s have 3 (odd) edges, so any triangle
surface mesh has same parity of triangles as
bounding edges
» Any triangle mesh of a closed volume is even
1,3
CUBIT Mesh Generation Project
2,4
Any triangle mesh of top has
same parity as
any triangle mesh of bottom.
Hence sum is even
Sufficient Conditions
Technical History of Hex Mesh Generation

Every pair of loops on sphere intersect each other
even number of times

A single loop can self-intersect an even or odd
number of times
» Recall trouble with knives and self-intersecting loops…
CUBIT Mesh Generation Project
Sufficient Conditions
Technical History of Hex Mesh Generation

Topology theorems
» For any single curve with even # self-intersections,
can construct a surface
» For any pair of curves with odd # selfintersections, can construct a surface
» (Proof is constructive: rumor that non-constructive
is false)
CUBIT Mesh Generation Project
Sufficient Conditions
Technical History of Hex Mesh Generation
If you dualized a very coarse arrangement,
you’d get degenerate hexes.
Easy to fix with extra balls.
CUBIT Mesh Generation Project
Sufficient Conditions
Technical History of Hex Mesh Generation
Do similar buffering
sheet next to
surface mesh
CUBIT Mesh Generation Project
Schneiders Open Problem
Closed?
Technical History of Hex Mesh Generation

Using these kind of techniques, a dozen people have
constructed a “mesh” for the open problem.
» One self-intersecting curve, 8 times. 2 curves.
» Non-degenerate meshes have > 100 hexes
» Poor quality
– But positive jacobians last IMR! 1.0E-4)
CUBIT Mesh Generation Project
What about non-spheres?
Technical History of Hex Mesh Generation




“Map surface mesh to a sphere (smooth)”
David Eppstein told me about Thurston’s
proof.
Bill Thurston and I were going to write joint
paper.
Thurston worked a couple days and decided
rigorously extending to non-balls was harder
than it looked, lost interest. So single-author
paper 
CUBIT Mesh Generation Project
What about non-spheres?
Technical History of Hex Mesh Generation

Necessary: even surface mesh and some
edge-chains is necessary. Volume property.


Is it sufficient?
» Nate Folwell showed exponential number of hexes
necessary for knotted holes
CUBIT Mesh Generation Project
What about non-spheres?
Technical History of Hex Mesh Generation

Algorithms
» V.A. Gasilov (Moscow) reduce topology of
non-spheres to collection of spheres.
– “slicing doughnuts”
– Mesh with tets, grow a maximal tet collection
that is a ball and doesn’t self-touch, boundary is
a cut.
» Jeff Erickson’s recent paper “Optimally cutting a
surface into a disk” may be relevant?
CUBIT Mesh Generation Project
3D Relationship Map
clean-up
construction discovery
Technical History of Hex Mesh Generation
Paving/Plastering
THEX
STC dual structure
rediscovered
Hex-to-void
Schneider’s
open problem
DualParticle
Methods
Whisker
STC folds
Weaving
state list
geometry first
Sweep-like
techniques
Inside-out
techniques
CUBIT Mesh Generation Project
Existence Proofs
Dual cycle
Elimination
& Shelling
THEX
Slicing doughnuts
Whisker Weaving
curve contraction
Recursive
bisection
Linear-size
topology first
Geode
Refinement and
coarsening
Local reconnection
and smoothing
? Hex
Flipping,
dominant?
(planar faces)
Prepare the boundary mesh:
splicing
Geode between
shells
Whisker Weave
via Curve Contraction
Technical History of Hex Mesh Generation

Implemented the existence proof for curves w/out
self-intersections, sphere surfaces. (Nate Folwell,
Mitchell)
» To get surface, take loop and extend topologically next to the
remaining void
» Pre-process surface mesh to get rid of self intersections.
– Face collapse and refinement.

Always solves the topology problem (existence proof
is a proof, after all…), but rarely the geometric
problem
– Thurston: “As for the geometric question: My first guess is it
can be done geometrically if it can be done topologically, but it
looks very tricky…. Which question are you really trying to
answer?”
CUBIT Mesh Generation Project
Whisker Weaving
Self-Intersection Removal
Technical History of Hex Mesh Generation

Face collapse

and pillowing
CUBIT Mesh Generation Project
Whisker Weaving
Self-Intersection Removal
Technical History of Hex Mesh Generation

Bad surface mesh quality in practice
CUBIT Mesh Generation Project
Whisker Weaving
via Curve Contraction
Technical History of Hex Mesh Generation

Small, isolated regions of poor quality
» 30 hexes sharing one node
» Revisit later
CUBIT Mesh Generation Project
3D Relationship Map
clean-up
construction discovery
Technical History of Hex Mesh Generation
Paving/Plastering
THEX
STC dual structure
rediscovered
Hex-to-void
Schneider’s
open problem
DualParticle
Methods
Whisker
STC folds
Weaving
state list
geometry first
Sweep-like
techniques
Inside-out
techniques
CUBIT Mesh Generation Project
Existence Proofs
Dual cycle
Elimination
& Shelling
THEX
Slicing doughnuts
Whisker Weaving
curve contraction
Recursive
bisection
Linear-size
topology first
Geode
Refinement and
coarsening
Local reconnection
and smoothing
? Hex
Flipping,
dominant?
(planar faces)
Prepare the boundary mesh:
splicing
Geode between
shells
Dual Cycle Elimination
Technical History of Hex Mesh Generation



Matthias Muller-Hannemann
Similar to curve contraction algorithm
Advantages
» No fix-up, instead prevents bad cases
– Sufficient conditions to eliminate a cycle without
introducing degenerate or flat elements
– (but sometimes not possible to make progress)
» No self-intersecting curves for arrangements
– German CAD tool geometry decomposer into 4-sided
surfaces, and well structured surface mesher
CUBIT Mesh Generation Project
Dual Cycle Elimination
Technical History of Hex Mesh Generation

Basic principle
» Cycles eliminated one by one
– As WW curve contraction
CUBIT Mesh Generation Project
Dual Cycle Elimination
Technical History of Hex Mesh Generation

Cycle elimination order must be a shelling
» With other algebraic rules
– sufficient to avoid degeneracies
» E.g. forbidden cycle
– Maybe a different order is a shelling
CUBIT Mesh Generation Project
Dual Cycle Elimination
Technical History of Hex Mesh Generation

Remove self-intersecting loops ahead of time
» Dice one level
– High element count
» Replace self-intersections with template
– Good quality compared to WW approach
» Works for assembly with shared surfaces
– Doesn’t introduce new self-intersections
CUBIT Mesh Generation Project
Dual Cycle Elimination
Technical History of Hex Mesh Generation

Application success
» Human mandible
– Good quality hex mesh
– Had to do some manual
work to identify good
surface mesh.
CUBIT Mesh Generation Project
3D Relationship Map
clean-up
construction discovery
Technical History of Hex Mesh Generation
Paving/Plastering
THEX
STC dual structure
rediscovered
Hex-to-void
Schneider’s
open problem
DualParticle
Methods
Whisker
STC folds
Weaving
state list
geometry first
Sweep-like
techniques
Inside-out
techniques
CUBIT Mesh Generation Project
Existence Proofs
Dual cycle
Elimination
& Shelling
THEX
Slicing doughnuts
Whisker Weaving
curve contraction
Recursive
bisection
Linear-size
topology first
Geode
Refinement and
coarsening
Local reconnection
and smoothing
? Hex
Flipping,
dominant?
(planar faces)
Prepare the boundary mesh:
splicing
Geode between
shells
Recursive Bisection
Technical History of Hex Mesh Generation

Calvo and Idelsohn in Argentina
» Anyone want to pay for their visit?

Select a cycle for elimination = insert a layer
of hexes
» Instead of layer next to boundary (as WW or
Shelling), it cuts the model in two.
– Layer has connectivity of one of the sides
– Maybe better geometrically?
» Two halves resolved independently
– Topological “monsters” (degeneracies) as WW
CUBIT Mesh Generation Project
Bisection v.s.
Cycle Elimination
Technical History of Hex Mesh Generation
Recursive bisection
CUBIT Mesh Generation Project
Shelling / WW
3D Relationship Map
clean-up
construction discovery
Technical History of Hex Mesh Generation
Paving/Plastering
THEX
STC dual structure
rediscovered
Hex-to-void
Schneider’s
open problem
DualParticle
Methods
Whisker
STC folds
Weaving
state list
geometry first
Sweep-like
techniques
Inside-out
techniques
CUBIT Mesh Generation Project
Existence Proofs
Dual cycle
Elimination
& Shelling
THEX
Slicing doughnuts
Whisker Weaving
curve contraction
Recursive
bisection
Linear-size
topology first
Geode
Refinement and
coarsening
Local reconnection
and smoothing
? Hex
Flipping,
dominant?
(planar faces)
Prepare the boundary mesh:
splicing
Geode between
shells
Dual Particle Methods
Technical History of Hex Mesh Generation

Analyst group at SNL tired of waiting for WW-like approaches, …start
with 2d
» Jung, Dohrmann, Witkowski, Wolfenbarger, Gerstle, Mitchell, Panthaki,
Segalman
» Wanted something more mathematical
» Solve geometric placement and connectivity simultaneously
» Throw dual particles into a domain
– Thought there would be an Euler’s formula that would say how many
» Position them using optimization (minimum energy configuration)
» Connect them up, dualize to get quads
CUBIT Mesh Generation Project
Dual Particle Methods
Technical History of Hex Mesh Generation

Physics forces between particles
» Attraction, repulsion, damping, torque
CUBIT Mesh Generation Project
Dual Particle Methods
Technical History of Hex Mesh Generation

Forces are local, didn’t always close up nicely
» Heuristic local
reconnection
» Particle add &
remove
» Helped in 2d
CUBIT Mesh Generation Project
Dual Particle Methods
Technical History of Hex Mesh Generation

Initial position dual particles based on solution to
Laplace equation.
» Almost as good as paving, when it worked…
random
CUBIT Mesh Generation Project
Laplace
Dual Particle Methods – 3D
Technical History of Hex Mesh Generation

3D - Leung
» Position particles as before
» Write down all the constraints from existence proof
» Solve constraints via discrete optimization
– Add dual geometric constraints as they are violated (no cells interpenetrate)
– Huge running time
– Mostly solved topology of hex mesh. Geometric quality not good enough.
CUBIT Mesh Generation Project
Dual Particle Methods – 3D
Technical History of Hex Mesh Generation
CUBIT Mesh Generation Project
Dual Particle Methods – 3D
Technical History of Hex Mesh Generation
Geometric problems still
- interpenetrations
CUBIT Mesh Generation Project
3D Relationship Map
clean-up
construction discovery
Technical History of Hex Mesh Generation
Paving/Plastering
THEX
STC dual structure
rediscovered
Hex-to-void
Schneider’s
open problem
DualParticle
Methods
Whisker
STC folds
Weaving
state list
geometry first
Sweep-like
techniques
Inside-out
techniques
CUBIT Mesh Generation Project
Existence Proofs
Dual cycle
Elimination
& Shelling
THEX
Slicing doughnuts
Whisker Weaving
curve contraction
Recursive
bisection
Linear-size
topology first
Geode
Refinement and
coarsening
Local reconnection
and smoothing
? Hex
Flipping,
dominant?
(planar faces)
Prepare the boundary mesh:
splicing
Geode between
shells
Linear-size Hex Meshes
Technical History of Hex Mesh Generation

Eppstein
» Mitchell-Thurston algorithms produce too many
hexes
» n = number of surface quads
O(n) on edge
O(n1/2) on edge
O(n) on each side
CUBIT Mesh Generation Project
O(n) on face
Linear-Size Hex Meshes
Technical History of Hex Mesh Generation

Steps
Original shape
CUBIT Mesh Generation Project
Hex-shaped
boundary tiles
THex interior
O(n) tets
Linear-Size Hex Meshing
Technical History of Hex Mesh Generation

For each tile
» Fill with hexes
– Matching to create a couple of types of tiles, all
satisfy sufficient conditions of existence proofs
– Solves topology problem,
not geometry problem
– Anybody figured out
exactly how to fill?
I didn’t…like Schneiders
open problem
CUBIT Mesh Generation Project
3D Relationship Map
clean-up
construction discovery
Technical History of Hex Mesh Generation
Paving/Plastering
THEX
STC dual structure
rediscovered
Hex-to-void
Schneider’s
open problem
DualParticle
Methods
Whisker
STC folds
Weaving
state list
geometry first
Sweep-like
techniques
Inside-out
techniques
CUBIT Mesh Generation Project
Existence Proofs
Dual cycle
Elimination
& Shelling
THEX
Slicing doughnuts
Whisker Weaving
curve contraction
Recursive
bisection
Linear-size
topology first
Geode
Refinement and
coarsening
Local reconnection
and smoothing
? Hex
Flipping,
dominant?
(planar faces)
Prepare the boundary mesh:
splicing
Geode between
shells
Geode - motivation
Technical History of Hex Mesh Generation
Recall linear-hex
 Recall Plastering, hex to void

CUBIT Mesh Generation Project
Geode Motivation
Technical History of Hex Mesh Generation

3d problem

How to conformally interface in 3d?
CUBIT Mesh Generation Project
Geode
Technical History of Hex Mesh Generation

There is a transition template that someone
(me) has filled with ok-quality hexes
» Based on constructing sheets, interleaving
Tets
divided into 4 hexes
Hexes
divided into 8
CUBIT Mesh Generation Project
Geode – 2d
Technical History of Hex Mesh Generation
CUBIT Mesh Generation Project
Geode – 3d
Technical History of Hex Mesh Generation


Hex side
Tet side
CUBIT Mesh Generation Project
Geode – 3d
Technical History of Hex Mesh Generation
CUBIT Mesh Generation Project
Geode between shells
Technical History of Hex Mesh Generation

Ideal template has scaled jacobian 0.26
» Comparable to THex mesh

In practice, almost never get well-shaped layer
» Good for single layer on planar surface…
hex
thex
geode
THex
geode
mesh with hexes
CUBIT Mesh Generation Project
Geode
Technical History of Hex Mesh Generation

Why geode and not other templates?
» Self-intersections? Then why not 4-triangle geode:
» We know a few things that make a surface mesh
hard to fill with hexes, but we still don’t know how
to make it easy.
CUBIT Mesh Generation Project
Geode Eliminates
Self-Intersecting Loops!
Technical History of Hex Mesh Generation

Unpublished
» Recall Dual Cycle Elimination
– 1. Dice
– 2. Replace self-int with template
» Instead,
– 2. Add one geode template (not layer)
– Remaining region has no self-intersection
– Conjecture: after dicing, every surface mesh of any volume admits a
compatible, linear-size, positive jacobian hexahedral mesh.
Inside of volume
CUBIT Mesh Generation Project
Geode and Linear-Size
Technical History of Hex Mesh Generation


What’s so special about dicing?
Is quality going to be that good?
» Doubt it would be that practicle
» Revisit loops that are self-nearby later
CUBIT Mesh Generation Project
3D Relationship Map
clean-up
construction discovery
Technical History of Hex Mesh Generation
Paving/Plastering
THEX
STC dual structure
rediscovered
Hex-to-void
Schneider’s
open problem
DualParticle
Methods
Whisker
STC folds
Weaving
state list
geometry first
Sweep-like
techniques
Inside-out
techniques
CUBIT Mesh Generation Project
Existence Proofs
Dual cycle
Elimination
& Shelling
THEX
Slicing doughnuts
Whisker Weaving
curve contraction
Recursive
bisection
Linear-size
topology first
Geode
Refinement and
coarsening
Local reconnection
and smoothing
? Hex
Flipping,
dominant?
(planar faces)
Prepare the boundary mesh:
splicing
Geode between
shells
Prepare the Boundary Mesh
Technical History of Hex Mesh Generation

Recall WW, Shelling, and Geode
» approaches to preparing the surface mesh to
admit a (good quality?) hex mesh
CUBIT Mesh Generation Project
Algorithms - splicing
Technical History of Hex Mesh Generation

Mesh Editing and Splicing
Initial Grid
CUBIT Mesh Generation Project
Remove self intersecting chord –
Leave boundary nodes fixed
Algorithms - splicing
Technical History of Hex Mesh Generation

Mesh Editing and Splicing
Intermediate mesh – needs new
chord to reconcile boundary
CUBIT Mesh Generation Project
New non self intersecting chord
inserted to reconcile boundary nodes
Surface Mesh
Modification - Splicing
Technical History of Hex Mesh Generation
The procedure:
Undesirable mesh
interval
Mesh from W76 AFF
CUBIT Mesh Generation Project
Remove unwanted quads
Completed Mesh
Fixing Surface Mesh for WW
Technical History of Hex Mesh Generation
• No self-intersections, but pretty convoluted
• Remove it!
CUBIT Mesh Generation Project
Fixing Surface Meshes
Technical History of Hex Mesh Generation

In progress
» Automation

How general of a method will it be?
» What’s properties are really sufficient for
the surface mesh?
CUBIT Mesh Generation Project
3D Relationship Map
clean-up
construction discovery
Technical History of Hex Mesh Generation
Paving/Plastering
THEX
STC dual structure
rediscovered
Hex-to-void
Schneider’s
open problem
DualParticle
Methods
Whisker
STC folds
Weaving
state list
geometry first
Sweep-like
techniques
Inside-out
techniques
CUBIT Mesh Generation Project
Existence Proofs
Dual cycle
Elimination
& Shelling
THEX
Slicing doughnuts
Whisker Weaving
curve contraction
Recursive
bisection
Linear-size
topology first
Geode
Refinement and
coarsening
Local reconnection
and smoothing
? Hex
Flipping,
dominant?
(planar faces)
Prepare the boundary mesh:
splicing
Geode between
shells
Where are we today?
Technical History of Hex Mesh Generation

Summary
» Nothing yet is
– Boundary mesh conforming
– Automatic
– Good quality
– Applicable to all geometries

CUBIT Mesh Generation Project
Matthias very good for mandible-like problems
Best hopes
Technical History of Hex Mesh Generation
Suspect that only certain surface
meshes admit a good-quality mesh
 Combined geom & topology techniques
 Difficult to get tight necessary and
sufficient conditions -> sufficient might
be doable

CUBIT Mesh Generation Project
Current Activity
Technical History of Hex Mesh Generation

Show why hexes are hard
» Flipping

Fix existing mesh in unstructured way
» Past efforts not promising

Semi-structured sweep-like techniques
» Grafting, Coopering

Improve existing mesh in semi-structured way
» Looks promising

Surface and volume all-at-once looking better
» Mesh cutting
CUBIT Mesh Generation Project
3D Relationship Map
clean-up
construction discovery
Technical History of Hex Mesh Generation
Paving/Plastering
THEX
STC dual structure
rediscovered
Hex-to-void
Schneider’s
open problem
DualParticle
Methods
Whisker
STC folds
Weaving
state list
geometry first
Sweep-like
techniques
Inside-out
techniques
CUBIT Mesh Generation Project
Existence Proofs
Dual cycle
Elimination
& Shelling
THEX
Slicing doughnuts
Whisker Weaving
curve contraction
Recursive
bisection
Linear-size
topology first
Geode
Refinement and
coarsening
Local reconnection
and smoothing
? Hex
Flipping,
dominant?
(planar faces)
Prepare the boundary mesh:
splicing
Geode between
shells
Flipping
Technical History of Hex Mesh Generation
Bern and Eppstein
 Goals

» Find set of operations sufficient for all
desired topological changes
» Relate local improvement to problems of
mesh existence
» Computational Geometry contributions to
meshing, welcome complement to
engineering approaches
CUBIT Mesh Generation Project
Flipping Triangle Meshes
Technical History of Hex Mesh Generation

Triangle meshes
» Two types of flips
» Equivalent to gluing tetrahedron on top of existing
triangle mesh, take non-touching tris
» Flip graph is connected
CUBIT Mesh Generation Project
Flipping Quads
Technical History of Hex Mesh Generation

Flip graph is connected
» Up to parity
» For disk surfaces
CUBIT Mesh Generation Project
no
no
Flipping Tetrahedra
Technical History of Hex Mesh Generation

Flip graph connected for
» Topological tets, unknown for geometric tets
» Swap top and bottom of 4d simplex
CUBIT Mesh Generation Project
Flipping Hexes
top and bottom of 4D cuboid
Technical History of Hex Mesh Generation
CUBIT Mesh Generation Project
Flipping Hexes
Technical History of Hex Mesh Generation

Some flips preserve flatness of faces
» Does warped boundary mesh imply
warped hexes?
» Beyond flatness, can we someday
determine the maximum quality of a hex
mesh matching a given surface mesh?
CUBIT Mesh Generation Project
3D Relationship Map
clean-up
construction discovery
Technical History of Hex Mesh Generation
Paving/Plastering
THEX
STC dual structure
rediscovered
Hex-to-void
Schneider’s
open problem
DualParticle
Methods
Whisker
STC folds
Weaving
state list
geometry first
Sweep-like
techniques
Inside-out
techniques
CUBIT Mesh Generation Project
Existence Proofs
Dual cycle
Elimination
& Shelling
THEX
Slicing doughnuts
Whisker Weaving
curve contraction
Recursive
bisection
Linear-size
topology first
Geode
Refinement and
coarsening
Local reconnection
and smoothing
? Hex
Flipping,
dominant?
(planar faces)
Prepare the boundary mesh:
splicing
Geode between
shells
Local Reconnection
and Smoothing
Technical History of Hex Mesh Generation

Knupp’s untangle smoothing
» Is able to get positive jacobians in interior of
meshes that we know admit them
– Was unable to untangle WW meshes
– Issues



Provable?
Perfect implementation?
Idea
» Combine reconnection and smoothing for
unstructured 3d hex meshes
– As done in every other class of unstructured meshers…
CUBIT Mesh Generation Project
Local Reconnection
and Smoothing
Technical History of Hex Mesh Generation



Find local area of poor quality
Classify type of problem, possible improvements
Find best improvement
»
»
»
»

Swap local connectivity via primitives
Locally smooth
Assess quality
Undo
Apply best improvement, if any
CUBIT Mesh Generation Project
Local Reconnection
and Smoothing
Technical History of Hex Mesh Generation

Flips, but dual interpretation
» Might not be flips (non-parity preserving)
for non-ball volumes
Moving sheets
to untangle
Also sheet pushing
ideas for local element
size control
CUBIT Mesh Generation Project
Local Reconnection
and Smoothing
Technical History of Hex Mesh Generation
Inserting sheets
Connecting sheets
CUBIT Mesh Generation Project
Local Reconnection
and Smoothing
Technical History of Hex Mesh Generation


Most-untangled sheets not always the best quality
Wasn’t able to improve specific small examples, by
any manual means
» Just push problem around

Process didn’t work
» Search space very large
» Progress possible but not monotonic? (unlike quad, tri, tet)
– Space of valid hex meshes too coarse, not well connected?
» Progress not possible?
CUBIT Mesh Generation Project
3D Relationship Map
clean-up
construction discovery
Technical History of Hex Mesh Generation
Paving/Plastering
THEX
STC dual structure
rediscovered
Hex-to-void
Schneider’s
open problem
DualParticle
Methods
Whisker
STC folds
Weaving
state list
geometry first
Sweep-like
techniques
Inside-out
techniques
CUBIT Mesh Generation Project
Existence Proofs
Dual cycle
Elimination
& Shelling
THEX
Slicing doughnuts
Whisker Weaving
curve contraction
Recursive
bisection
Linear-size
topology first
Geode
Refinement and
coarsening
Local reconnection
and smoothing
? Hex
Flipping,
dominant?
(planar faces)
Prepare the boundary mesh:
splicing
Geode between
shells
Sweep Relationship Map
2D
Technical History of Hex Mesh Generation
1-1 Sweeping / Projection / Rotation (lots)
Sweeping Node
Placement Strategies
2.75D
2.5D
M-1 Sweeping (several)
CUBIT Mesh Generation Project
Cooper Tool
Good Source Surface
Mesh Strategies
M-M Sweeping
Inside-out
3d
Multi-axis
Cooper Tool
Grafting
Sweeping Types
Technical History of Hex Mesh Generation
One-to-One Sweep
Many-to-One Sweep
CUBIT Mesh Generation Project
Many-to-Many
Multisweep & Coopering
MultiSweep
Technical History of Hex Mesh Generation
•Create virtual surfaces w/ imprints
•Surface mesh the combination
•Sweep the underlying volumes
CUBIT Mesh Generation Project
MultiSweep
Technical History of Hex Mesh Generation
Image of target curves
partitions source surfaces
Image created using
• matrix (affine transformation)
• or weighted winslow smoothing
one mesh layer at a time
The image is a mesh image
depends on resolution, premesh
CUBIT Mesh Generation Project
Multisweep – in progress
Technical History of Hex Mesh Generation
CUBIT Mesh Generation Project
Cooper Tool
Technical History of Hex Mesh Generation

Like multisweep
» Nice language of caps, barrels
» Different projection methods
– All layers at once
» Intersection of projections different
–…
CUBIT Mesh Generation Project
Multi-Axis Coopering
Technical History of Hex Mesh Generation
Blacker and Miyoshi
 Break model into tree

CUBIT Mesh Generation Project
Multi-Axis Coopering
Technical History of Hex Mesh Generation

“Cut” section to sweep in new direction
» Cuts can intersect and overlap - tricky
CUBIT Mesh Generation Project
Mesh grafting
Technical History of Hex Mesh Generation
CUBIT Mesh Generation Project
3D Relationship Map
clean-up
construction discovery
Technical History of Hex Mesh Generation
Paving/Plastering
THEX
STC dual structure
rediscovered
Hex-to-void
Schneider’s
open problem
DualParticle
Methods
Whisker
STC folds
Weaving
state list
geometry first
Sweep-like
techniques
Inside-out
techniques
CUBIT Mesh Generation Project
Existence Proofs
Dual cycle
Elimination
& Shelling
THEX
Slicing doughnuts
Whisker Weaving
curve contraction
Recursive
bisection
Linear-size
topology first
Geode
Refinement and
coarsening
Local reconnection
and smoothing
? Hex
Flipping,
dominant?
(planar faces)
Prepare the boundary mesh:
splicing
Geode between
shells
Refinement and Coarsening
Shepherd, Borden,…
Technical History of Hex Mesh Generation
Boundary Refinement
Sheet Refinement
& Cleaving
CUBIT Mesh Generation Project
Mesh Coarsening
Sheet Insertion
Technical History of Hex Mesh Generation

Modify mesh to capture geometry,
through STC sheets
CUBIT Mesh Generation Project
Mesh Cutting
& Sheet Insertion
Technical History of Hex Mesh Generation
The problem is to fit the mesh on the left to the
volume on the right. The rest of the volumes in the
model can then be swept away from this volume.
CUBIT Mesh Generation Project
Step 1: Capturing the first
imprint.
Technical History of Hex Mesh Generation
CUBIT Mesh Generation Project
Step 2: Capturing the other
two imprints
Technical History of Hex Mesh Generation
CUBIT Mesh Generation Project
Step 3: Capturing the
Cutouts
Technical History of Hex Mesh Generation
CUBIT Mesh Generation Project
Mesh Cutting
Technical History of Hex Mesh Generation

Questions
»
»
»
»
Can we do this for assemblies?
How wild of shapes can it handle?
Compare vs. Schneiders thesis
Compare vs. Murdoch thesis
CUBIT Mesh Generation Project
Conclusions
Technical History of Hex Mesh Generation

Technical history of unstructured meshing
ideas
» Common themes
» Lots left to do and explore
– Enough background ideas to start research
» Probably not much low-hanging fruit left
– Hope of practical tools before hex meshing is obsolete
» Gap between theory (understanding) and practice
– closing a bit
CUBIT Mesh Generation Project