Foreword ixIntroduction xiChapter 1 Data and Basic Techniques 11.1 Basic data structures and basic techniques 11.1.1 Basic data structures 21.1.2 Basic techniques 221.2 Internal data structures 291.2.1 What should be stored in an internal structure and how? 291.2.2 Internal structures, method by method 311.3 External data structures 341.4 Data structures and memory access 36Chapter 2 Mesh Transformations, Patching, Merging and Immersion 392.1 Geometric transformations 402.1.1 Conventional geometric transformations 402.1.2 Cutting a non-simplicial element into simplices 462.1.3 Decomposition into simplices of a non-simplicial mesh 482.1.4 Decompositions for a complying connection 562.1.5 Decomposition of a high-degree element 572.2 Reconnection 582.3 Merging 652.4 Immersion 77Chapter 3 Renumbering and Memory 813.1 Vertex and node renumbering 823.1.1 Numbering and storage of a matrix in profile mode 823.1.2 Numbering and algorithm performance 843.1.3 Some methods for node renumbering 863.2 Renumbering of the elements 923.2.1 Motivation examples 923.2.2 Some methods for renumbering elements 923.2.3 Renumbering and mesh partition 943.3 Some examples 98Chapter 4 High-Degree Mesh Visualization 1054.1 Geometric operators and topological operators 1064.1.1 Geometric operators 1064.1.2 Topological operators 1074.2 Representation of curved meshes 1074.3 Quick introduction to OpenGL and to the design of a graphics software program 1164.4 Some examples 136Chapter 5 Visualization of a Solution Field Related to a High-Degree Mesh 1455.1 Element recursive subdivision 1465.2 Recursive subdivision of a solution field 1525.3 Classic or adaptive tessellation 1545.4 Toward the design of graphic software based on OpenGL 1565.4.1 Palette definition 1575.4.2 Cut definition 1605.4.3 "Pixel-exact" or "almost pixel-exact" representation 1695.4.4 Normals and shading 1705.4.5 Level lines and surfaces and application to "wireframe" plots 1715.4.6 Representation of non-scalar functions 1765.4.7 Simplified scheme for a graphic software program 1775.5 Some examples 181Chapter 6 Meshes and Finite Element Calculations 1856.1 From continuous formulation to discrete notation 1876.2 Calculation of an elementary matrix 1896.2.1 The special case of the first-degree triangle 1906.2.2 A generic notation for all elements 1916.2.3 The generic notation for the four chosen elements and heat equation 1976.2.4 Lagrange triangle of degree 1 with three nodes 1976.2.4.1 Lagrange quadrilateral of degree 1 × 1 with four nodes 2016.2.4.2 Straight-sided Lagrange triangle of degree 2 with six nodes 2096.2.4.3 Lagrange isoparametric (curved) triangle of degree 2 with six nodes 2186.2.4.4 In practice 2306.2.5 The generic notation for the four chosen elements, elasticity equation 2336.2.6 Lagrange triangle of degree 1 with three nodes 2336.2.6.1 The other three elements 2356.2.6.2 In practice 2356.3 Matrix or right-hand side assembly 237Chapter 7 Meshes and Finite Volume Calculation 2437.1 Presentation of the finite volume method with a first-order problem 2437.1.1 Time discretization 2447.1.2 Spatial discretization 2457.2 Finite volume methods for two-dimensional Euler equations 2497.2.1 Spatial discretization 2507.2.1.1 Finite volume cell definition 2517.2.1.2 Calculation of upwind conservative fluxes 2527.2.2 Time discretization 2567.3 From theory to practice 2577.3.1 Data structures 2577.3.2 Resolution algorithms 2597.4 Numerical examples 260Chapter 8 Examples Through Practice 2658.1 Reading, writing and manipulating a mesh 2668.2 Programming a hashing algorithm 2698.3 One point insertion operator per cavity, application to image compression 2728.4 Retrieving a connected component 2818.5 Exercises on metrics 283Chapter 9 Some Algorithms and Formulas 2939.1 Bernstein polynomials and Bézier forms 2939.1.1 Bernstein polynomials 2939.1.2 Bézier forms 2949.1.3 Formulas (lengths, surface areas and volumes) for curved elements 2969.2 Localization problems in a curved mesh 3019.2.1 Current point parameter values 3019.2.2 Localization 3059.3 Space-filling curves 3069.3.1 A Z-curve 3069.3.2 A Hilbert curve 309Conclusion and Perspectives 313Bibliography 315Index 319
Paul Louis George is Emeritus Director of Research at the French Institute for Research in Computer Science and Automation (Inria), France, and one of the most internationally recognized experts in meshing.Frédéric Alauzet and Adrien Loseille are researchers at Inria, both with particular expertise in meshing adaptation, error estimators, solution methods (advanced solvers in fluid mechanics), remeshing methods and high order methods, among other things.Loïc Maréchal is a long-time collaborator at Inria as an engineer and a leading authority on hexahedra. He is also an expert on data structures and problems related to memory management.