1 Outline of this talk Part of the survey presentation from Steve Owen (Owen IMR’05)...

Preview:

Citation preview

1

Outline of this talk

• Part of the survey presentation from Steve Owen (Owen IMR’05)– Terminology & overview of mesh generation – Algorithms based on triangulation and

tetrahedralization

• Qianqian Fan’s iso2mesh package (ISBI’09 paper)– Mesh generation work-flow – Surface mesh extraction, using CGAL calgsurf

function (CGAL: Computational Geometry Algorithms Library)

– Volume mesh generation; two options• CGAL mesh generation • TetGen developed by Si and Gaertner (IMR’2005).

2

Steve Owen

An Introduction to Mesh Generation AlgorithmsAn Introduction to Mesh Generation Algorithms

Sandia is a multiprogram laboratory operated by Sandia Corporation, a Lockheed Martin Company, for the United States Department of Energy’s National Nuclear Security Administration under contract DE-AC04-94AL85000.

3

Overview

• The Simulation Process• Geometry Basics• The Mesh Generation

Process• Meshing Algorithms

– Tri/Tet Methods– Quad/Hex Methods– Hybrid Methods– Surface Meshing

• Algorithm Characteristics

4

Geometry

vertices: x,y,z location

5

Geometry

vertices: x,y,z location

curves: bounded by two vertices

6

Geometry

vertices: x,y,z location

surfaces: closed set of curves

curves: bounded by two vertices

7

Geometry

vertices: x,y,z location

surfaces: closed set of curves

volumes: closed set of surfaces

curves: bounded by two vertices

8

Geometry

body: collection of volumes

vertices: x,y,z location

surfaces: closed set of curves

volumes: closed set of surfaces

curves: bounded by two vertices

9

Geometry

body: collection of volumes

vertices: x,y,z location

volumes: closed set of surfaces

surfaces: closed set of curves

loops: ordered set of curves on surface

curves: bounded by two vertices

10

Geometry

body: collection of volumes

vertices: x,y,z location

volumes: closed set of surfaces

loops: ordered set of curves on surface

surfaces: closed set of curves (loops)

coedges: orientation of curve w.r.t. loop

curves: bounded by two vertices

11

Geometry

body: collection of volumes

vertices: x,y,z location

volumes: closed set of surfaces (shells)

surfaces: closed set of curves (loops)

loops: ordered set of curves on surface

coedges: orientation of curve w.r.t. loop

shell: oriented set of surfaces comprising a volume

curves: bounded by two vertices

12

Geometry

body: collection of volumes

vertices: x,y,z location

volumes: closed set of surfaces (shells)

surfaces: closed set of curves (loops)

loops: ordered set of curves on surface

coedges: orientation of curve w.r.t. loop

shell: oriented set of surfaces comprising a volume

curves: bounded by two vertices

13

Geometry

body: collection of volumes

vertices: x,y,z location

volumes: closed set of surfaces (shells)

surfaces: closed set of curves (loops)

loops: ordered set of curves on surface

coedges: orientation of curve w.r.t. loop

shell: oriented set of surfaces comprising a volume

coface: oriented surface w.r.t. shell

curves: bounded by two vertices

14

Mesh Generation Process

Mesh Vertices

Mesh Curves

Verify/correct for sizing criteria on

curves

Set up sizing function for

surface

Mesh surface

Set up sizing function for

volume

Mesh volume

Smooth/Cleanup surface mesh

Verify Quality

Verify Quality

Smooth/Cleanup volume mesh

For each surface

For each volume

The Mesh Generation Process

Apply Manual Sizing, Match

Intervals

15

Meshing Algorithms

• Structured mesh • all interior nodes of the mesh have an equal number of adjacent elements. • Typically quad or hexahedral meshes.

• Unstructured mesh• allow any number of elements to meet at a single node.• Triangle and tetrahedral meshes are commonly thought (though quadrilateral and hexahedral meshes can also be unstructured)

16

Meshing Algorithms

17

Tri/Tet Methods

http://www.simulog.fr/mesh/gener2.htm

OctreeAdvancing FrontDelaunay

http://www.ansys.com

18

Octree/Quadtree

•Define initial bounding box (root of quadtree)•Recursively break into 4 leaves per root to resolve geometry (until the desired resolution is reached)•Find intersections of leaves with geometry boundary•Mesh each leaf using corners, side nodes and intersections with geometry•Delete Outside•(Yerry and Shephard, 84), (Shepherd and Georges, 91)

19

Octree/Quadtree

QMG, Cornell University

20

Octree/Quadtree

QMG, Cornell University

21

Advancing Front

A B

C

•Begin with boundary mesh - define as initial front•For each edge (face) on front, locate ideal node C based on front AB

22

Advancing Front

A B

Cr

•Determine if any other nodes on current front are within search radius r of ideal location C (Choose D instead of C)

D

23

Advancing Front

•Book-Keeping: New front edges added and deleted from front as triangles are formed•Continue until no front edges remain on front

D

24

Advancing Front

•Book-Keeping: New front edges added and deleted from front as triangles are formed•Continue until no front edges remain on front

25

Advancing Front

•Book-Keeping: New front edges added and deleted from front as triangles are formed•Continue until no front edges remain on front

26

Advancing Front

•Book-Keeping: New front edges added and deleted from front as triangles are formed•Continue until no front edges remain on front

27

Advancing Front

A

B

C

•Where multiple choices are available, use best quality (closest shape to equilateral)•Reject any that would intersect existing front•Reject any inverted triangles (|AB X AC| > 0)•(Lohner,88;96)(Lo,91)

r

28

Advancing Front

Ansys, Inc.www.ansys.com

29

Delaunay

TriangleJonathon Shewchukhttp://www-2.cs.cmu.edu/~quake/triangle.html

Tetmesh-GHS3DINRIA, Francehttp://www.simulog.fr/tetmesh/

30

Delaunay

circumcircle

Empty Circle (Sphere) Property: No other vertex is contained within the circumcircle (circumsphere) of any triangle (tetrahedron)

31

Delaunay Triangulation: Obeys empty-circle (sphere) property

Delaunay

32

Non-Delaunay Triangulation

Delaunay

33

Lawson Algorithm•Locate triangle containing X•Subdivide triangle•Recursively check adjoining triangles to ensure empty-circle property. Swap diagonal if needed•(Lawson,77)

X

Given a Delaunay Triangulation of n nodes, How do I insert node n+1 ?

Delaunay

34

X

Lawson Algorithm•Locate triangle containing X•Subdivide triangle•Recursively check adjoining triangles to ensure empty-circle property. Swap diagonal if needed•(Lawson,77)

Delaunay

35

Bowyer-Watson Algorithm•Locate triangle that contains the point•Search for all triangles whose circumcircle contain the point (d<r)•Delete the triangles (creating a void in the mesh)•Form new triangles from the new point and the void boundary•(Watson,81)

X

r cd

Given a Delaunay Triangulation of n nodes, How do I insert node n+1 ?

Delaunay

36

X

Bowyer-Watson Algorithm•Locate triangle that contains the point•Search for all triangles whose circumcircle contain the point (d<r)•Delete the triangles (creating a void in the mesh)•Form new triangles from the new point and the void boundary•(Watson,81)

Given a Delaunay Triangulation of n nodes, How do I insert node n+1 ?

Delaunay

37

•Begin with Bounding Triangles (or Tetrahedra)

Delaunay

38

Delaunay

•Insert boundary nodes using Delaunay method (Lawson or Bowyer-Watson)

39

Delaunay

•Insert boundary nodes using Delaunay method (Lawson or Bowyer-Watson)

40

Delaunay

•Insert boundary nodes using Delaunay method (Lawson or Bowyer-Watson)

41

Delaunay

•Insert boundary nodes using Delaunay method (Lawson or Bowyer-Watson)

42

Delaunay

•Insert boundary nodes using Delaunay method (Lawson or Bowyer-Watson)

43

Delaunay

•Recover boundary•Delete outside triangles•Insert internal nodes

44

Delaunay

Node Insertion

Grid Based•Nodes introduced based on a regular lattice•Lattice could be rectangular, triangular, quadtree, etc…•Outside nodes ignored

h

45

Delaunay

Node Insertion

Grid Based•Nodes introduced based on a regular lattice•Lattice could be rectangular, triangular, quadtree, etc…•Outside nodes ignored

46

Delaunay

Node Insertion

Centroid•Nodes introduced at triangle centroids•Continues until edge length, hl

47

Delaunay

Node Insertion

Centroid•Nodes introduced at triangle centroids•Continues until edge length, hl

l

48

Delaunay

Node Insertion

