Algoritmo para la fase de empaquetamiento del método de elementos distintos
70
0
0
Texto completo
(2) Dictamen. Hago constar que el presente trabajo fue realizado en la Universidad Central “Marta Abreu” de Las Villas como parte de la culminación de los estudios de la especialidad de Ciencia de la Computación, autorizando a que el mismo sea utilizado por la institución, para los fines que estime conveniente, tanto de forma parcial como total y que además no podrá ser presentado en eventos ni publicado sin la autorización de la Universidad.. Firma del autor. Los abajo firmantes, certificamos que el presente trabajo ha sido realizado según acuerdos de la dirección de nuestro centro y el mismo cumple con los requisitos que debe tener un trabajo de esta envergadura referido a la temática señalada.. Firma del tutor. Firma del tutor. Firma del jefe del Laboratorio.
(3) Pensamiento. Pensamiento We can't solve problems by using the same kind of thinking we used when we created them. Albert Einstein..
(4) Dedicatoria. Dedicatoria A mi madre. A mis hermanos. A mi padre..
(5) Agradecimientos. A mi madre por su infito cariño y confianza en todos estos años. A mis hermanos por estar siempre a mi lado. A Mery por su constante preocupación. A mi familia toda que siempre ha mostrado su afecto y apoyo. A todos mis amigos por hacer de todos estos años valgan la pena… En especial: A mi hermano Yunier con quien siempre tuve el honor de contar. Al Möver por su ayuda en todo momento. A Honey, mi amiga y consejera. Al Curra, Michel, Alexander (Sasha), Raimel (el quake), Dayron y Yoandy (el Chino) de quienes recibí apoyo en disímiles ocasiones. A Lisette por toda la ayuda prestada. A todos los compañeros de estudio del Laboratorio VLIR. A Roberto, el Muke, Recarey y especialmente a mis tutores Yordanis e Irvin que siempre me apoyaron durante la realización de este trabajo. A Amaury que a pesar de estar lejos siempre brindo su ayuda. A los ex integrantes del grupo IZEL y especialmente a Alcides que fue mi guía e inspiración en todos estos años..
(6) Resumen. I. Resumen Se presenta un código para la fase de empaquetamiento del Método de Elementos Distintos, método que en el mundo cobra cada vez más fuerza en lo que se refiere al trabajo con materiales discontinuos. Dicho código tiene implementados algoritmos geométricos de avance frontal, los cuales son eficientes. En la presente investigación se muestran solamente resultados para partículas circulares y esféricas, aunque el código se puede extender fácilmente a cualquier otro tipo de partícula; con lo cual esta biblioteca alcanza un alto nivel de generalidad y posibilidades de aplicación en problemas de la mecánica computacional y en la ingeniería. Adicionalmente se realiza un estudio estadístico de algunos parámetros que caracterizan las geometrías obtenidas..
(7) Abstract. II. Abstract A code for the packing generation phase of the Distinct Element Method is presented, being this method extensively used throughout the world when dealing with discontinuous materials. Such code has implemented geometrical advancing front algorithms which are efficient. In the present research are shown only results for circular and spherical particles, although the code can easily be extended to any other kind of particle. That’s why this library has a high level of generality and possibilities of application in problems of the computational mechanics and the engineering. Additionally a statistical study of some parameters has been performed, characterizing the geometries obtained..
(8) Índice. III. Índice Introducción .................................................................................................................................................. 1 Capítulo 1:. Marco Teórico. ................................................................................................................... 5. 1.1.. Estado del arte de la modelación de medios discontinuos. ........................................................... 5. 1.2.. Introducción. ................................................................................................................................. 5. 1.3.. Enfoques de modelación de los medios discretos. ........................................................................ 6. 1.4.. Método de elementos discretos: parte geométrica. ....................................................................... 8. 1.5.. Algoritmos de generación del Método de Elementos Discretos.................................................... 9. 1.6.. Algoritmos de Búsqueda de Contactos. ...................................................................................... 16. 1.7.. Estudios estadísticos de los empaquetamientos .......................................................................... 18. 1.8.. Conclusiones Parciales ................................................................................................................ 20. Capítulo 2:. Algoritmo de generación de partículas ........................................................................... 21. 2.1.. Algoritmo general ....................................................................................................................... 21. 2.2.. Estimado de cantidad de partículas para una geometría. ............................................................. 23. 2.3.. Estructura de datos para el almacenamiento de las partículas. .................................................... 25. 2.4.. Algoritmo de búsqueda de vecindad. .......................................................................................... 27. 2.4.1.. Algoritmo No Binary Search(NBS). ....................................................................................... 27. 2.4.2.. Definición de las celdas. ......................................................................................................... 29. 2.4.3.. Ubicación de la geometría dentro del espacio de celdas. ........................................................ 29. 2.5.. Obtención de una nueva partícula. .............................................................................................. 33. 2.6.. Herramientas Desarrolladas. ....................................................................................................... 36. 2.7.. Conclusiones Parciales ................................................................................................................ 42. Capítulo 3: 3.1.. Análisis de Resultados ...................................................................................................... 43. Desempeño del algoritmo implementado .................................................................................... 43. 3.1.1.. Comparación en cuanto a la fracción de volumen del empaquetamiento ............................... 43. 3.1.2.. Comparación en cuanto a la velocidad de generación ............................................................ 45. 3.1.3.. Curvas de tiempo de los empaquetamientos ........................................................................... 48. 3.2.. Caracterización estadística de los empaquetamientos obtenidos. ............................................... 49. 3.2.1.. Distribución espacial de los centros de las partículas ............................................................. 49. 3.2.2.. Comprobación de la Aleatoriedad de los empaquetamientos ................................................. 50. 3.2.3.. Comprobación de la Homogeneidad de los empaquetamientos ............................................. 52. 3.2.4.. Comprobación de la Isotropía micro y macro de los empaquetamientos ............................... 52. 3.3.. Conclusiones Parciales ................................................................................................................ 53. Conclusiones................................................................................................................................................ 54 Recomendaciones........................................................................................................................................ 55 Bibliografía.................................................................................................................................................. 56 Anexo 1:. Diagramas de Clases ............................................................................................................. 57.
(9) Introducción. 1. Introducción Antecedentes En el accionar del Centro de Estudio de Métodos Numéricos para la Ingeniería se ha investigado en la fase de empaquetamiento del Método de Elementos Distintos y se han desarrollando varias formulaciones matemáticas. Como resultado está formulado un algoritmo de generación o llenado de un cuerpo geométrico con partículas para dos dimensiones utilizando una variante del conocido Método de la cuerda (Valera, 2007) (Brito, 2007).. Planteamiento del Problema El Método de Elementos Distintos consta de varias fases. Entre ellas es de particular interés para el presente trabajo la fase de empaquetamiento, donde se procede al llenado de los cuerpos geométricos con partículas de diferentes formas, las cuales deben encontrarse lo más cercanas posible y no debiendo solaparse ningún par de ellas.. Preguntas de investigación ¿Es posible la implementación de forma eficiente del algoritmo de la fase de empaquetamiento del MED? ¿Puede dicha implementación ser empleada en estudios prácticos de materiales desde el punto de vista micro-estructural? Hipótesis Es posible obtener empaquetamientos densos con algoritmos de avance frontal que puedan ser empleados en estudios prácticos de materiales desde el punto de vista micro-estructural..
(10) Introducción. 2. Objetivo General Desarrollar. una. implementación. computacional. para. la. fase. de. empaquetamiento del MED, que pueda ser empleada en estudios sistémicos del comportamiento físico-matemático sobre el estado tenso-deformacional de un material desde un punto de vista micro-estructural; para dar solución a distintos problemas ingenieriles.. Objetivos específicos. Extender e implementar de manera eficiente el mencionado algoritmo de generación para 2-dimensiones y 3-dimensiones que garanticen robustez y generalización para poder ir incorporando y experimentar con diferentes tipos de partículas. Realizar un estudio estocástico de los empaquetamientos de partículas obtenidos con el método implementado. Implementar el algoritmo para el caso de empaquetamiento de círculos y esferas en 2D y 3D respectivamente.. Motivaciones de carácter Teórico. Recientemente se cuenta con algoritmos constructivos de empaquetamiento de partículas como (Brito, 2007), en cuya investigación se logra un alto grado de generalización en cuanto al tipo de partícula. Sin embargo los métodos que generan las nuevas partículas para el empaquetamiento dependen de la dimensión del espacio, lo mismo sucede con los predicados de interioridad de partículas, de los que se podría contar con un método más óptimo que si bien no afecta el empaquetamiento resultante, sí aumenta el tiempo de ejecución del algoritmo. En la presente tesis se hace una nueva propuesta de este tipo de algoritmo. Otro de los aportes teóricos de la investigación se centra en el hecho de que la mayoría de las formulaciones actuales no presentan un algoritmo de.
(11) Introducción. 3. avance frontal, con un enfoque puramente geométrico, que sea independiente del tipo de partículas.. Además con dichas implementaciones se podrán estudiar de forma más precisa los estados tensionales y deformacionales a un nivel microscópico, posibilitando detectar la aparición de micro-fisuras y discontinuidades en los materiales que son el comienzo de las cadenas de fallos estructurales y la formación de microzonas de plastificación que culminan desafortunadamente a nivel macroscópico en el fallo estructural. Este tipo de estudio no se puede realizar con los métodos clásicos convencionales, aspecto que delimita el valor científico de la investigación.. Motivaciones de carácter Metodológico. El valor metodológico de la investigación se evidencia a través de dos aspectos fundamentales: El desarrollo de una implementación de generación del medio con un carácter general que posibilita empaquetar por el mismo procedimiento diversos tipos de partículas. Contribución a la evolución del método de elementos de partículas donde se establecen las peculiaridades para emplear diversos tipos, aspecto que sienta la bases para nuevas geometrías.. Motivaciones de carácter práctico El valor práctico de esta investigación está fundamentado porque se dispondrá de una implementación que permitirá el llenado de cuerpos geométricos con la finalidad de empaquetar partículas basadas en modelos matemáticos estudiados en el grupo de investigación en cuestión. Desde el punto de vista práctico ingenieril este aspecto es de singular importancia ya que la obtención de los empaquetamientos de partículas es una fase importante del MED, el cual permite estudiar los mecanismos de fallos geotécnicos y estructurales a escala.
(12) Introducción. 4. micro-mecánica y a su vez posibilita resolver, bajo estas condiciones, diversos problemas de ingeniería.. Existen productos de software del Método de Elementos Distintos que tienen ya incorporada la fase de generación del medio de partículas, sin embargo estos pueden mejorar en su eficiencia. En la presente tesis se implementa una solución computacional para la simulación del llenado de cuerpos geométricos con círculos (caso 2D) y esferas (caso 3D), con la ventaja de que el código puede extenderse cómodamente a cualquier otro tipo de partícula.. Viabilidad de la investigación Los primeros métodos de la fase de empaquetamiento en el MED se realizaban mediante la propia simulación física del conjunto de elementos discretos sin que existiera un método especializado en lograr el empaquetamiento. Recientemente se han desarrollado métodos que simulan la generación del medio en una fase previa lo que es mucho menos costoso como se puede constatar en [1,2,3,5,6]. Estos métodos tienen como inconveniente que no son lo suficientemente eficientes.. Estructura del Documento Este Trabajo de Diploma esta dividido en 3 que describen las características del proyecto a realizar. El primer capítulo recoge los antecedentes de los métodos de empaquetamientos, sus características y deficiencias. En el segundo capítulo se detalla la implementación del algoritmo y los componentes fundamentales de su estructura interna. En el tercer capítulo se hace una validación del algoritmo mediante una serie de pruebas estadísticas. Los anexos estarán dirigidos a brindar detalles la estructura interna de las clases empleadas en la implementación del algoritmo..
(13) Capítulo 1: Marco Teórico. 5. Capítulo 1: Marco Teórico. 1.1.. Estado. del. arte. de. la. modelación. de. medios. discontinuos. 1.2.. Introducción.. Tradicionalmente, la ciencia de los materiales estudia el comportamiento de los materiales a diferentes escalas con el objetivo de observar y cuantificar los procesos químico-físicos a niveles micro-mecánicos, moleculares y atómicos. La modelación multi-escala del material se encarga de representar estos procesos hasta el nivel microscópico. El primer paso consiste en descomponer el espectro en varios sub-rangos. Desde el punto de vista de la caracterización y del diseño de materiales ingenieriles, se distinguen las siguientes cuatro escalas: Nivel métrico: A este nivel se resuelven problemas prácticos de ingeniería civil, mecánica y aeroespacial tales como el análisis y diseño de edificaciones, presas y de elementos de contención, elementos mecánicos, etc. Nivel milimétrico La mayoría de las propiedades de los materiales se obtienen a partir de pruebas de laboratorio que se realizan a este nivel. Esto constituye la macro escala, un nivel en el cual los materiales se pueden considerar homogéneos después de haber homogeneizado el efecto de los elementos micro-estructurales en dichas propiedades “efectivas”. Nivel micrométrico Procesos micro-estructurales tales como micro-defectos, el tamaño de grano de poli-cristales y los productos de la hidratación de materiales cementosos se observan a esta escala. En la terminología corriente, esto constituye la meso-escala, un nivel en el cual se pueden considerar los materiales como compuestos heterogéneos. Ejemplos.
(14) Capítulo 1: Marco Teórico. 6. de esto son la matriz del metal y la mezcla de hormigón, en las cuales las partículas se unen a la matriz mediante interfases cohesivosfriccionales. Nivel nanométrico Procesos moleculares y atómicos tienen lugar a este nivel. Varios mecanismos de difusión de humedad y de compuestos químicos agresivos se consideran activos a este nivel (transporte de iones y compuestos químicos,…). Se debe señalar que las relaciones causaefecto llegan en algunos casos más allá de la mecánica Newtoniana, especialmente cuando procesos sub-atómicos se consideran a nivel de la mecánica cuántica. Generalmente, los materiales ingenieriles se consideran microscópicamente homogéneos y con frecuencia isotrópicos. En la mayoría de los casos son adecuadas estas suposiciones, ya que los procesos de degradación progresiva solo pueden ser explicados considerando características micro-estructurales del material.. De ahí la necesidad de caracterizar cada constituyente y las. condiciones de enlace en las interfases, además de la morfología de las meso y micro-estructuras específicas. Estos tipos de estudios son muy complejos y costosos computacionalmente, a pesar del desarrollo alcanzado por los medios de cómputo y de la búsqueda de algoritmos eficientes para lograr rapidez en las simulaciones numéricas que se emplean para investigar estos procesos a niveles micro, meso, y macroscópicos en tres dimensiones y en el dominio del tiempo.. 1.3.. Enfoques de modelación de los medios discretos.. Se pueden considerar dos grandes campos de estudio en el análisis de los medios discontinuos: por una parte los métodos de cálculo para simular dichos medios y por otra la creación de modelos constitutivos para las juntas o interfases. Dada la complejidad de estos problemas es necesario recurrir a.
(15) 7. Capítulo 1: Marco Teórico. métodos aproximados para la resolución de los mismos. Los métodos de cálculo más empleados son el Método de los Elementos Finitos (MEF), el Método de los Elementos de Contorno (MEC), el Método de los Elementos Distintos (MED) o métodos que incluyen combinaciones de los anteriores.. Los métodos ideados originalmente para el análisis de medios continuos se han extendido para tener en cuenta las discontinuidades. En el MEF se consideran elementos especiales para representar las juntas o interfase. En este método otra vertiente de trabajo ha sido el desarrollo de elementos finitos especiales que se insertan dentro del campo de las discontinuidades fuertes y que emplean funciones de interpolación especiales. La otra vertiente de trabajo ha sido el desarrollo de la mecánica de la fractura. El MEC modela discontinuidades embebidas en un medio continuo. En cualquiera de estos dos métodos se asumen. generalmente. pequeñas. deformaciones.. Si. se. considera. un. comportamiento no lineal del material se requiere el uso de técnicas iterativas.. Las técnicas del MED son las formulaciones que mejor describen el comportamiento de los medios discontinuos. La génesis de estas técnicas fue desarrollada por (Cundall, 1971) y estaba enfocada. a la resolución de. problemas de geomecánica y discontinuidades en medios rocosos abordados con los conceptos de bloques y juntas. La tendencia actual de estas técnicas (Método de los Elementos Discretos o Distintos) está enfocada a posibilitar el estudio del micro-mundo y la esencia micro-estructural de los problemas de la mecánica. computacional. empleando. modelos. de. partículas. y. micro-. estructurales. El hecho de poder estudiar el estado tenso deformacional existente entre partículas, posibilita detectar la aparición de microfisuras, las cuales son la génesis de la formación de micro zonas de falla que al final de su evolución y desarrollo culminan en los fallos estructurales o geotécnicos de una estructura u obra de ingeniería. Esta delimitación permite afirmar que las últimas tendencias de los MED posibilitan estudiar la evolución y desarrollo de las.
(16) Capítulo 1: Marco Teórico. 8. microfisuras y micro grietas conjuntamente con la metamorfosis de las mismas a fisuras y grietas macro estructurales.. La modelación y simulación numérica de medios discontinuos o continuos empleando el MED o una combinación de este con el MEF u otro método numérico, es uno de los temas que está de boga en el campo de la ingeniería. Originalmente, este enfoque de modelación ha estado dirigido a resolver problemas de ingeniería a una escala macro-estructural. En la actualidad, ha surgido una tendencia de estudiar las leyes del micro-mundo, por lo cual, la modelación y la simulación numérica se han extendido a una escala microestructural. Estas dos tendencias de trabajo posibilitan clasificar los métodos empleados para la modelación y simulación numérica en dos grandes grupos que toman en cuenta la escala o nivel de estudio (Véase Figura 1.1).. Modelación Númerica. Medios continuos (MEF, MEC, MDF). Medios discontinuos (MED). Enfoque Macro estructural. Enfoque Micro estructural. Figura 1. 1 Tendencias de la modelación numérica.. 1.4.. Método de elementos discretos: parte geométrica.. El método de los elementos discretos simula el comportamiento mecánico de un medio formado por un conjunto de partículas, las cuales interaccionan entre sí a través de sus puntos de contacto. La disposición de las partículas dentro del.
(17) Capítulo 1: Marco Teórico. 9. conjunto global del sistema o medio es aleatoria, por lo que se pueden formar medios con diferentes tamaños de partículas distribuidas a lo largo del conjunto, idealizando de este modo la naturaleza granular de los medios que usualmente se analizan y se simulan mediante esta técnica numérica. Principalmente se pueden distinguir las siguientes propiedades básicas que definen de forma global a grandes rasgos este método de análisis numérico: Las partículas como elementos discretos que en su conjunto conforman el sistema complejo de partículas. Estos elementos distintos como también se les conoce se desplazan independientemente unos de otros e interaccionan entre sí en las zonas de contacto. En este método a nivel de cada partícula se hace uso de la mecánica del cuerpo rígido y los elementos discretos se consideran elementos rígidos en sí.. 1.5.. Algoritmos de generación del Método de Elementos. Discretos Antes de comenzar la simulación, es necesario tener un conjunto inicial partículas. (empaquetamiento),. las. cuales. deben. encontrarse. lo. de más. cercanamente posible sin solaparse ningún par de ellas. Son deseables además determinadas características en los empaquetamientos que describan la realidad física de los diferentes medios o materiales que existen en la naturaleza. Para esto es necesario obtener conjuntos iniciales de partículas donde exista control de la fracción de volumen, el tipo, la forma, la posición y distribución estadística que pueden seguir las diferentes partículas que conforman el medio o material que se modele. Con este fin se han desarrollado los denominados algoritmos de empaquetamiento, los cuales tienen para el MED tanta importancia como los métodos utilizados para el mallado en el Método de Elementos Finitos (MEF)..
(18) Capítulo 1: Marco Teórico. 10. Métodos de Generación. Dinámicos. Puramente geométricos. Constructivos. Físicos. Pseudo – Constructivos. Dependientes del estado anterior. Figura 1. 2 Categorías de los métodos de generación.. Con el propósito de generar un conjunto de partículas con las características anteriormente señaladas se han desarrollado varias investigaciones. En (Feng et al., 2003) se presenta un algoritmo de avance frontal sencillo y eficiente para el caso de discos, pudiéndose generalizar para otras partículas en 2 dimensiones. Dos variantes del algoritmo son tratadas. El avance frontal cerrado donde las nuevas partículas son generadas a partir de un frente activo y las partículas que no forman parte del frente están contenidas dentro de este. El algoritmo comienza con dos discos y dos frentes. Una nueva partícula es generada por el frente activo (dos discos), el cual es eliminado de la lista de frentes y en caso de ser válida la partícula generada se crean dos nuevos frentes. El algoritmo concluye cuando no existan frentes activos. El segundo caso, el avance de frente abierto, va generando los discos por capas donde los límites del medio son considerados discos de tamaño infinito. El algoritmo permite obtener una densidad óptima solo localmente, y permite generar los empaquetamientos a una gran velocidad. Se menciona un ejemplo en el que se obtuvieron 106 discos en 3.77s en una PC con un procesador de 1GHz. Se plantea también que se pueden realizar aumentos posteriores de la fracción de área mediante la compresión de la frontera y compactación gravitacional, sirviendo esta última también para eliminar posibles inestabilidades en la posición de algunos discos..
(19) Capítulo 1: Marco Teórico. 11. Ambas variantes tienen como ventaja que la cantidad de partículas involucradas en la generación de una nueva es pequeña aunque el modo que son tratados los discos cuando colisionan dificulta su extensión a 3 dimensiones.. En (Albert-Ferrez, 2001) se formula un problema de empaquetamiento ligado a la optimización que tiene sus orígenes de un problema industrial que consiste en determinar la proporción óptima entre tres tamaños de partículas esféricas que permita generar una configuración de llenado del medio con densidad máxima. Este problema se intenta resolver a través de un conjunto de simulaciones con el MED, en cada una de las cuales las esferas se dejan caer en un contenedor y luego se les aplica una vibración para aumentar la densidad. Se presenta además un modelo matemático del problema de empaquetar esferas logrando la densidad máxima posible, en forma de problema de optimización no convexa con restricciones cuadráticas y función objetivo lineal. Como aclara el autor, dicho modelo solo tiene valor teórico, dado que su complejidad no permite aplicarlo a una gran cantidad de esferas.. El objetivo del artículo (Feng et al., 2002) es extender la metodología para el empaquetamiento de discos de (Feng et al., 2003) a otras partículas, que en este caso son polígonos, elipses y esferas. Después de exponer el algoritmo para cualquier tipo de partícula, solo es necesario formular el procedimiento para construir una partícula en contacto exterior con otras dos y la manera de detectar la intersección entre dos partículas, estando formulados los elementos anteriores para el caso de polígonos y elipses. Se explican las dificultades que aparecen en los algoritmos de empaquetamiento para 3 dimensiones y se declara poder obtener la fracción de volumen en el intervalo [0.58, 0.6], aunque no se especifica con qué distribución estadística de los radios se obtuvieron dichas fracciones de volumen..
(20) Capítulo 1: Marco Teórico. 12. Los propios autores han desarrollado otro algoritmo en 3D para el empaquetamiento de esferas (Han et al., 2005), que no presenta las dificultades mencionadas y es fácilmente adaptable a otros tipos de partícula. En (Han et al., 2005) se presenta un algoritmo para obtener empaquetamientos de esferas, basado en una idea geométrica de compresión que combina tres estrategias diferentes: compresión global, compresión aleatoria y sacudimiento y empleando un eficiente algoritmo dinámico de búsqueda de contactos diseñado para objetos de tamaños significativamente diferentes basado en células ha sido empleado para alcanzar un buen rendimiento en el proceso de empaquetado. La idea general del algoritmo formulado consiste en generar capas de esferas que se comprimen hasta llenar la geometría deseada. Se presenta un ejemplo numérico en el cual se generaron 26787 esferas en 181s con una fracción de volumen del 52.89%. Aunque el algoritmo formulado es sencillo y eficiente, se puede plantear la hipótesis de que colocar directamente a las partículas en su posición definitiva es un método mucho más eficiente si se logra formular a través de un algoritmo adecuado. Para lograr un empaquetamiento inicial de objetos discretos en el MED, existen otras variantes que no son necesariamente la constructiva y que también son eficientes. En el artículo (Löhner and Oñate, 2004) de Löhner y Oñate se hace una exposición al respecto. En dicho trabajo se desarrolla una técnica de avance frontal para el llenado del espacio con objetos arbitrarios. La entrada necesaria consiste en la especificación de la distancia media puntual en el espacio y una triangulación inicial de la superficie. En esta formulación cada objeto es quitado del frente activo uno a uno y, si es posible, rodeado por nuevos objetos admisibles. Esta operación es repetida hasta que no queden objetos activos. En esta investigación dos técnicas para obtener empaquetamiento máximo son discutidas: Colocación del objeto más próximo (durante la generación). Mover y agrandar (después de la generación)..
(21) Capítulo 1: Marco Teórico. 13. Diferentes patrones de deposición pueden ser logrados mediante la selección del orden en el que los objetos son eliminados del frente activo. Los tiempos muestran. que. para. objetos. simples. como. esferas. el. esquema. es. considerablemente más rápido que con generadores de volumen de malla basados en la técnica del avance frontal, haciendo posible generar grandes (> 106) y aun óptimas nubes de puntos en cuestión de minutos en una PC. Para objetos más generales, el desempeño puede decaer dependiendo en la complejidad de los chequeos de penetración. En esta publicación (Hogue) algunos ejemplos están incluidos, aspectos que demuestran las capacidades de la técnica desarrollada. Este algoritmo tiene la desventaja de afectar la distribución con que se generan las partículas y del medio en general ya que al aplicar la técnica de mover y agrandar cada partícula hasta que se ponga en contacto con la más vecina variará la distribución inicialmente concebida en la generación.. Otra variante de algoritmo de generación ha sido el desarrollado por Viamontes en (Esquivel, 2007). El algoritmo procede en tres etapas fundamentales. La primera es el particionamiento en celdas, con este paso se hace el preproceso necesario para trabajar el dominio por fragmentos, e influye tanto sobre el dominio como su frontera. La segunda etapa tiene que ver con la generación inicial de esferas para cada celda. Durante esta etapa se generan unos pocos “lotes” predeterminados de esferas empacados en celdas, que ya cumplen con las restricciones sobre la distribución de los radios y las distancias. Estos se estampan sobre las celdas del particionamiento en el paso anterior. Tanto la construcción de los lotes como el estampado se hacen simultáneamente, por lo que esto se considera una sola etapa. El resultado es un cubrimiento del cuerpo con esferas, cuya principal desventaja es la existencia de “espacios vacíos” sobre las junturas de las.
(22) Capítulo 1: Marco Teórico celdas. Desde otro punto de vista, la segunda etapa. 14. ejecuta una. operación de calibración para la tercera. La tercera etapa tiene dos funciones: Eliminar las esferas exteriores al dominio y eliminar los “espacios vacíos” en las junturas.. Este algoritmo tiene como desventaja su poca flexibilidad ante su adaptación para trabajar con otros tipos de partículas ya que el propio autor asegura que su fundamento matemático es funcionalmente rígido.. Una investigación de gran generalidad en cuanto al tipo de partícula es (Brito, 2007), en la que se presenta un código para generar empaquetamientos de varias formas de partícula, aunque los resultados solo se muestran para partículas esféricas. El diseño de clases implementado permite agregar cualquier nuevo tipo de partícula para ser empaquetada, para lo cual basta solamente conocer un procedimiento para colocar una en contacto con otras dos (caso 2D) o con otras tres (caso 3D) y un procedimiento de detección de intersección. Se presentan ejemplos de conjuntos de esferas generados a velocidades superiores a las 1000 por segundo con fracción de volumen global superior al 51%, además de ejemplos de más de 2*106 esferas.. Paralelamente a esta investigación fue desarrollada (Valera, 2007), en la cual se implementó una biblioteca de clases destinada a ser usada en el código presentado en (Brito, 2007). Están implementados algoritmos para empaquetar en 2D colisiones de círculos, elipses aproximadas con círculos, polígonos, y en 3D colisiones de esferas. El algoritmo de generación es independiente del tipo de partícula y el diseño de clases permite fácilmente agregar otros nuevos tipos de estas. En (Labra and Oñate, 2008) se propone un nuevo algoritmo que minimiza la distancia entre las partículas de un empaquetamiento, aumentando así la fracción de volumen. Se introduce una restricción de limite de frontera, como.
(23) Capítulo 1: Marco Teórico. 15. aplicación de esta se fuerza la generación a una buena definición de la superficie que ocupa. El algoritmo tiene como entrada un empaquetamiento generado preferentemente por un método rápido. Se plantea la reducción de la porosidad como un problema no lineal de minimización donde la función objetivo es la distancia entre las partículas vecinas, lo que permite la inclusión de las restricciones de frontera. Como función de distancia se usa Se necesita minimizar. . donde. es la matriz de. adyacencia de las partículas de la generación. Como resultado se obtienen porosidades de 10% en el caso 2D y 30% en 3D.. En (2008, A.Benabbou) se presenta un nuevo algoritmo de generación para 2 y 3 dimensiones basado en el método de avance frontal, se propone también un algoritmo de relocalización de partículas para evitar las áreas vacías que deja el método de avance frontal. El algoritmo consiste en generar primeramente un rociada de partículas en la parte interna del medio a generar, siendo este el nivel 0 del frente, luego se va generando partículas en este nivel hasta que no queden frentes activos en él, las partículas generadas en el nivel 0 conformaran el nivel 1, que será el próximo que se genere. De esta forma no solo se logra una buena definición del medio, lo que incrementa la fracción de volumen, sino que se evitan colisiones de partículas innecesarias. Este algoritmo, como lo exponen los autores es como sigue. 1- Crear un frente inicial. 2- Mientras queden elementos activos en el frente a) Generar radio aleatorio b) Determinar el nivel l del frente (primer elemento activo) c) Hacer para el nivel l del frente: i - Seleccionar elemento activo con nivel le<=l ii – Ubicar la partícula Pnueva usando elemento es seleccionado del frente iii – Validar Pnueva (que no se intercepte y que este dentro del medio) iv – Si es válida entonces: Desactivar frente es.
(24) Capítulo 1: Marco Teórico. 16. Conectar Pnueva con las partículas de es e ir al paso a) v – Si la posición de Pnueva no es válida y todos los elementos activos con nivel <= l han sido probados para ubicar a Pnueva entonces: Desactivar el primer elemento activo ef en el frente Determinar la partícula que maximiza la densidad local en ef Adicionar los posibles elementos nuevos al frente e ir al paso b) d) Terminar Hacer 3 – Terminar Mientras Para reducir el impacto de las áreas vacías, generadas por el método de avance frontal, en las simulaciones físicas se propone un algoritmo de relocalización de partículas (triangulación pesada de Delaunay) Como resultado del algoritmo se obtuvieron empaquetamientos con radios de distribución uniforme U[2,8] para 2 y 3 dimensiones, en el primero se generaron 1330 discos en 0.02s con una densidad de 0.80 y en el caso 3D se generaron 33738 esferas en 3s con densidad 0.494. Se generaron empaquetamientos con radio constante con el fin de comparar con la densidad óptima en el caso de 3D cuyo valor es, según la conjetura de Kepler, de. (Donev et al., 2004). Para este caso particular se. generaron 39061 esferas con densidad 0.606. La principal desventaja es que el algoritmo está enfocado a generar medios de forma parelepípeda y extender el algoritmo a otros contornos irregulares no resulta trivial.. 1.6.. Algoritmos de Búsqueda de Contactos.. Reducir el número de operaciones a realizar para obtener un programa más rápido es el objetivo del desarrollo de los algoritmos de detección de contacto. Para ello se deben resolver dos problemas principales: Determinar rápidamente los vecinos de una partícula, los cuales pueden estar en contacto con ella. Determinar rápidamente el punto de contacto para después calcular las interacciones..
(25) Capítulo 1: Marco Teórico. 17. Munjiza y Andrews proponen un algoritmo de contacto llamado NBS (No Binary Search) que presenta un tiempo total de detección proporcional al número de cuerpos separados N mientras que la mayoría de los algoritmos presentaban un tiempo total de detección proporcional a N*ln(N). Esta eficiencia se logra porque este algoritmo no está basado en el proceso de búsqueda binaria. Los requerimientos de memoria son insignificantes y el tiempo total de detección no se ve afectado por cambios en la densidad particular del modelo. Perkins y otros investigadores presentan un nuevo algoritmo de detección de contacto llamado DESS basado en la clasificación de los extremos de la proyección de las partículas sobre los ejes ortogonales. Desarrollado para responder a los problemas encontrados al utilizar elementos no esféricos y de tamaño variable en el MED este algoritmo es mucho más conveniente comparado con el NBS cuando hay una variación significativa de los tamaños de las partículas, como demostraron las simulaciones realizadas. En la formulación desarrollada por Burrel la búsqueda de contactos se basa en estructuras Quadtree en 2D y Octree en 3D combinadas con la técnica de agrupación basada en las celdas centradas en el cuerpo. De este modo el costo computacional pasa a ser proporcional a N*ln(N), lo que le permite ser usado en sistemas de mayor tamaño. La construcción de estructuras QuadTree y Octree en cada paso de tiempo sería muy cara. Para pasos de tiempo muy pequeños la mayoría de los contactos pueden ser los mismos que en los pasos anteriores. La utilización de la información sobre los pares de contactos existentes en el paso anterior puede agilizar la búsqueda de contactos. Por este motivo el algoritmo consta de 2 etapas: una primera consistente en la búsqueda de pares de elementos potencialmente en contacto basado en estructuras QuadTree y Octree; y una búsqueda local verificando la lista de contactos potenciales basada en el método de las celdas centradas en el cuerpo..
(26) Capítulo 1: Marco Teórico. 1.7.. 18. Estudios estadísticos de los empaquetamientos. En (Bezrukov et al., 2001) se presenta un análisis estadístico espacial para conjuntos de esferas con radio y posición aleatoria, empleando dos algoritmos diferentes de generación, en los cuales, para las distintas generaciones, los diámetros de las esferas siguen la distribución constante, la bimodal o la logonormal. Se plantea que para el caso de la distribución logonormal, con parámetros μ y σ2, la fracción de volumen depende muy poco del parámetro de valor medio μ, pero en gran medida de la varianza σ, aumentando con esta. Se estudian además, características comunes de estadística espacial tales como la fracción de volumen, la función de correlación de pares del sistema de centros de esferas y la función de distribución de contactos del conjunto unión de todas las esferas, así como el número de coordinación. Basado en lo que se expone se puede plantear la hipótesis de que para cualquier distribución estadística que sigan los diámetros de las esferas, la fracción de volumen aumenta a medida que aumenta la varianza.. Nuevas técnicas de evaluación de la aleatoriedad de empaquetamientos de partículas con radio constante y con radios de una distribución determinada son tratados en (He et al., 2001). En la investigación se muestra que trazando planos cortantes en el medio generado y hallando la sección de área de las partículas que el plano interseca se llega a que la razón de área de estas partículas con respecto al área del plano se aproxima a la razón de volumen (densidad geométrica) del empaquetamiento y tiende a ella a medida que el número de planos cortantes tienda al infinito. Estas razones de áreas son un indicador de la distribución espacial de las partículas en la generación. Para comprobar el grado de aleatoriedad de los empaquetamientos se emplea la técnica de muestreo temporal sobre las densidades de área de los planos cortantes, esto es, el coeficiente de auto-correlación, que mide la correlación.
(27) Capítulo 1: Marco Teórico entre. observaciones. a. una. distancia. k. y. que. es. 19 igual. a. debe cumplir en el 95% de los casos y para k≠0 que su valor se encuentre entre. . En la misma m es la cantidad de planos. cortantes, k es la distancia de separación,. es la densidad de área del plano j y. la media de las observaciones o la densidad del empaquetamiento. Se examina la homogeneidad dividiendo el medio en subregiones de igual tamaño y comprobando que la cantidad de partículas en cada subregión se ajuste a una distribución uniforme. Como aclaran los autores, el resultado de una prueba X2 indica si se rechaza o no la hipótesis, pero en caso de no rechazarse no implica que se ajuste a la distribución uniforme, aunque en la práctica se acepta si no se rechaza la hipótesis. Se aclara que las subregiones deben ser lo suficientemente grandes como para contener un razonable número de partículas que reflejen la distribución total de los radios de estas para no incurrir en errores estadísticos. Dos técnicas estadísticas para comprobar la isotropía de la generación son abordadas. La primera, que es aplicada al micro-nivel, prueba que las proyecciones de las líneas centro-centro entre las partículas tangentes se ajusten a una distribución uniforme. La segunda, aplicada al macro-nivel, examina las varianzas de las densidades de áreas de los planos cortantes perpendiculares a cada eje.. En (Sakaguchi and Murakami, 2002) se plantea que existe una estrecha relación entre el empaquetamiento inicial de partículas y el comportamiento físico del sistema, y que es necesario investigar los mecanismos de empaquetamiento de sistemas de partículas con determinada forma y tamaño..
(28) Capítulo 1: Marco Teórico. 1.8.. 20. Conclusiones Parciales. Los algoritmos de empaquetamientos de partículas tienen una gran importancia en el MED, por lo cual estos deben ser desarrollados y estudiados. Es decir, se debe tratar de obtener algoritmos de generación de partículas que sean veloces y permitan obtener conjuntos densos de partículas. Además, dichos conjuntos de partículas presentan patrones geométricos que deben ser estudiados, ya que influyen directamente en el comportamiento físico del sistema..
(29) Capítulo 2: Algoritmo de Generación de Partículas. 21. Capítulo 2: Algoritmo de generación de partículas En el presente capítulo se describe el algoritmo general para el método de generación de partículas que se presenta.. 2.1.. Algoritmo general. El algoritmo que se presenta está basado en la técnica de avance frontal, uno de los principales inconvenientes a la hora de implementar esta técnica en 2D y especialmente en el caso 3D es cuando se produce una colisión de la partícula generada con las que se encuentran previas en el empaquetamiento. Una solución a este problema sería establecer un orden espacial entre las partículas generadas y eliminar todas las partículas que se encuentren desde el frente que generó la última partícula hasta la que fue interceptada como es el caso de (Feng et al., 2003). La variante que se propone intenta mejorar estos resultados evitando en alguna medida las intercepciones de partículas y usando una solución diferente cuando se producen estas colisiones.. La primera fase del algoritmo propuesto es la inicialización, en el que se ubica el punto más interior de la geometría y se colocan 3 partículas tangentes entre sí. Dado que en 3 dimensiones se requiere de 3 partículas para generar una cuarta, y se pueden generar partículas en 2 direcciones, siendo estas las posibles soluciones para el sistema de ecuaciones que se forma, se optó por limitar este sistema a una solución de acuerdo a la localización espacial de las partículas, de modo que para lograr ambas soluciones importe el orden en que se tomen las mismas (ver fig. 2.2). Para reducir las colisiones de partículas a la hora de generarlas se emplea un ángulo de inclinación que está asociado a cada trío de partículas, si este ángulo es menor que el ángulo permitido (en la presente investigación se tomó como valor 90o) se resuelve el sistema de ecuaciones correspondiente para determinar las coordenadas de la próxima partícula, se.
(30) Capítulo 2: Algoritmo de Generación de Partículas. 22. chequea que se encuentre en el interior la geometría, de ser así se pues en caso contrario se descarta, y de no haber colisiones con alguna otra se incluye esta en el conjunto de partículas y 3 nuevos tríos de partículas se forman, en caso de existir colisiones, si colisiona con una sola partícula se crea un nuevo trío de partículas uniendo la partícula colisionada con las dos más cercanas del trío de partículas que la generó. El proceso concluye cuando no existan tríos. de. partículas disponibles. El algoritmo anteriormente expuesto se puede apreciar en el diagrama de actividades que se muestra en la siguiente figura (Figura 2.1).. Figura 2 1 Esquema del Algoritmo General..
(31) Capítulo 2: Algoritmo de Generación de Partículas. 2.2.. 23. Estimado de cantidad de partículas para una geometría.. El estimado de la cantidad de partículas para una geometría es conveniente ya que se puede estimar el tiempo que demorará todo el proceso y permite además hacer cálculos relacionados con el nivel de porosidad con el que quedará el empaquetamiento. Aspecto muy interesante considerando que todos los materiales no cuentan con el mismo nivel de porosidad. Esto se calcula distribuyendo una nube de puntos siguiendo la distribución uniforme por toda la geometría a partir de los límites máximos y mínimos. Luego se cuentan todos los puntos interiores a la geometría y la proporción que existe entre estos y los distribuidos es aproximadamente la misma que la existente entre el área o volumen formado por los límites máximos y mínimos, así como el área o volumen de la geometría, a continuación la clase relacionada (Véase Figura 2.2 ).. Figura 2 2 Clase Predictor.. Función relacionada con la predicción de la cantidad de elementos para una geometría. Nombre de la función: getCountPartGenerar. Tipo de valor de retorno: int..
(32) Capítulo 2: Algoritmo de Generación de Partículas. 24. Significado del valor de retorno: Cantidad de partículas aproximadas a generar en la figura o cuerpo. Definición: int Predictor::getCountPartGenerar.. Función relacionada con el cálculo de la porosidad de la generación. Nombre de la función: calPorocidad. Tipo de valor de retorno: MY_DOUBLE. Significado del valor de retorno: Un número real menor que uno, que expresado en porciento representa la densidad del empaquetamiento. Definición: MY_DOUBLE Predictor::calPorocidad().. Esta clase cuenta además con algunos procedimientos destinados a calcular y escribir en fichero diversos datos de las partículas como son la porosidad local de cada partícula, el grafo de contactos del empaquetamiento y la curva de tiempo donde se conoce en que intervalo del tiempo de generación se generó cada partícula. Estos procedimientos se detallan a continuación.. Procedimiento de escritura de la porosidad local de cada partícula. Nombre de la función: writeLocalPorosity. Uso: Escribir en fichero la fracción de área local de cada partícula del empaquetamiento. Definición: void Predictor::writeLocalPorosity();. Procedimiento de escritura de la matriz de contacto del empaquetamiento. Nombre de la función: writeContactGraph. Uso: Escribir en fichero para cada partícula las partículas que están en contacto con ella. Definición: void Predictor::writeContactGraph();. Procedimiento de escritura de la curva de tiempo de las partículas. Nombre de la función: writeTimeCurve..
(33) Capítulo 2: Algoritmo de Generación de Partículas. 25. Uso: Escribir en fichero el tiempo en que se generó cada partícula del empaquetamiento. Definición: void Predictor::writeTimeCurve();. 2.3.. Estructura de datos para el almacenamiento de las. partículas. Es evidente que para el almacenamiento de los datos de cada partícula es necesario algún tipo de estructura que lo permita. Todos los algoritmos que se exponen en los siguientes epígrafes hacen uso de esta estructura, por lo que es importante considerar que cualquier cambio en la forma de interacción prevista para el almacenamiento de las partículas puede afectar a todo el diseño.. Se conoce por las descripciones hasta este punto que se trabaja con partículas que pueden ser pivotes por ser interiores a la geometría y otras que no lo son o ya lo fueron en algún momento. Por otra parte se debe considerar que relacionado con las partículas pivotes existen una serie de criterios de búsqueda, por lo que se considera que una lista donde las partículas candidatas a pivotes y las demás se encuentren como un todo único, no es buena idea. Pensando de este modo se decide tener dos listas de referencias a las partículas, la primera de ellas contará con las referencias a todas las partículas generadas, y la segunda se encargará de tener solo las referencias a cada partícula candidata a pivote. Se debe tener en cuenta que una vez culminado el proceso, liberar cada espacio de memoria reservada para el almacenamiento de cada partícula.. El diseño propuesto está basado en uso de las bibliotecas estándares de la STL mencionada varias veces en esta investigación (Véase Figura 2.3)..
(34) Capítulo 2: Algoritmo de Generación de Partículas. 26. Figura 2 3 Clase DatosParticulas.. Atributo relacionado con el almacenamiento de las referencias a las partículas pivotes: Nombre del atributo: partspiv. Tipo del atributo: std::list<iparticula *>. Significado del atributo: Lista de todas las referencias a partículas candidatas a pivotes. Atributo relacionado con el almacenamiento de las referencias a todas las partículas. Nombre del atributo: particls. Tipo del atributo: std::list<iparticula *>. Significado del atributo: Lista de todas las partículas generadas.. Atributo relacionado con el almacenamiento de los tiempos de generación de las partículas. Nombre del atributo: time_curve. Tipo del atributo: std::list<int>. Significado del atributo: Lista de los tiempos en que se generaron las partículas..
(35) Capítulo 2: Algoritmo de Generación de Partículas. 2.4.. 27. Algoritmo de búsqueda de vecindad.. Haciendo referencia al algoritmo general, cuando se genera una partícula debe comprobarse que esta no intercepte con alguna de las partículas previamente generadas. Esto se pudiera acometer comprobando con todas y cada una de las partículas existentes pero el procedimiento sería muy costoso en tiempo. Numerosos algoritmos de búsqueda de vecinos se han enunciado en investigaciones previas y dado que están fuera de los objetivos de la presente tesis no fueron abordados con anterioridad. En los subsiguientes sub-epígrafes tomados de la investigación (Brito, 2007) se detalla una implementación del algoritmo de búsqueda de vecinos No Binary Search, el cual se optó por utilizar para nuestro propósito.. 2.4.1. Algoritmo No Binary Search(NBS). La idea seguida es tratar de agrupar familias de partículas por su ubicación espacial, de manera que conociendo la ubicación espacial de una partícula se puedan resolver todas las que pertenecen a su familia. Dado que el criterio seguido para definir una familia de partículas está basado en su ubicación espacial se debe pensar en relacionar el espacio geométrico con grupos de partículas que se encuentren cercanas entre sí. La clase que implementa toda la funcionalidad de búsqueda de vecindades es SearchContact (Véase Figura 2.3)..
(36) Capítulo 2: Algoritmo de Generación de Partículas. 28. Figura 2 4 Diagrama de herencia de la clase SearchContact.. Se propone una generalización para este tipo de algoritmos ya que en la literatura consultada existen varios criterios orientados a resolver estos problemas. En el presente trabajo se implementó el algoritmo NBS, el cual es muy rápido aunque para un óptimo funcionamiento utiliza una gran cantidad de memoria. Por esta razón se decide una implementación abstracta básica que cuenta con las mínimas funcionalidades que debe tener alguna implementación para ajustarse al proyecto en caso que en futuras investigaciones se desearán implementar otros criterios para resolver los problemas de vecindad. Esta clase es independiente de la dimensión en la que se trabaje, ya sea un espacio bidimensional o tridimensional. Los detalles relacionados con la funcionalidad de los atributos y métodos de la clase iSearchContact se precisan en los epígrafes que siguen..
(37) Capítulo 2: Algoritmo de Generación de Partículas. 29. 2.4.2. Definición de las celdas. El algoritmo NBS se basa en la descomposición del espacio. Este se divide en celdas cuadradas de tamaño 4r donde r representa el radio máximo que puede tomar una partícula. A cada celda se le asigna un par de números (enteros) de identificación ix ,iy , donde ix. 0,1,2,3,...ncelx. 1 y iy. 0,1,2,...,ncely 1 con ncelx y ncely. Como el. número total de celdas en las direcciones x e y respectivamente para el espacio bidimensional, se agrega la componente z de igual manera para el espacio tridimensional. Por lo que siempre se podrá construir todo el espacio de celdas conociendo el radio máximo que pueden tomar las partículas y los límites máximos y mínimos de toda la geometría.. Función relacionada con la inicialización. Nombre de la función: inicialice. Definición: void iSearchContact::inicialice(). Detalles: Esta función se encarga de formar todo el espacio de celdas definidos por los límites máximos y mínimos de la geometría. Esto no se realiza en el constructor de la clase, ya que la geometría no tiene que conocerse inmediatamente después de comenzar la ejecución del programa. Es decir, una vez que se ha cargado la geometría, debe llamarse a esta función.. 2.4.3. Ubicación de la geometría dentro del espacio de celdas. Toda la geometría debe de estar dentro del espacio de celdas ya que las partículas que se encuentren en la superficie de la geometría deben tener también una ubicación dentro del espacio de celdas. Partiendo de esta idea se analizarán las siguientes figuras en las cuales se ilustran algunos casos a tener en cuenta para la formulación de una estructura de datos para este problema. Suponiendo que ABCD (Véase Figura 2.5) sea un polígono el cual se dividirá en celdas, está claro que se debe crear un mecanismo que permita identificar cada.
(38) Capítulo 2: Algoritmo de Generación de Partículas. 30. celda. Para esto se sugiere que se utilice la división entera por el lado máximo que ocupará una celda, no obstante no pueden aparecer identificadores de celda negativos por lo que es necesario hacer una traslación de la geometría hacia los ejes positivos. De esa manera se podría almacenar dichas estructuras de celda en una lista indexada como las soportadas por la mayoría de los lenguajes de programación. Para esto es necesario trasladar la geometría diferenciando cada caso y guardar la configuración, ya que las partículas tendrán coordenadas reales de la posición exacta donde se encuentran, razón por la que también deben trasladarse hasta la celda que le corresponde y ubicarlas. En el primer caso (a) es necesario guardar las mínimas coordenadas X e Y, para luego restárselas a las coordenadas reales de la partícula que se desea colocar en su celda correspondiente. En el segundo caso (b) es necesario guardar la mínima coordenada Y y la máxima coordenada X registrada en la geometría, para luego restar la mínima coordenada Y y sumar la máxima coordenada X a las coordenadas reales de la partícula que se desea colocar en su celda correspondiente. En el tercer caso (c) es necesario guardar la mínima coordenada X y la máxima coordenada Y registrada en la geometría, para luego restar la mínima coordenada X y sumar la máxima coordenada Y a las coordenadas reales de la partícula que se desea colocar en su celda correspondiente. En el cuarto caso (d) es necesario guardar el módulo de las máximas coordenadas X e Y, para luego sumárselas a las coordenadas reales de la partícula que se desea colocar en su celda correspondiente. Y en el último caso (e) es necesario guardar las mínimas coordenadas X e Y, para luego restárselas a las coordenadas reales de la partícula que se desea colocar en su celda correspondiente igual al primer caso. Una vez analizado cada caso hay que hallar la parte entera del resultado obtenido después de la transformación para obtener un índice entero de cada coordenada X e Y..
(39) Capítulo 2: Algoritmo de Generación de Partículas. 31. Figura 2 5 Cuadrados espaciales.. Generalizando los casos anteriores se puede realizar el proceso descrito para cada coordenada X, Y e Z aplicando solo dos reglas siguientes. Si la componente i toma valores solo negativos en toda la geometría entonces el índice entero buscado para esa componente se calcula sumando el módulo de la componente i de la coordenada de la partícula y el valor mínimo tomado por la componente i en la geometría. En cualquier otro caso el índice entero buscado para esa componente se calcula restando la componente i de la coordenada de la partícula y el valor mínimo tomado por la componente i en la geometría..
(40) Capítulo 2: Algoritmo de Generación de Partículas. 32. Donde i representa la coordenada X, Y o Z.. Aún se deben tener en cuenta algunas consideraciones respecto a las partículas exteriores ya que alguna de ellas pudiera caer fuera del espacio de celdas. Este problema pudiera solucionarse de varias maneras, lo más sencillo pudiera ser colocar celdas por defecto y por exceso. Otro problema surge al subdividir el espacio de celdas por un tamaño fijo, pues siempre sobra un intervalo en el cual no cabe una celda, por lo que las partículas que deberían estar ubicadas geométricamente en este lugar estarían en otro o quizás fuera del espacio de celdas, por lo que se recomienda adicionar siempre otra celda para evitar esto. Método relacionado a la ubicación de una partícula en el espacio de celdas. Nombre del método: setball. Tipo de parámetro de entrada: iParticula*. Significado del parámetro bl de entrada: Es una referencia a una instancia de la clase abstracta iParticula, la cual será adicionada al espacio de celdas como una referencia. Descripción: Ubica una referencia de la partícula de entrada bl en el espacio de celdas definido. Definición: void iSearchContact::setball(iParticula * bl).. Función relacionada a la búsqueda de vecindades de una partícula. Nombre de la función: getListContact. Tipo de parámetro de retorno: VectPart*. Tipo del parámetro bl de entrada: const iParticula *. Significado del parámetro de retorno: Es una lista de todas las partículas vecinas a la partícula de entrada bl. Significado del parámetro bl de entrada: Es una referencia a una partícula. Definición: VectPart * iSearchContact ::getListContact(const iParticula* bl)..
(41) Capítulo 2: Algoritmo de Generación de Partículas. 2.5.. 33. Obtención de una nueva partícula.. Analizando un espacio tridimensional considérese el problema de hallar el centro (x, y, z) de una esfera de radio r4, tangente exteriormente a otras tres de centro ci = (ci1, ci2, ci3), y radio ri respectivamente, i 1,3 . La. tangencia. entre. E((x,. y,. z),. r4). y. E(ci. ri),. i 1,3 , implica que. ( x, y, z) E (ci , ri r4 ) : lo cual equivale a que (2.8.2) ( x ci1 ) 2 ( y ci 2 ) 2 ( z ci 3 ) 2 (r4 ri ) 2 , i 1,3 Resolviendo el sistema anterior de tres ecuaciones en las incógnitas x, y, z, se. obtiene la solución deseada. Nótese que en el caso general existen dos soluciones (Véase Figura 2.6, Figura 2.7 y Figura 2.8).. Figura 2 6 Construcción de una esfera tangente a otras tres..
(42) Capítulo 2: Algoritmo de Generación de Partículas. 34. Figura 2 7 Construcción de una esfera tangente a otras tres.. Figura 2 8 Representación esquemática de posibles soluciones. Se evidencia que el sistema (2.8.2) tiene dos soluciones en el caso general..
(43) Capítulo 2: Algoritmo de Generación de Partículas. 35. Todo lo expuesto en este epígrafe hasta el momento fue tomado del la investigación (Morales, 2006) . Como se explicó en epígrafes anteriores el frente activo genera solo una de las soluciones posibles de acuerdo al orden en que fue tomado el mismo. Para tener una idea geométrica de lo que esto significa se muestra la siguiente figura (Figura 2.9).. Figura 2 9 Orden de las partículas para obtener ambas soluciones del sistema de ecuaciones.. Cuando se va a generar una nueva partícula se debe tener esto en cuenta pues en caso contrario la nueva partícula puede quedar en contacto con otras previamente generadas dado que se encuentra en la posición incorrecta.. Una vez decidido cuál de las dos soluciones generar es necesario estimar la posición en la que se encontrará la nueva partícula. Esta aproximación influye en cual solución se genera, pues el sistema de ecuaciones que se necesita resolver convergerá más rápido a la solución estimada, aumentando así la velocidad de generación. El procedimiento de estimar las coordenadas de la nueva partícula se hace tomando la dirección de una recta perpendicular al plano que intercepta los centros de las partículas del frente en un punto interior al triangulo que forma.
(44) Capítulo 2: Algoritmo de Generación de Partículas. 36. y con el sentido del producto de los vectores normales que forman el frente activo como se muestra en la figura siguiente (Figura 2.10).. Figura 2 10 Procedimiento para estimar la posición de la nueva partícula.. 2.6.. Herramientas Desarrolladas.. Para facilitar el trabajo en la presente investigación, así como su prueba y puesta a punto, se desarrollaron algunas herramientas. La primera de ellas es utilizada para la visualización de empaquetamientos de discos y esferas en 2 y 3 dimensiones respectivamente con el formato de fichero Yerva que tiene en su definición el medio como un conjunto de caras y la cantidad de esferas con sus coordenadas y radios. Teniendo la opción de mostrar las partículas en el orden en que se generaron y la posibilidad de moverse y rotar en 3 dimensiones esta herramienta resultó útil a la hora de depurar y validar el algoritmo..
(45) Capítulo 2: Algoritmo de Generación de Partículas. 37. Esta herramienta es una aplicación de consola, lo que implica necesita el pase de parámetros para su funcionamiento. La definición de los mismos es el siguiente: program.exe [-d] [-l] yervaFile El parámetro “-d” se especifica cuando se necesita depurar el empaquetamiento. Esto va mostrando incrementalmente cada esfera o disco en la posición y orden que se generó. Con la opción “-l” se muestran además los números de las esferas o discos que representan el orden en que se generaron. Para la navegación del empaquetamiento se emplea el botón derecho del mouse para mover la cámara con lo que se logra la rotación del empaquetamiento, con ambos botones del mouse o con el tercer botón se acerca o aleja el empaquetamiento. La Figura 2.11 muestra la aplicación en ejecución.. Figura 2 11 Herramienta para visualizar empaquetamientos de esferas y discos.. La segunda herramienta (fig. 2.12) fue pensada para llevar a cabo las pruebas estadísticas que se verán reflejadas en el Capítulo 3. Dado que los algoritmos que involucran números aleatorios no son deterministas..
(46) Capítulo 2: Algoritmo de Generación de Partículas. 38. Esta herramienta cuenta con varios tipos de parámetros definibles por el usuario, los mismos serán utilizados para crear los directorios en que se almacenarán los resultados, crear una línea de comandos que se le pasará al programa que se desea ejecutar y para crear el fichero de captura de salida estándar en caso que se especifique. El programa puede ser ejecutado con el mismo conjunto de parámetros las veces que se estime necesario, además de contar con soporte para multiprocesamiento, lo que disminuye el tiempo total de la ejecución (que es estimado por el software) en caso en que el tiempo no sea un factor a medir.. Figura 2 12 Herramienta para la ejecución de aplicaciones parametrizadas..
(47) Capítulo 2: Algoritmo de Generación de Partículas. 39. A continuación se detalla el uso de esta herramienta.. El campo Programa (Program) es obligatorio dado que es el programa que se desea ejecutar. Para cambiar este valor se debe presionar el botón para explorar ficheros (…). Al cambiar este valor si el campo del Directorio de Trabajo está vacío, este se cambia para el directorio donde reside el ejecutable seleccionado. Un concepto fundamental son las cadenas parametrizadas que no son más que cadenas de caracteres que pueden incluir uno o más parámetros en su definición. Los parámetros se especifican encerrando el nombre del mismo entre llaves, así para hacer referencia al parámetro n se debe escribir {n}. Estas cadenas parametrizadas son generadores de cadenas de caracteres [regulares] en tiempo de ejecución pues cada parámetro que contenga será mapeado a su valor correspondiente. Es importante que cada parámetro usado en estas cadenas sea definido antes de comenzar la ejecución para evitar errores. El Directorio de Trabajo (Working Directory) es usando cuando el programa crea o lee ficheros desde donde este se encuentra. De esta forma se pueden mantener los ficheros de una forma ordenada. El contenido de este campo es una cadena parametrizada que representa un camino que será usado para leer o escribir resultados con caminos relativos al programa que se desea ejecutar. Un ejemplo de su utilización es el siguiente: D:\output\{size}\{distribution}\{i}\ La lista de parámetros contiene los parámetros por defecto así como los definibles por el usuario. Los parámetros por defecto juegan el roll de generar cadenas de caracteres únicas que son deseables para no sobrescribir resultados previos. Actualmente se cuenta con dos de estos parámetros: {n} que toma valores entre 0 y la cantidad total de ejecuciones menos uno e {i} que toma valores entre 0 y la cantidad de ejecuciones con el mismo conjunto de parámetros menos uno. Estos parámetros no se pueden redefinir ni modificar puesto que son usados internamente por el software.. Entre los parámetros. definibles se encuentran los incrementales (autoincrement) que tiene un índice inferior y superior con un incremento, tomando valores desde el límite inferior e incrementando en el incremento hasta que el valor no sobrepase el límite.
Figure
+7
Outline
Documento similar