UNIVERSIDAD NACIONAL DEL LITORAL FacultaddeIngenier´ıayCienciasH´ıdricas CentrodeInvestigacio´ndeMe´todosComputacionales ´ GEOMETRIA COMPUTACIONAL APLICADA ´ A LA GENERACION EN PARALELO DE MALLAS DE ELEMENTOS FINITOS Pablo Jose´ Novara TesisremitidaalComite´ Acade´micodelDoctorado comopartedelosrequisitosparalaobtencio´n delgradode DOCTORENINGENIERIA Mencio´nMeca´nicaComputacional dela UNIVERSIDADNACIONALDELLITORAL 2016 Comisio´ndePosgrado,FacultaddeIngenier´ıayCienciasH´ıdricas,CiudadUniversitaria,Paraje”ElPozo”, S3000,SantaFe,Argentina. Agradecimientos En primer lugar, quiero agradecer a mi familia. Especialmente a mis pa- dres por su ejemplo y por haberme dado la posibilidad elegir mi carrera y de dedicarme al estudio sin otras preocupaciones. Tambi´en a mi esposa, Natalia, por su apoyo incondicional en esta u´ltima y dif´ıcil etapa, sin el cual habr´ıa sido imposible completarla. Deseo agradecer adem´as a mi director, Nestor Calvo, por compartir su experiencia, por todo el tiempo dedicado a tantos debates, discusiones y revisiones, y por confiar en mi para llevar adelante este proyecto. Y a mi codirector, Norberto Nigro, por haber desviado mi inter´es hacia este tema de tesis, aportando su conocimiento sobre el campo de aplicaci´on de estos desarrollos y su valiosa ayuda en la revisi´on de este texto. Finalmente, a todos mis compan˜eros de los dos lugares de trabajo en los que se desarrollaron estas ideas (FICH-UNL y CIMEC) quienes de una u otra manera contribuyeron a este logro, tanto desde lo t´ecnico como desde lo humano. En particular a Juan Gimenez por el tiempo dedicado a probar los desarrollos en sus primeras versiones y por aportar valiosos casos de prueba para la validaci´on de los mismos. Resumen En esta tesis se presentan dos algoritmos para la tetraedrizaci´on de un conjunto de puntos. El primero de ellos toma como entrada solo un conjunto de puntos y genera una malla de tetraedros para el interior de la envolvente convexa (convex-hull) de dicho conjunto. La malla resultante es una malla Delaunay, y el algoritmo generado es robusto tanto frente a las ambigu¨edades conocidas del criterio Delaunay, como frente a los errores num´ericos debidos a la precisi´on finita con que se realizan los c´alculos. El segundo algoritmo agrega a los datos de entrada un conjunto de conectividades de frontera (una malladesuperficiecerrada)quedeber´aserrespetadoenlamalladesalidaque se genere. Esta malla entonces cubrir´a, tambi´en con elementos tetra´edricos, el volumen delimitado por la malla de frontera de entrada, aunque no todos sus elementos respetar´an la condici´on Delaunay, dado que en caso de con- flicto se respeta la frontera impuesta por sobre la condici´on Delaunay. Esta variaci´on del algoritmo permite adem´as mejorar la calidad de los elementos generados, evitando la formaci´on de slivers, elementos de muy baja calidad muy frecuentes en mallas Delaunay en 3D. Todos los algoritmos presentados mantienen invariante el conjunto de puntos, por lo que los problemas encon- trados se resuelven sin agregar, quitar ni mover puntos. Estas limitaciones son comunes en ciertas operaciones de interpolaci´on y en algunos m´etodos de simulaci´on por part´ıculas, donde las part´ıculas se corresponden con los nodos de la malla. Para ambos m´etodos de tetraedrizaci´on se proponen estrategias de paralelizaci´on, tanto para arquitecturas de hardware de memoria compar- tida,comoparaarquitecturasdehardwaredememoriadistribuidaeh´ıbridas. Sediscutenlasventajasydesventajasdecadauna,losproblemasencontrados y las posibles soluciones, las diferencias importantes en las implementaciones para cada tipo de arquitectura, y finalmente se presentan resultados y se analiza la eficiencia y escalabilidad de estas implementaciones. Se describen tambi´en en este trabajo todas las estructuras de datos utilizadas en ambos m´etodos y los algoritmos asociados a las mismas (v´alidos tanto en 2D como en 3D, y tanto en su versi´on serie como paralela), junto con las justificaciones correspondientes para cada una de estas elecciones. Abstract Thisthesispresentstwoalgorithmsforparallelgenerationofunstructured all-tetrahedral meshes for a given set of points. The first method generates a Delaunay mesh for the interior of the point set’s convex hull. This algorithm is robust in the sense that it solves all the problems related to numerical errors and Delaunay criterion’s ambiguities. The second method adds to the input a fixed boundary mesh, and generates a Delaunay-dominant mesh for the domain defined by such boundary. This generated mesh fits the given boundary mesh connectivities and also improves mesh quality avoiding the generation of slivers, low-quality elements very common in Delaunay mes- hes. None of this methods will neither add nor move or remove nodes. This makes these algorithms suitable for many common interpolation operations, and for some particle-based simulations where nodes represents particles. Parallel implementations for both shared memory and distributed memory architectures are proposed for the two mesh generation problems presented. Advantages and disadvantages of each one, all problems found and the pro- posed solutions, and the major differences in the implementations for the two most usual kinds of parallel hardware architectures are described in this thesis. Finally, some results are presented and the parallel scalability and efficiency of the method is discussed. This thesis also includes descriptions for all the necessary data structures for the current implementations and the associated algorithms (for 2D and 3D, and both serial and parallel versions), along with all important details to justify those elections. ´ Indice general 1. Introducci´on 1 1.1. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2. Organizaci´on de la tesis . . . . . . . . . . . . . . . . . . . . . 6 2. Generaci´on de mallas 9 2.1. Generaci´on vs. triangulaci´on . . . . . . . . . . . . . . . . . . . 12 2.2. Triangulaci´on/Tetraedrizaci´on Delaunay . . . . . . . . . . . . 13 2.3. Generaci´on de triangulaciones Delaunay . . . . . . . . . . . . 17 2.4. Generaci´on de mallas y triangulaciones en paralelo . . . . . . . 20 3. Programaci´on en Paralelo 23 3.1. Concurrencia y paralelismo . . . . . . . . . . . . . . . . . . . . 24 3.1.1. Tipos de paralelismo . . . . . . . . . . . . . . . . . . . 25 3.2. Arquitecturas de hardware paralelo . . . . . . . . . . . . . . . 27 3.3. Programaci´on en paralelo . . . . . . . . . . . . . . . . . . . . 30 3.3.1. Mecanismos de sincronizaci´on . . . . . . . . . . . . . . 31 3.4. Consideraciones de bajo nivel . . . . . . . . . . . . . . . . . . 35 3.4.1. CPU-bound vs memory-bound . . . . . . . . . . . . . . 36 3.4.2. False sharing . . . . . . . . . . . . . . . . . . . . . . . 38 3.4.3. Mecanismos de espera durante un bloqueo . . . . . . . 39 3.4.4. Efecto de las optimizaciones en la compilaci´on . . . . . 40 3.4.5. Gesti´on del heap del proceso . . . . . . . . . . . . . . . 41 i ´ ii INDICE GENERAL 3.5. Medidas de desempen˜o . . . . . . . . . . . . . . . . . . . . . . 41 3.5.1. Aplicaci´on a la generaci´on de mallas . . . . . . . . . . 43 4. Ordenamiento espacial 45 4.1. Listas vs. Vectores . . . . . . . . . . . . . . . . . . . . . . . . 45 4.1.1. Acceso . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.1.2. Inserci´on/eliminaci´on . . . . . . . . . . . . . . . . . . . 47 4.1.3. Gesti´on de la memoria . . . . . . . . . . . . . . . . . . 48 ´ 4.2. Arboles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.2.1. Octrees . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.2.2. Alternating Digital Tree . . . . . . . . . . . . . . . . . 54 4.3. Grillas Regulares . . . . . . . . . . . . . . . . . . . . . . . . . 61 4.4. Recorrido en orden utilizando estructuras de ordenamiento es- pacial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 4.5. Estructuras de datos lock-free . . . . . . . . . . . . . . . . . . 64 5. Triangulaci´on de un conjunto de puntos 67 5.1. Algoritmo DeWall . . . . . . . . . . . . . . . . . . . . . . . . . 67 5.2. Control del error num´erico . . . . . . . . . . . . . . . . . . . . 72 5.2.1. Reordenamientodeoperandosenlaimplementaci´onde expresiones algebraicas . . . . . . . . . . . . . . . . . . 75 5.2.2. Ajuste din´amico de una tolerancia num´erica para com- paraciones entre resultados reales . . . . . . . . . . . . 77 5.3. Estructuras de datos . . . . . . . . . . . . . . . . . . . . . . . 79 5.3.1. Representaci´on de nodos y conectividades . . . . . . . 79 5.3.2. Estructuras auxiliares y de ordenamiento espacial . . . 83 5.3.3. Generalizaci´on de las estructuras de ordenamiento y operaciones auxiliares . . . . . . . . . . . . . . . . . . . 89 5.4. Resumen del algoritmo propuesto . . . . . . . . . . . . . . . . 90 5.5. Estructuras de datos . . . . . . . . . . . . . . . . . . . . . . . 90 5.6. Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Description: