Table Of ContentUNIVERSIDAD 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:y la implementación de algoritmos de geometrıa computacional en general y de generación de mallas en . en gran medida del problema simulado (su geometrıa, el método de cálculo utilizado, el tipo de los operadores (por ejemplo, con gcc esto ocurre al utilizar el argumento de compilación -O3)