Circumcenter (“Guaranteed Quality”)•Nodes introduced at triangle circumcenters•Order of insertion based on minimum angle of any triangle•Continues until minimum angle > predefined minimum

)30( (Chew,Ruppert,Shewchuk)

49

Delaunay

Circumcenter (“Guaranteed Quality”)•Nodes introduced at triangle circumcenters•Order of insertion based on minimum angle of any triangle•Continues until minimum angle > predefined minimum )30(

Node Insertion (Chew,Ruppert,Shewchuk)

50

Delaunay

Advancing Front•“Front” structure maintained throughout•Nodes introduced at ideal location from current front edge

Node Insertion

A B

C

(Marcum,95)

51

Delaunay

Advancing Front•“Front” structure maintained throughout•Nodes introduced at ideal location from current front edge

Node Insertion(Marcum,95)

52

Delaunay

Voronoi-Segment•Nodes introduced at midpoint of segment connecting the circumcircle centers of two adjacent triangles

Node Insertion(Rebay,93)

53

Delaunay

Voronoi-Segment•Nodes introduced at midpoint of segment connecting the circumcircle centers of two adjacent triangles

Node Insertion(Rebay,93)

54

Delaunay

Edges•Nodes introduced at along existing edges at l=h•Check to ensure nodes on nearby edges are not too close

Node Insertion

h

h

h

(George,91)

55

Delaunay

Edges•Nodes introduced at along existing edges at l=h•Check to ensure nodes on nearby edges are not too close

Node Insertion(George,91)

56

Delaunay

Boundary Constrained

Boundary Intersection•Nodes and edges introduced where Delaunay edges intersect boundary

57

Delaunay

Boundary Constrained

Boundary Intersection•Nodes and edges introduced where Delaunay edges intersect boundary

58

Delaunay

Boundary Constrained

Local Swapping•Edges swapped between adjacent pairs of triangles until boundary is maintained

59

Delaunay

Boundary Constrained

Local Swapping•Edges swapped between adjacent pairs of triangles until boundary is maintained

60

Delaunay

Boundary Constrained

Local Swapping•Edges swapped between adjacent pairs of triangles until boundary is maintained

61

Delaunay

Boundary Constrained

Local Swapping•Edges swapped between adjacent pairs of triangles until boundary is maintained

62

Boundary Constrained

Local Swapping•Edges swapped between adjacent pairs of triangles until boundary is maintained

(George,91)(Owen,99)

63

DELAUNAY IN 3D

64

DELAUNAY: INSERT A POINT

66

Qianqian Fan’s iso2mesh package

67

Iso2mesh: major components

• Surface mesh extraction (function name: vol2mesh)• provide by CGAL

• 3D mesh generation (function name: surf2mesh)• provided by CGAL

• 3D mesh generation (function name: tetgen) • provided by Si and Gaertner; published in IMR’05• uses constrained Delaunary tetrahedral

• other routines • surface mesh repairing• surface smoothing• sub-region labeling and hole specification

68

Surface mesh extraction

69

Major surface mesh generators

• Afont:an advancing-front triangulation algorithm that makes use of a guidance field to determine triangle sizing that is adaptive to the curvature of the input surface, but also maintains smooth gradation to prevent poor quality triangles from being created.

• Marching Cubes: the algorithm proceeds through the scalar field, taking eight neighbor locations at the corners of each cube within the base mesh, and determining the triangles needed to represent the part of the isosurface that passes through each cube. The individual triangles are fused into the desired surface.

• Macet• Dual Contouring • CGAL: surface mesh generation technique based on

Delaunay triangulation to build triangulated surfaces that are topologically equivalent and geometrically close to the original surface

70

Surface mesh extraction in CGAL (function name: vol2mesh)

• The meshing algorithm is based on the notion of the restricted Delaunay triangulation. – Basically the algorithm computes a set of sample points on

the surface, and extract an interpolating surface mesh from the three dimensional triangulation of these sample points.

– Points are iteratively added to the sample, as in a Delaunay refinement process, until some size and shape criteria on the elements of the surface mesh are satisfied.

• The size and shape criteria guide the behavior of the refinement process and control its termination.

• Meshing Criteria, Guarantees and Variations– The guarantees on the output mesh depend on the mesh

criteria. Theoretical guarantees are given in [BO05]. – First, the meshing algorithm is proved to terminate if the

lower bound on facets angles is not bigger than 30 degrees. – Second…

71

3D volumetric mesh generation (function name: surf2mesh)

72

Major Tetrahedral (volume) mesh generators

• TetGen: corresponds to a suite of techniques to generate different tetrahedral meshes from three-dimensional point sets or domains with piecewise linear boundaries.

• Uses Constrained Delaunay Tetrahedralization (CDT) (based on the incremental edge flipping algorithm) from the isosurface mesh.

• NetGen: NetGen is an automatic 3D advancing-front tetrahedral mesh generator that accepts input from constructive solid geometry (CSG) or boundary representations (BRep) from the STL file format.

• CAMAL:…

73

•3D mesh generation (function name: surf2mesh)

• Boundary and subdivision surfaces are either smooth or piecewise smooth surfaces, formed with planar or curved surface patches.

• The meshing engine used in this mesh generator is based on Delaunay refinement [Che93, Rup95, She98b].

• It uses the notion of restricted Delaunay triangulation to approximate 1-dimensional curve segments and surface patches [BO05].

74

3D mesh generation (function name: tetgen)

75

Iso2mesh: other routines