Parallel Tetrahedral Mesh Generation
Total Page:16
File Type:pdf, Size:1020Kb
Parallel Tetrahedral Mesh Generation Célestin Marot October 2, 2020 Thesis submitted in partial fulfillment of the requirements for the Ph.DDegree in Engineering Sciences Thesis Committee Advisor Jean-François Remacle UCLouvain Jury Christophe Geuzaine ULiège Philippe Chatelain UCLouvain Jonathan Lambrechts UCLouvain Hang Si WIAS Jeanne Pellerin Total Chairperson Thomas Pardoen UCLouvain Institute of Mechanics, Materials and Civil Engineering i Remerciements Je tiens tout d’abord à remercier Jean-François Remacle, pour la confiance qu’il m’a accordé durant ces quatre années. La plupart des professeurs n’ auraient pas parié sur moi: je n’avais vraiment d’excellentes notes que pour les projets qui consistaient à créer des programmes informatiques. Jean-François a reconnu cette qualité de développeur, sans porter d’importance à ma moyenne somme toute moyenne. Il m’a alors proposé de faire un doctorat sous son aile. L’oiseau en question est un bon vivant, ayant une passion pour le rock et qui, même s’il n’a jamais l’air vraiment sérieux, arrive à superviser efficacement une douzaine de chercheurs. Il faut dire que l’ERC (pour European Research Council) advanced grant que celui-ci venait de dégoter lui a permis d’avoir un nid de cigognes remplissant quasiment l’Euler1. Je remercie J-F pour tous ces moments, toutes ces conférences, toutes ces découvertes, tout ce savoir dont j’ai pu profiter, et pour son enthousiasme et son intérêt envers ma recherche. Je remercie grandement Pierre-Alexandre, Matthieu et David. Commençons d’abord par les deux énergumènes du bureau d’en face: P-A et Matthieu. P-A est un garçon sociable, qui est toujours accueillant et aime bavarder. Je le remercie d’avoir écouté si attentivement quand je décrivais les problèmes de maillage que je rencontrais durant ce doctorat. Ce dernier partage son bureau avec Matthieu, entre qui ils peuvent parler une bonne demi-journée pendant que j’écoute dis- crètement depuis mon bureau de l’autre coté du couloir. Puisqu’on laisse nos portes ouvertes, je peux fixer Matthieu des yeux et lui asséner un regard interro- gateur dès que j’entends que mon prénom intervient dans leur conversation. Je suis parfois obligé de passer le pas de leur porte pour pouvoir asséner le même regard interrogateur à P-A. Pour entretenir la bonne humeur de mes deux com- pères, je ne manquerai pas de lâcher une bonne blague bien graveleuse. Même s’il ne daignera pas le concéder, Matthieu est sans doute celui qui rigole leplus à mes blagues, après quoi il me reproche souvent leur caractère déplacé. Je le remercie donc pour sa relative hilarité qui me permet de garder une estime hy- pertrophiée de mon humour. P-A n’est pas en reste pour ce qui est du rire, le sien peut s’entendre à des kilomètres. Avec un peu de chance, ce son d’alarme rameute David, l’irréductible chercheur du bureau d’à côté. Ne vous méprenez pas, même si David est déjà marié, et même s’il vous dit que “de son temps, les chercheurs mettaient une tarte pour leur arrivée, leur départ et leur anniver- saire” (ce que j’approuve totalement), David n’a commencé sa thèse que deux ans avant moi. Son visage imberbe confirme qu’il n’est pas si vieux que ça.Si je me permets d’être dur avec ces braves gaillards, c’est parce qu’ils savent que 1notre labo de recherche, nommé d’après le célèbre mathématicien Leonhard Euler ii je suis rarement sérieux, et que ce sont des réels amis avec qui je ne me suis jamais pris la tête. Je tiens aussi à remercier mes collègues de bureau: Ange et sa bonne humeur communicative, Ruiyang et son caractère mystérieux qui me fait sourire. Je remercie également Alexandre et Arthur, avec qui j’ai partagé des très bons moments lors des conférences à Stuttgart et Buffalo. Ensuite, viennent mes autres (anciens) collègues: Kilian, Valentin, Philippe, Jovana, Maxence, Chris- tos, Nathan, Ruili, Alexis, Amaury. Je vous remercie tous pour les parties de whist, de rikiki et de belote. Bien sûr, je remercie les membres du jury pour leur attention, leurs commen- taires et leurs questions qui ont toujours été très pertinentes et justes. Pour les citer: Christophe Geuzaine, Jonathan Lambrechts, Jeanne Pellerin, Philippe Chatelain, Hang Si, mon promoteur Jean-François Remacle et le président du jury Thomas Pardoen. Je remercie plus particulièrement Jeanne, avec quij’ai écrit mon premier vrai papier. Je souhaite aussi remercier Christophe pour son temps passé sur Gmsh et pour m’avoir aidé concernant l’intégration de mes travaux dans son logiciel. Je remercie également mes potos, Martin et Baptiste, toujours présents pour discuter et s’amuser même si on n’entretiens aucun contact pendant plusieurs mois. On peut toujours s’inviter sur un coup de tête et passer, comme toujours, de bons moments. Mention bonus pour Lucas et David, qui feraient bien de montrer leur tête après cette pandémie, et Mr Mond de l’autre coté du Mond. Enfin, je remercie mes parents pour m’avoir élevé et accompagné toutau long de ma vie et ma sœurette pour son affection. Je remercie aussi mes deux filleuls, Briac et Eliot ainsi que mon neveu Renan pour être aussi mignons et attachants. Je remercie aussi ma belle famille qui m’accueille toujours extrême- ment chaleureusement. Finalement, je remercie la meilleure de toute, mon amour, Julie, qui m’a toujours soutenu, partage ma vie et me supporte tous les jours. Ton sourire vaut mille doctorats pour moi. Cette thèse ferait 20 pages en plus si je devais citer tout ce pourquoi je dois te remercier, je vais donc con- denser ça en trois mots: je t’aime. Célestin Marot Contents Contents iii List of publications vii 1 Introduction 1 1.1 The finite element method . 2 1.2 The different types of mesh . 3 1.3 Delaunay-based tetrahedral mesh generation . 6 1.4 The need for speed . 12 1.5 Previous work . 13 2 Hilbert curve 21 2.1 Row-major and column-major order . 21 2.2 Locality of a curve . 23 2.3 Mapping floating-points to k-bit integers . 24 2.4 Bending space . 27 2.5 Z-order curve . 29 2.6 2D Hilbert curve . 31 2.7 3D Hilbert curve . 41 2.8 Other Implementation of Hilbert ordering . 44 2.9 SFC partitioning . 46 3 Delaunay Triangulation 51 3.1 Bowyer-Watson algorithm . 52 3.2 Algorithm overview . 53 3.3 Mesh data structure . 56 3.4 Fast spatial sorting . 60 3.5 Improving Cavity: spending less time in geometric predicates 62 3.6 Improving DelaunayBall: spending less time computing ad- jacencies . 65 3.7 About a ghost . 68 iii iv CONTENTS 3.8 Serial implementation performances . 69 4 Parallel Delaunay 73 4.1 Related work . 73 4.2 A parallel strategy based on partitions . 74 4.3 Partitioning and re-partitioning with Moore curve . 76 4.4 Ensuring termination . 77 4.5 Data structures . 79 4.6 Critical operations . 80 4.7 Parallel implementation performances . 81 4.8 Addendum: research journey . 85 5 Mesh refinement 89 5.1 Small and medium size test cases on standard laptops . 91 5.2 Large mesh generation on many core machine . 92 6 Mesh Improvement 99 6.1 Mesh improvement operations . 101 6.2 Small Polyhedron Reconnection . 105 6.3 Growing SPR cavity . 112 6.4 Mesh improvement schedule . 114 7 Mesh generator’s performance 119 7.1 Benchmarks . 123 8 Conclusion 129 Bibliography 131 Preface This manuscript mostly targets researchers and developers—in fields related to computational geometry and more particularly mesh generation—seeking for good ideas in order to accelerate their programs. Therefore, this manuscript does not intend to teach all the little intricacies of modern computers. It is as- sumed that the reader already knows the meaning of cache levels, RAM, regis- ters, SIMD, threads etc. and is familiar with the C language and its compilation process. However, most of this manuscript can still be understood with a good understanding of common data-structure and algorithms. The math level re- quired is kept pretty low. Simple images and code examples are preferred over heavy mathematical notations. This manuscript is mainly based on previously published work, or worktobe published. More specifically, Chapter 3, Chapter 4 and Chapter 5, on Delaunay, parallel Delaunay and mesh refinement are, for the most part, a transcription of our paper entitled “One machine, one minute, three billion tetrahedra”[2][81]. The content of Chapter 6 and Chapter 7 is mainly taken from two papers: • Reviving the Search for Optimal Tetrahedralizations[4][83] • Quality tetrahedral mesh generation with HXT[3][82]. The topic tackled in Chapter 2 is the efficient generation of Hilbert curve based ordering. It is placed just after the introduction because the Hilbert curve is a cornerstone of this thesis, on which several building blocks will be constructed in the subsequent chapters. Looking back, implementing the 3D Hilbert curve efficiently has been one of the most wonderful programming ex- perience one can have. We hope to transmit our love for this beautiful fractal beast. v List of publications [1] Célestin Marot, Jeanne Pellerin, Jonathan Lambrechts, and Jean-François Remacle. Toward one billion tetrahedra per minute. Procedia Engineering, page 5, 2017. [2] Célestin Marot, Jeanne Pellerin, and Jean-François Remacle. One machine, one minute, three billion tetrahedra. International Journal for Numerical Methods in Engineering, 117(9):967–990, 2019. [3] Célestin Marot and Jean-François Remacle. Quality tetrahedral mesh gen- eration with HXT, aug 2020. [4] Célestin Marot, Kilian Verhetsel, and Jean-François Remacle. Reviving the Search for Optimal Tetrahedralizations.