Beruflich Dokumente
Kultur Dokumente
por
Doctor
en la
febrero 2000
c Universitat Politècnica de Catalunya 2000
Certificado por . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Eugenio Oñate Ibáñez de Navarra
Catedrático de Universidad
Supervisor de la tesis
Certificado por . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Gabriel Bugeda Castelltort
Profesor titular de Universidad
Supervisor de la tesis
ii
iii
Resumen
En esta tesis se describe el desarrollo e implementación de un sistema informático para el
tratamiento de toda la información necesaria para un análisis por el Método de los Elementos
Finitos o por otros métodos numéricos basados en la discretización de ecuaciones diferenciales
(diferencias finitas, volúmenes finitos, métodos de contorno, métodos de puntos, etc.).
Algunas de sus partes se refieren principalmente al diseño y organización de un sistema
de estas caracterı́sticas. En otras, se describen los nuevos algoritmos que ha sido necesario
desarrollar para cumplir los objetivos propuestos.
Las diversas disciplinas que se describen a lo largo de la tesis se pueden clasificar en:
• Modelación geométrica. Se presenta una serie de algoritmos que se han desarrollado para
tratar y modificar la geometrı́a del modelo.
El President El Secretari
El Vocal El Vocal
El Vocal
vi
vii
Agradecimientos
El proceso de desarrollo y finalmente de escritura de una tesis doctoral, es un largo camino en
el que necesariamente se crean unas fuertes vinculaciones con las personas que coexisten en el
entorno cercano. Sean vinculaciones de tipo profesional o académico, o sean vinculaciones de
tipo más personal, en ambos casos influyen de manera profunda en el esfuerzo de creación e
investigación que va asociado a un trabajo de esta ı́ndole. Agradezco su ayuda, por tanto, a
todas aquellas personas con las que hemos ido creando vı́nculos de un tipo u otro a lo largo de
todo este tiempo.
Con el completo convencimiento de acortar en exceso una lista que debiera ser mucho más larga,
citaré a algunas de las personas que han influido de manera más directa a que este documento
diera fin y culminación al trabajo de estos últimos años.
A Eugenio Oñate, codirector de esta tesis, por animarme a iniciarla, dirigirla en su avance y
creer en ella en todo momento.
A Reinald Löhner, por ser el inspirador y el originador de tantas ideas que han permitido
progresar a este trabajo. También quiero agradecer a toda su familia, por la calurosa acogida
que siempre me dispensaron en mis estancias en Washington.
A Ramon Codina, fuente de conocimientos vastı́simos y variopintos, por ser capaz de dar
respuesta a las dudas más inesperadas.
A Miquel Riera y Enrique Escolano, por el trabajo conjunto y las largas discusiones que siempre
originaban nuevas ideas y mejores planteamientos.
A Julio Garcı́a, Chris Morton, Carlos Sacco y Javier Mora, compañeros y contertulios de las
más variadas conversaciones, que han posibilitado la maduración de algunos conceptos básicos
para este trabajo.
A Lara, por sus ánimos, paciencia y, sobretodo, por estar cerca en todo momento.
A mis padres, por ese apoyo incondicional e inagotable desde el primer dı́a hasta el último.
Y finalmente, a todos los usuarios de GiD, que con sus sugerencias, crı́ticas y más criticas, han
ido definiendo como quieren que sea un programa de este tipo y, al mismo tiempo, han creado
la lı́nea de avance hacia un nuevo concepto de valoración de la calidad.
x
Índice General
1 Introducción 1
1.1 MOTIVACIÓN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 ANTECEDENTES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 OBJETIVOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 PRESENTACIÓN DE LOS CONTENIDOS DE LA TESIS . . . . . . . . . . . . 4
4 Generación de malla 69
4.1 INTRODUCCIÓN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.2 TIPOS DE ELEMENTOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.3 ENTIDADES GEOMÉTRICAS QUE DEBEN SER MALLADAS . . . . . . . . . 72
4.4 MALLA ESTRUCTURADA VERSUS NO ESTRUCTURADA . . . . . . . . . . 73
4.5 MALLA CONFORME Y MALLA NO CONFORME . . . . . . . . . . . . . . . . 74
4.6 TAMAÑO DEL ELEMENTO PARA MALLA NO ESTRUCTURADA . . . . . . 74
4.7 TRANSICIÓN DEL TAMAÑO DEL ELEMENTO ENTRE ZONAS . . . . . . . 76
4.7.1 Asignación de tamaños por error cordal . . . . . . . . . . . . . . . . . . . 77
4.7.2 Corrección de tamaños . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
4.8 GENERACIÓN DE MALLA ESTRUCTURADA . . . . . . . . . . . . . . . . . . 81
4.8.1 Malla estructurada con polilı́neas de superficie múltiple . . . . . . . . . . 82
4.8.2 Malla estructurada en superficies NURBS de más de 4 lados . . . . . . . . 83
4.8.3 Generación de los nodos interiores en una superficie estructurada . . . . . 84
4.8.4 Generación de los nodos interiores en un volumen estructurado . . . . . . 84
4.8.5 Concentración de elementos en mallas estructuradas . . . . . . . . . . . . 86
4.9 GENERACIÓN DE MALLA EN LÍNEAS . . . . . . . . . . . . . . . . . . . . . . 88
4.9.1 Cálculo de los parámetros de espaciamiento de nodos . . . . . . . . . . . . 88
4.9.2 Corrección para lı́neas NURBS . . . . . . . . . . . . . . . . . . . . . . . . 90
4.9.3 Generación para polilı́neas . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
4.10 GENERACIÓN DE MALLA NO ESTRUCTURADA EN SUPERFICIES . . . . 93
4.10.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
4.11 GENERACIÓN DE MALLA EN EL PLANO . . . . . . . . . . . . . . . . . . . . 93
4.11.1 Transformación del espacio paramétrico al espacio equivalente . . . . . . . 93
4.12 ALGUNAS ESTRUCTURAS DE DATOS USADAS EN LOS ALGORITMOS
DE GENERACIÓN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
4.12.1 Algoritmos de búsqueda de puntos cercanos: Quadtree y Octtree . . . . . 96
4.12.2 Estructura de árbol binario . . . . . . . . . . . . . . . . . . . . . . . . . . 103
4.12.3 Estructuras de nodos, elementos y caras . . . . . . . . . . . . . . . . . . . 104
4.12.4 Cubos MinMax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
xiv ÍNDICE GENERAL
Introducción
1.1 MOTIVACIÓN
Con el desarrollo de los ordenadores en los últimos años, se ha llegado a una situación en la
que es posible realizar análisis de modelos extremadamente complejos. Además, los programas
de cálculo y simulación por métodos numéricos han ido sofisticándose con el paso del tiempo
para modelizar, de manera cada vez más aproximada, los fenómenos reales. Ello conlleva
que la complejidad de los datos que requieren dichos programas haya ido aumentando. Otro
efecto de esta evolución radica en que las mallas necesarias deben cumplir unas especificaciones
muy determinadas y ser capaces de modelar situaciones muy especiales de la geometrı́a1 en el
contexto del problema bajo estudio.
El resultado de esta necesidad ha sido que, actualmente, el proceso que generalmente con-
sume más tiempo-hombre en el conjunto de un análisis es la preparación de datos y la generación
de la malla.
El segundo problema reside en que, en muchos casos, ni tan siquiera es posible llegar a
obtener una malla y unos datos que cumplan los requerimientos de un análisis determinado.
Otra necesidad que aparece es la de conectar de manera adecuada el sistema de preproceso
con el de análisis, con el objetivo de minimizar el tiempo y la dificultad de la transferencia de
datos.
Finalmente, ha llegado el momento de que los métodos numéricos traspasen la barrera de
la investigación y se introduzcan de pleno en la producción industrial. Un sistema sólo será
1
No es suficiente con una malla que describa al sólido. Hay que pensar en otros factores como contactos,
juntas, simetrı́as espaciales, multi-volúmenes y otros que requieren una malla especializada para realizar con
éxito el análisis.
2 Introducción
1.2 ANTECEDENTES
Los primeros estudios de modelación geométrica se remontan a los años 60-70 y se originaron
en las grandes compañı́as fabricantes de automóviles. En un inicio, estas compañı́as fueron las
creadoras y las usuarias, al mismo tiempo, de estos primeros programas de diseño asistido por
ordenador (CAD). Más tarde, los programas de este tipo se han ido extendiendo a todos los
ámbitos de la ingenierı́a y del procesamiento industrial hasta el extremo de que, hoy en dı́a,
prácticamente cualquier diseño o mecanización en la ingenierı́a se realiza mediante este tipo de
programas. Puede considerarse que se ha llegado a un estado del arte, tanto en investigación
como en programas comerciales, que cumple con eficacia su cometido.
A este respecto, deben tenerse en cuenta los trabajos de Bézier, Coon, Gerald Farin [Far93],
Foley, van Dam,Feiner y Hughes [FvDFH93] y otros que han permitido que, en unos pocos
años, todo el conocimiento matemático sobre geometrı́a computacional se haya extendido y sea
ampliamente usado en todos los programas de modelación geométrica tridimensional.
La generación de malla ha sido durante los últimos 15 años y sigue siendo hoy en dı́a objeto
de investigación por parte de multitud de grupos tanto en la universidad como en el ámbito de
la explotación comercial. Actualmente, existen ya metodologı́as que funcionan razonablemente
bien para algunos de los casos en que se subdivide esta disciplina. Otros apartados, como gen-
eración no estructurada de hexaedros, capas lı́mite para análisis de fluidos viscosos gobernados
por la ecuación de Navier-Stokes y otros pueden considerarse como no resueltos o, al menos,
como muy mejorables. Además, el proceso de relación entre geometrı́a y generación de malla
provoca una problemática que requiere procesos de adaptación del modelo geométrico, correc-
ción de imperfecciones asociadas y preparación para la generación, que puede considerarse como
un problema no resuelto de manera totalmente satisfactoria.
Los primeros trabajos sobre generación de malla no estructurada bi y tridimensional se
deben a R. Lohner [LP88], J. Peraire [PPLFZ88] y J. Peiró [J.89]. Más tarde, el número de
investigadores y grupos que se han dedicado a las mejoras en las metodologı́as de generación
ha ido aumentando progresivamente. Entre ellos pueden citarse a P.L. George y H. Borouchaki
[GB98], Buscaglia, Gustavo C. y Enzo A. Dari [BD97], Peter Möller y Peter Hansbo [MH95],
OBJETIVOS 3
R. Kreiner [Kre95], Jas Frykestig [Fry94], A. Rassineux, J-M. Savignat, O. Stab y P. Villon
[RSSV99] y muchos otros.
Los programas comerciales que permiten generación de malla comienzan a ser capaces de
tratar modelos geométricos complejos con poca intervención del usuario. Sin embargo, no
pueden considerarse aún del nivel de calidad que atribuı́amos a los programas de CAD del
apartado anterior. Adolecen de una cantidad demasiado alta de problemas y dificultad de uso.
Por otro lado, estos programas sólo son utilizables para tratar con problemas muy especı́ficos
y por tanto, no aptos para tratar con tipos de análisis distintos al originalmente planteado.
Los problemas referidos anteriormente se centran en la dificultad de obtener una malla que
cumpla con unos requisitos prefijados por el usuario. Ejemplos de programas comerciales de
generación de malla son: PATRAN [Eng91], HyperMesh [Hyp00], Femgen/Femview [Fem00],
FEMAP [adoS00], ICEM CFD [Eng00] y otros.
En relación a la adaptabilidad, entendiéndose como la capacidad de relación entre un sis-
tema de preproceso y un programa de cálculo, la mayorı́a de los programas de preproceso y
postproceso existentes en el mercado no permiten su adaptación fácil a códigos determinados
de análisis. Si se acepta que deben existir gran cantidad de códigos de cálculo, tanto para poder
realizar investigación con ellos como para resolver problemas especializados, y se reconoce que
no es posible que cada código de análisis contenga su propio sistema de pre-postproceso, se
puede concluir que es necesaria la creación de un sistema de pre-postproceso que tenga gran
capacidad de adaptación para dar soporte a los códigos antes mencionados.
1.3 OBJETIVOS
exteriormente a ambos programas y con un coste de tiempo que se mantenga dentro de lı́mites
razonables.
Esta tesis presenta un conjunto de materias cuyo hilo común reside en que han sido necesarias
para la implementación de un sistema de preproceso para el análisis por métodos numéricos (el-
ementos finitos, diferencias finitas, volúmenes finitos, etc.), cuyo nombre es GiD. Cada capı́tulo
cubre una parte de este conjunto común, diferenciada de las otras, y que pretende ilustrar las
técnicas y algoritmos que han sido necesarias para llegar a los objetivos propuestos.
En general, cada capı́tulo incluye una serie de definiciones y consideraciones generales.
Seguidamente describe el conjunto de algoritmos implementados, intentando hacer hincapié en
los que han aportado conceptos e ideas novedosas al tema propuesto. En muchos casos ha sido
necesario referise a conceptos e ideas que forman parte del estado del arte para permitir una
comprensión global. Al final de cada capı́tulo se incluye un apartado donde se especifica que
ideas, algoritmos y metodologı́as se consideran como aportación de esta tesis al tema descrito.
A continuación se incluye una breve descripción de cada capı́tulo y de la temática que
aborda.
El Capı́tulo 2 de la tesis describe la organización general del sistema que se ha desarrollado
como preproceso para el análisis mediante métodos numéricos. En él se introducen algunos
conceptos importantes relativos a la programación y estructuras de datos que se han implemen-
tado. También se proponen criterios para la definición de la interfaz de usuario y se especifica
el tratamiento del sistema de unidades.
El Capı́tulo 3 aborda el tratamiento de la modelización geométrica. Para su correcta
comprensión es interesante consultar el apéndice dedicado a la descripción matemática de las
NURBS. Dicho capı́tulo da, en una primera parte, un conjunto de definiciones y criterios sobre
las diversas formas de tratar la geometrı́a. Seguidamente introduce el tema de la importación
de modelos geométricos y describe un conjunto de algoritmos que se han implementado para la
corrección de la geometrı́a y su adaptación a la generación de malla. Finalmente, describe un
conjunto de algoritmos relativos al tratamiento geométrico, cuya caracterı́stica común consiste
en que han requerido de un cierto estudio e investigación en contraposición a otros algoritmos
que ya pertenecen al estado del arte. Algunos de estos algoritmos se describen en el mencionado
apéndice sobre las NURBS.
PRESENTACIÓN DE LOS CONTENIDOS DE LA TESIS 5
2.1 INTRODUCCIÓN
En este capı́tulo se van a describir las principales pautas de diseño y de organización empleadas
en el sistema de preproceso desarrollado en la tesis (denominado en adelante GiD). Es necesario
tener en cuenta que dada la complejidad y las posibilidades que este ofrece, un diseño correcto
es básico para que pueda ser usado de manera eficiente. A esto hay que añadir el hecho de que
debido a que es un tipo de sistema orientado hacia el usuario final, la coherencia de uso cobra
especial importancia.
Otra de las partes que se tratarán en este capı́tulo será la interrelación con el usuario1 y las
técnicas para definir un uso coherente y una metodologı́a sencilla de aprendizaje.
Se especificarán con detalle las estructuras de los datos perceptibles por el usuario y se
describirán los criterios lógicos para la adopción de tales estructuras.
Además, se describirá la metodologı́a para tratar dentro del sistema el tema de las unidades
y su adaptación a códigos de análisis que pueden o no incluir el tratamiento de éstas.
1
Usualmente llamada interfaz de usuario o user interface.
8 Organización del sistema GiD
El lenguaje principal de programación ha sido C++. Por ser un lenguaje orientado a objetos,
facilita el desarrollo de códigos que no tengan un flujo lineal de ejecución. En comparación a un
tı́pico programa de cálculo por ordenador, donde hay una secuencia ordenada de operaciones
a realizar, en este caso el flujo, es fuertemente no continuo. Esto se debe al hecho de que está
guiado por la interacción con el usuario. La consecuencia de ello es que interesa más ordenar
el código por unas entidades abstractas llamadas objetos y que representan conceptos reales en
lugar de definir el habitual conjunto de funciones.
Para facilitar el trabajo de programación y evitar la repetición de trabajo ya existente, se
han utilizado diversas librerı́as. Se entiende por librerı́as, un conjunto de funciones escritas en
un lenguaje compatible con el del programa y que están especializadas en realizar un trabajo
concreto y muy bien definido. Las librerı́as usadas han sido:
• OpenGL: Librerı́a para dibujo en 3D. Dadas unas primitivas de dibujo como lı́neas,
superficies o triángulos, y dados un tipo de visualización y unos parámetros de posi-
cionamiento, dibuja las primitivas en pantalla.
• Otras: Se han usado diversas librerı́as y código existente para operaciones tales como:
escritura de ficheros de impresión, creación de ficheros de vı́deo, etc.
Por ser Tcl-Tk una librerı́a que opera con scripts, se puede desarrollar todo el código que
gobierna la creación de la interfaz de usuario mediante este nuevo lenguaje que no necesita de
compilación y por tanto implica un desarrollo más rápido y sencillo. Por la misma razón de que
la compilación no es necesaria, una tercera persona puede añadir nuevas opciones y ventanas
al programa para especializarlo en una tarea determinada. Esta unión entre el código en C++
2
Un script es una secuencia de comandos que realizan acciones y que no necesita ser compilada.
CRITERIOS PARA LA CREACIÓN DE LA INTERFAZ DE USUARIO 9
y el código en Tcl requiere de una serie de funciones de interrelación que permitan el trasvase
de información de una parte a la otra.
Una de las mayores ventajas de estas librerı́as, es que están disponibles para diversos sistemas
operativos. Ello implica que el programa puede funcionar correctamente en toda una variedad
de plataformas tales como con X-windows, MS-Windows, etc.
En un programa dirigido a un uso directo con el usuario, tan importante como las opciones
que este tiene y los algoritmos en él implementados, es la interrelación con la persona que debe
usarlo. Si consideramos como objetivo de uso la creación de todos los datos de un modelo para
10 Organización del sistema GiD
3
La calidad de estos datos, como podrı́a ser la calidad de la malla generada, se discute en otros capı́tulos.
4
Microsoft Foundation Class Library.
CRITERIOS PARA LA CREACIÓN DE LA INTERFAZ DE USUARIO 11
Partiendo de la base de que se quiere crear un sistema no dependiente del sistema operativo
y teniendo en cuenta todos estos factores y estándares, se han establecido una serie de reglas
en las que se ha basado la posterior creación de la interfaz de usuario:
1. Debe ser posible trabajar con el programa tanto en un entorno de ventana única como en
uno de múltiples ventanas.
2. Las ventanas, en general, no deben tener tamaño fijo y deben ser, hasta cierto punto,
adaptables a todos los tamaños.
3. El modo de uso debe ser bastante similar a los estándares antes consignados.
4. Toda la entrada de datos por parte del usuario, aunque pueda ser introducida de muchos
modos (por ventanas, botones, menús, etc.), debe estar centralizada internamente en un
solo lugar que pasa a ser el centro de flujo del sistema.
5
Se llama widget a cualquier elemento gráfico de interacción con el usuario como menús, ventanas, botones,
cuadros de diálogos, etc.
12 Organización del sistema GiD
Comentario: De esta manera los diferentes estilos de entrada de datos producen los
mismos resultados y pueden ser tratados de manera unificada. A partir de ello se facilitan
una serie de operaciones tales como: creación de ficheros batch, utilidad de deshacer y
otras. Ver [R+ 98] para más detalles sobre el tema.
Comentario: En programas de uso no ocasional, como puede ser un sistema para análisis
numérico, cobra especial peso la maximización de la eficiencia para el tratamiento de
modelos complejos.
A partir de los criterios mencionados y de las posibilidades que ofrece la librerı́a Tcl-Tk en
cuanto a la creación de widgets, se han definido todos los componentes gráficos del sistema. Se
puede comprobar que el mayor condicionante ha sido dar la libertad al usuario para que elija
el sistema de trabajo que mejor se adapte a sus necesidades.
Dada la utilidad requerida al sistema: generar todos los datos para un análisis por ordenador,
el programa debe tener conocimiento de los datos que requiere ese análisis en concreto. Pero al
mismo tiempo el programa debe ser capaz de generar datos para cualquier análisis. La manera
de resolver esta paradoja es que, en principio, el programa no tiene información sobre ningún
dato particular del análisis. Sólo tiene las utilidades comunes a todo tipo de cálculos como son
la modelación geométrica, generación de malla, y capacidad genérica para tratamiento de datos.
En este momento, no hay nada que se pueda asociar a una fuerza aplicada o a una velocidad
inicial. Pero existe la posibilidad de leer una determinada información de configuración diferente
AGRUPACIÓN Y ESTRUCTURA DE LOS DATOS 13
para cada código de análisis que le indica toda la información que necesita saber, y que en su
momento el usuario deberá tratar.
El proceso se basa en que para cada código de análisis que se desee tratar, deben existir un
conjunto de ficheros de configuración. Estos indican al programa qué datos debe introducir el
usuario y cómo debe escribirse el fichero de datos que posteriormente leerá el código de análisis.
En apartados posteriores se explicará con más detalle cuales son estos datos.
Una vez se tiene la configuración para diversos programas, se puede escoger en cualquier
momento con qué análisis se va a trabajar de entre todos los instalados. Esto provocará que
algunas de las ventanas y menús cambien para permitir al usuario introducir los datos que se
necesiten para el cálculo.
Observando los datos necesarios para un análisis cualquiera por métodos numéricos, se puede
subdividir el total de la información en una serie de conjuntos funcionales que se describen a
continuación:
• Materiales.
2.5.1 Malla
En todo problema de elementos finitos, volúmenes finitos, diferencias finitas e incluso de es-
tructuras de barras se necesita una malla que defina la forma geométrica del modelo. Esta
malla puede estar compuesta de un solo tipo de elemento o de una mezcla de elementos de
diversas tipologı́as. También puede contener elementos especiales como son los de junta o los
de contacto. Los elementos de barra pueden considerarse como elementos 1D de dos nodos.
14 Organización del sistema GiD
2.5.2 Condiciones
Se entiende por condiciones todos los datos que van asociados a entidades geométricas o de la
malla. Entre ellos figuran las condiciones de contorno y las condiciones iniciales del problema.
Pero en este subconjunto se puede incluir cualquier otro dato como podrı́an ser secciones o
dimensiones de los elementos, masas ficticias de los nodos, etc.
2.5.3 Materiales
En su sentido más general, un material podrı́a estar incluido en el conjunto condiciones porque
cumple la definición de ser un grupo de datos asociado a los elementos. Pero para este caso
concreto interesa diferenciarlo por la evidente significación e importancia que tienen los mate-
riales en la mayorı́a de análisis y simulaciones. A nivel de tratamiento de datos, un material
también es un conjunto de datos aplicado a los elementos, pero con la particularidad de que
hay una base de datos de materiales con nombre, que pueden ser modificados, y la misma base
de datos puede ser ampliada por el usuario.
Se incluyen en este subgrupo todos los datos que son únicos para todo el problema. Ejemplos
de ello podrı́an ser el tipo de análisis, solver 6 a usar, el tipo de integración para los elementos,
etc.
Son un conjunto de datos que pueden ser diferentes para cada uno de los intervalos. A contin-
uación se incluye la definición de intervalo.
6
Se llama solver al método de resolución de sistemas de ecuaciones.
SISTEMAS DE UNIDADES 15
Un caso tı́pico de uso de los intervalos es cuando, dado un análisis transitorio, puede ser
interesante aplicar al principio un tipo de condiciones de contorno (como podrı́an ser fuerzas
aplicadas) y más adelante cambiarlas por otras. En este caso las condiciones serı́an diferentes
para cada uno de los intervalos. También podrı́a ser interesante para un problema del mis-
mo tipo, cambiar la velocidad de avance en diferentes momentos del análisis. Esto se podrı́a
hacer creando los parámetros que controlan esta velocidad de avance como datos generales de
intervalo.
2.6.1 Problemática
En el esquema considerado como más óptimo7 , el preproceso tiene como información interna un
conjunto de magnitudes, y diversas unidades para cada una de ellas. Para unidades compuestas,
o sea que se forman como una combinación de las básicas, debe especificarse en primer lugar
la combinación a partir de las básicas. En el caso de las unidades no compuestas, la unidad de
referencia y la básica coinciden. La información se puede esquematizar según la Tabla 2.1.
El programa de por si, ya tendrá un conjunto elevado de magnitudes y unidades, que podrá
incrementarse para cada tipo de problema mediante el formato anteriormente descrito.
Por otra parte, cuando en el tipo de problema se definan propiedades de materiales que
requieran unidades, se incluirá en la definición un indicador de que la propiedad es de este tipo
y el valor del campo será el valor numérico más el nombre de la unidad, expresada según una
de las unidades ya definidas. Por tanto, un ejemplo de una propiedad expresada según este
criterio serı́a:
7
Más óptimo tanto para el usuario, como para el que define el tipo de problema.
SISTEMAS DE UNIDADES 17
QUESTION: Young_modulus#UNITS#
VALUE: 2.1e11Pa
El indicador #UNITS# sirve para identificar a esta propiedad como del tipo “propiedad con
unidades”, y ası́ poder distinguir el valor 2.1e11Pa como formado por un valor numérico 2.1e11
y una unidad Pa.
Únicamente con los datos del apartado anterior, ya serı́a posible trabajar con unidades dentro
del programa. Con este esquema, las unidades de trabajo para cada propiedad y para la
magnitud de longitud del modelo serı́an fijas. Si se supone que todas las propiedades de los
materiales del tipo de problema vienen dadas en unidades compatibles y que la unidad usada
en el modelo geométrico es también compatible con las anteriores, entonces el problema está
bien definido.
El inconveniente de esta solución es su excesiva rigidez, ya que la unidad de longitud del
modelo geométrico queda definida a priori sin que pueda ser cambiada y que las unidades de
las propiedades también tienen que expresarse en unas unidades fijas. El primer inconveniente
es el más grave, porque un modelo puede venir ya dado en unas unidades distintas y puede ser
una dificultad adicional el escalarlo. Por otra parte, en general se trabaja con más comodidad
en unas unidades tales que los números resultantes sean de un orden cercano a la unidad8 .
El usuario está también acostumbrado a unas unidades determinadas, o tiene datos en esas
unidades, y representa una dificultad adicional el cambio a las unidades exigidas.
Por todo ello, se hace necesario dar facilidades adicionales de control al usuario. La técnica
propuesta consiste en un conjunto de preferencias donde el usuario indique las unidades en que
desea trabajar. Este conjunto podrı́a subdividirse en tres grupos diferenciados9 que serı́an los
siguientes:
8
Este criterio tiene dos aspectos, el primero serı́a de orden psicológico y de costumbre en el usuario, y el
segundo irı́a en relación al calibrado correcto de las tolerancias en la modelación geométrica y en la generación
de malla.
9
Cada uno de estos grupos se expresarı́a mediante una ventana distinta en el programa.
18 Organización del sistema GiD
2. En el segundo grupo se especifica que unidades se quieren utilizar para las propiedades de
los materiales. Una de estas propiedades será también la longitud y su unidad no tiene
porque coincidir con la del modelo.
3. El tercer grupo especifica en qué unidades van a enviarse los datos desde GiD hacia el
módulo de cálculo. Una de sus unidades será también la de longitud y deberá estar fijada
e igual a la unidad definida en el primer grupo.
kp
• En ingenierı́a civil está muy extendido expresar las presiones en cm2 y, según el tamaño
de la estructura, puede ser de interés definir sus dimensiones en metros. En este caso
también tendrı́a interés el uso de ambas unidades.
El tercer grupo de unidades son las que se van a usar para enviar los datos al programa de
cálculo. La razón de que la unidad de longitud esté fijada al mismo valor que la dada para definir
el modelo, se basa en que es preferible evitar el escalado de los nodos de la malla. Este escalado,
además de ser costoso en tiempo de computación, es propenso a provocar errores y confusiones.
Es mucho más sencillo escalar las propiedades que tengan unidades. En general no importará en
que unidades se envı́en las propiedades al programa de cálculo, ya que en el postproceso habrá
facilidades similares para volver a hacer el cambio a las unidades deseadas (ver Apartado 2.6.4).
Se permite que el usuario tenga control sobre este tercer grupo de unidades con la intención de
que, en casos especiales, pueda enviar los resultados del cálculo a otro programa de postproceso
diferente.
Como regla habitual, no será necesario modificar este tercer grupo de unidades por parte
del usuario10 pero se permite acceso a ellas por las razones indicadas anteriormente.
• El postproceso lee los resultados como simples magnitudes escalares, vectoriales o ten-
soriales. Desconoce el significado fı́sico de cada uno de estos resultados y, por tanto, no
puede deducir automáticamente de que magnitud fı́sica tratan.
• La libertad que se da al usuario de ejecutar el análisis tanto desde el interior del sistema
como mediante la escritura de un fichero, supone la pérdida de control desde el sistema
respecto a la vinculación de un postproceso con un preproceso.
10
Estas consideraciones se explicarán claramente en la ventana de unidades del programa
11
Hay un número elevado de programas de análisis que únicamente requieren que los datos de entrada estén
expresados en unidades coherentes entre ellas, sin importar cual es su nombre y por tanto, sin poder realizar
transformaciones internas de unas unidades a otras.
20 Organización del sistema GiD
Resultados Magnitudes
RESULT: desplazamientos length
RESULT: tensiones nodales pressure
...
El preproceso podrı́a leer estos datos, cambiar las unidades según las definidas en el grupo
tercero y escribir un fichero adicional, paralelo al de cálculo, donde se escribirı́a esta información.
Una vez realizado el cálculo, el postproceso leerı́a este fichero al mismo tiempo que los resultados.
La visualización de resultados podrı́a hacerse en las unidades del grupo de preferencias segundo,
escalando los valores de resultados según sea necesario y visualizando en la pantalla gráfica las
unidades en que se representa cada resultado.
La razón de que deba escribirse este fichero adicional de comunicación entre el pre y el
postproceso, radica en el hecho de que deben almacenarse las unidades que efectivamente se
usaron en el momento de escribir el fichero de datos para el análisis y no las que haya en un
momento posterior en el programa.
Se han definido un conjunto de criterios para el diseño del sistema y para una interacción cor-
recta con el usuario. Estos criterios están destinados tanto a minimizar la curva de aprendizaje
del usuario como para permitirle un uso cómodo y eficiente de toda la funcionalidad que se
ofrece.
Se ha descrito con detalle la manera de tratar los sistemas de unidades dentro de GiD y su
relación con los datos que se transmitarán a los códigos de análisis.
CONCLUSIONES A LA ORGANIZACIÓN DE GiD 21
Tratamiento y modelización
geométrica
3.1 DEFINICIONES
Para introducir toda la temática de la modelización geométrica, será interesante ofrecer una
serie de definiciones sobre los conceptos básicos.
Entidad geométrica: Figura geométrica que puede ser tanto un punto como
una lı́nea, superficie o volumen, que tiene una definición matemática y una rep-
resentación gráfica. Estas entidades pueden llegar a tener una malla asociada o ser
solamente auxiliares.
1
Es habitual en los programas de CAD, que tengan una serie de utilidades de creación de entidades a partir
de datos geométricos de otras, como podrı́a ser un punto final de lı́nea o una intersección. Ello no significa que
se mantenga esta información de relación en la base de datos del sistema.
DESCRIPCIÓN Y COMPARACIÓN DE DIVERSOS MODELOS
GEOMÉTRICOS 25
✻ ✻
cabo este tipo de operaciones puede llegar a ser muy costoso y difı́cil.
En la Figura 3-1, se pueden ver dos configuraciones que deberı́an generar dos mallas com-
pletamente distintas. Para ello hay que mantener información sobre estas conectividades.
Figura 3-2: Una operación tı́pica en la geometrı́a booleana es la unión entre dos sólidos formando
un tercer sólido.
Otra alternativa para almacenar información de relación es la de usar unos tipos especiales de
entidades que actúan como contenedores de un conjunto de superficies. El usuario o el mismo
programa definirı́a estas polisuperficies o supersuperficies a partir de un cierto conjunto de
superficies y ası́ se crearı́a información topológica.
Esta información también puede usarse para una generación de malla pero se mantiene la
problemática de que no cubre toda la casuı́stica necesaria.
En este modelo, se define una jerarquı́a de entidades donde hay cuatro diferentes niveles:
Toda entidad perteneciente a alguno de los niveles superiores estará apoyada en sus extremos
en entidades de nivel inferior. A continuación se describen estas relaciones:
Lı́neas
N
M ❥
Lı́neas
Puntos
✌
Superficie
✰
❄
Figura 3-3: En la figura se pueden apreciar las relaciones jerárquicas entre diferentes entidades
geométricas.
• Los dos extremos de una lı́nea contendrán una entidad punto cada uno. Este punto será
también una entidad geométrica y será el mismo punto para dos lı́neas que compartan un
extremo.
• El contorno de una superficie estará formado por un conjunto cerrado de entidades lı́nea.
En el caso de que la superficie tenga agujeros, serán varios conjuntos cerrados. Dos
superficies que estén juntas por un lado, compartirán la misma lı́nea o lı́neas.
En la Figuras 3-3 en la página anterior y 3-4 en la página siguiente, pueden observarse algunos
ejemplos de estas relaciones.
De esta manera se consigue tener todas las entidades relacionadas entre ellas. O sea, que el
mismo usuario indica qué es lo que debe estar unido y lo que no. De alguna manera, al mismo
tiempo de estar definiendo geométricamente el modelo, lo está definiendo topológicamente.
Como inconveniente a este modelo, se puede citar la mayor dificultad en las operaciones
sobre la geometrı́a tanto a nivel de usuario como a nivel de desarrollo del código y de los
algoritmos. A nivel de usuario, este tiene que tener en cuenta en todo momento la forma
con la que están unidas las diferentes entidades y si algunas entidades deben colapsarse con
otras al realizar algunas operaciones. A nivel del desarrollo del código, aparecen una serie de
complicaciones debidas al hecho de que a las operaciones geométricas hay que añadir un control
de la información topológica. En algunos casos esta dificultad añadida requiere complicados
algoritmos de búsqueda y criterios de comparación.
La gran ventaja de este modelo es que la geometrı́a reproduce de manera natural la topologı́a
de la malla. Por tanto, una buena definición del modelo geométrico, deja a la malla perfecta-
mente definida a nivel de conexión de elementos y permite mezclar con facilidad elementos de
diferente tipo como pueden ser de barra, de lámina, de contacto o de sólido.
A partir de la comparación del apartado anterior, se escogió el modelo jerárquico por ser el que
mejor se adapta a las necesidades de un preprocesador para análisis por métodos numéricos. Se
debe tener en cuenta que la obtención de una malla para el análisis es el objetivo principal bus-
cado. Las dificultades adicionales provenientes de la manipulación geométrica pueden sortearse
mediante la importación de geometrı́as desde un CAD tradicional.
Por otra parte, unos modelos no son excluyentes de otros. Por tanto podrı́a pensarse en
adaptar a este modelo la geometrı́a booleana de sólidos, o el concepto de polisuperficies para
permitir un tratamiento más potente de la geometrı́a sin perder el control necesario para la
generación de la malla.
Para definir el modelo usado para tratar la geometrı́a, tan importante como describir las
relaciones topológicas entre las entidades es exponer que tipos de entidades geométricas se van
a usar y que descripción matemática tienen.
Para su exposición, estas entidades se van a dividir en cuatro grupos dependiendo de su
ENTIDADES PUNTO 29
Volumen
✾ Superficies
y ❖
Lı́neas
Puntos
☛
❘
Una entidad punto se define geométricamente por sus coordenadas. Independientemente de los
múltiples medios que existen para crear un punto, como pueden ser ejes locales, coordenadas
relativas, sistemas de coordenadas cilı́ndricos o esféricos, etc. el almacenamiento interno se
realiza mediante sus coordenadas en el sistema global de ejes coordenados.
El punto servirá como base para las subsiguientes lı́neas y para forzar que se genere un
nodo en la malla en el posición geométrica de dicho punto. También tendrá interés para asignar
condiciones de contorno sobre puntos. En la Figura 3-5, puede verse un ejemplo de este caso.
Las entidades lı́nea se definen topológicamente como la unión de dos entidades punto. En caso
de ser una lı́nea cerrada, el punto inicial y el final coincidirán.
Los diferentes tipos de entidades geométricas, que se diferencian por su descripción matemática
30 Tratamiento y modelización geométrica
❄ ❄
• Lı́neas rectas Aunque este tipo de entidad puede representarse como una lı́nea NURBS
lineal, interesa considerarla como una entidad geométrica diferenciada. La ventaja de
hacer un caso especial con ella es que se almacena menos información con la representación
simple y se simplifican algunos algoritmos.
• Arcos De igual manera que en las lı́neas rectas, éstos pueden representarse con una
NURBS racional, pero interesa más mantener la representación clásica de un arco bidi-
mensional más una matriz de transformación asociada. La ventaja de este segundo esque-
ma consiste en que se consigue una parametrización con el parámetro arco, lo cual tiene
indudables ventajas en la generación de malla.
• Lı́neas NURBS Es la entidad más potente y más versátil de todas las descritas. Con ella
se pueden describir exactamente polı́gonos de cualquier grado. También permite describir
cualquier tipo de lı́nea racional como cı́rculos, arcos, elipses, etc. Pero lo que la hace sin
duda más potente es el hecho de que permite crear curvas a trozos, o sea, que la curva final
es la unión de un conjunto de polinomios o curvas racionales con suficiente continuidad
ENTIDADES LÍNEA 31
en los puntos de unión. Todas estas propiedades han convertido a las lı́neas NURBS en el
estándar de uso en cualquier sistema de CADG2 tridimensional. La descripción detallada
de la matemática asociada a este tipo de lı́neas puede encontrarse en el apéndice A.
• La entidad donde se asignan condiciones de contorno que más tarde se transferirán a sus
elementos o nodos.
✸
Puntos de Tramo❃
α control recto
❖ Tramo
NURBS s
Polı́gono de control
Tramo
recto z
2
El acrónimo CADG proviene de Computer Aided Design Geometric, que se traduce por diseño geométrico
asistido por ordenador.
32 Tratamiento y modelización geométrica
Las superficies pueden definirse de manera equivalente a las lı́neas en cuanto a criterios topológicos.
En concreto, una superficie tiene como contorno a un conjunto de lı́neas y puede ser ella misma
contorno de una entidad volumen.
Polı́gono de control
Punto de control
✮
☛
Sup. Coon Lı́neas isoparamétricas
en u,v=0.5
Lı́neas de recorte
Sup. NURBS ✌
• Superficie plana únicamente definida por las lı́neas de su contorno y por la descripción
del plano. Se simplifican algunas operaciones como la generación de malla de superficie.
Su inconveniente es que, al no ser paramétrica, no se tienen direcciones preferentes para
operaciones tales como generación de malla estructurada o cálculo automático de ejes
locales.
Su uso puede entenderse de igual manera que el de las lı́neas sin más que cambiar elementos
de barra por elementos de superficie en el Apartado 3.5.
3.7 VOLÚMENES
La única información geométrica que los define son el conjunto de superficies que actúan
como su contorno. En esta entidad no es necesaria información geométrica interior. Un ejemplo
de la representación de un volumen puede verse en la Figura 3-8.
3
Es habitual referirse a ellas como superficies NURBS trimadas.
34 Tratamiento y modelización geométrica
Superficies
Volumen
❘
✴
N
Figura 3-8: En la figura se puede apreciar un volumen cuyo contorno exterior es un cono.
3.8 CONTACTOS
Hay algunos tipos de simulaciones numéricas que requieren elementos especiales de unión entre
diferentes partes del modelo. Estos contactos pueden ser de elementos degenerados o pueden
ser de movimiento de sólido rı́gido. En ambos casos debe establecerse una relación nodo a nodo
en la malla que se va a generar.
En los contactos de elementos degenerados, tı́picamente se duplica una lı́nea en 2D o una
superficie en 3D. Ambas entidades ocupan la misma posición geométrica y pueden ser la sep-
aración de dos volúmenes que están uno al lado del otro o pueden ser el contacto entre un
volumen y el exterior (en 2D, lo mismo para superficies). El contacto que se crea entre ambas
entidades produce, al mallar, elementos degenerados que pueden ser tanto de lı́nea, unión nodo
a nodo, como cuadriláteros, hexaedros o prismas de base triangular. En todos los casos, una
de sus dimensiones será 0.
Los contactos con movimiento de sólido rı́gido, se pueden crear entre dos entidades con
dimensiones geométricas equivalentes, pero con un movimiento de sólido rı́gido entre ellas. En
este caso, también hay una relación nodo a nodo entre ambas superficies y se pueden crear
elementos de contacto equivalentes al caso anterior. Tı́picamente se crean para forzar que se
genere exactamente la misma malla en dos zonas del modelo.
Se han implementado dentro del sistema todas estas posibilidades de contacto mediante
IMPORTACIÓN DE MODELOS GEOMÉTRICOS 35
Volúmenes
q
❄
• Contactos entre dos piezas mecánicas para evitar que una penetre en el interior de la otra.
En los siguientes apartados se van a describir ambas fases. La primera de una manera genérica
y la segunda con mayor precisión, pues es la que tiene una relación más alta con el concepto de
preproceso.
Cada programa de modelado geométrico tiene su propio formato de base de datos interna. Esto
se hace ası́ para facilitar y optimizar el almacenado de las entidades que maneja el código. El
inconveniente de este sistema de organización de datos es que cada programa sólo entiende su
propio formato de base de datos y no el de otros. Ello conlleva a definir unos formatos de
fichero de intercambio, aceptados por todos los programas, que son los que se van a usar para
importar y exportar los modelos. A lo largo de los años, una serie de instituciones y entidades
4
No es nada extraño encontrar discrepancias en la geometrı́a importada que provoquen errores en la tercera
e incluso en la segunda cifra significativa.
IMPORTACIÓN DE MODELOS GEOMÉTRICOS 37
✲ IGES ✲
✲VDA ✲ Filtros de Modificaciones
CADG ✲ Importación ✲ corrección y ✲
✲ DXF ✲ manuales
✻ ✲ ... ✲ adaptación
❄
...
❄
Generación
de malla
han ido definiendo varios de estos estándares y algunos de ellos son aceptados y usados por
la mayorı́a de programas de CAD y de tratamiento geométrico. En este apartado se van a
describir brevemente tres de ellos, estudiados e implementados en el programa desarrollado en
la tesis.
El código encargado de leer estos formatos debe ser capaz de transformar todas las entidades
que no están directamente soportadas en el sistema a otras que si lo estén. En algunos casos,
ello implica una aproximación, pero si se tiene como entidad básica a las NURBS, casi cualquier
entidad soportada en esos formatos puede ser descrita exactamente como una superficie de este
tipo.
El proceso descrito en el apartado anterior, acaba cuando se tienen dentro del sistema las
mismas entidades que estaban descritas en el fichero de intercambio. Pero el proceso no acaba
aquı́. Es necesario convertir ese conjunto de entidades en un modelo geométrico apto para la
posterior generación de malla.
Gran parte de esta mejora del modelo puede realizarse de forma automática, o sea, sin
intervención del usuario. En algunos casos es necesario que se corrijan manualmente algunos
de los problemas que puedan aparecer. Esto pasa especialmente cuando el modelo no se ha
diseñado pensando en que se debı́a utilizar para una simulación numérica o CAE. Para estos
casos, un buen programa de preproceso debe tener, además de los filtros de corrección, un buen
número de herramientas de manipulación geométrica que permitan al usuario realizar dichas
mejoras y adaptaciones sobre el modelo.
Tolerancia
❄
Colapsado
❄
Figura 3-11: El proceso de colapsado reduce las cuatro lı́neas iniciales a tres.
• Dos lı́neas se colapsarán si comparten los puntos finales y la distancia máxima entre ellas
es menor que . También se realizará el colapso si una de ellas pertenece al interior de la
otra. O sea, que sus puntos finales Pi cumplan que
dist(Pi , L) <
además del criterio anterior. En este último caso, el producto del colapso no será una
única lı́nea sino varias.
contorno.
Para el cálculo de las di , se calcula el punto Pi como el mapping 6 o reposicionamiento del
punto origen sobre la entidad y di = Pi − Pi . El proceso de reposicionamiento se describe en
la sección 3.10.3 en la página 52.
Otro problema que surge al colapsar entidades, es que deja de cumplirse que las entidades
de contorno de lı́neas o superficies pertenecen al interior de la entidad base. Este propiedad es
imprescindible para que funcionen la mayorı́a de algoritmos posteriores, entre ellos la generación
de malla. La corrección a este problema se consigue mediante el algoritmo de movimiento de
puntos descrito en el Apartado 3.10.2.
Por definición de lı́neas o superficies NURBS, no puede existir en la lista de knots uno de
ellos que tenga multiplicidad mayor que el orden de la entidad. Pero en algunos casos, la
información contenida en el fichero de intercambio incluye tal error. En estos casos es necesaria
una corrección de la lista que se basa en eliminar los knots sobrantes y eliminar los puntos y
5
En general, mayor número de puntos de control y mayor grado implica una complejidad más grande. Por
tanto, se escogerán más puntos cuando aumenten estos valores.
6
Se llama mapping a la transformación geométrica sobre un punto que lo desplaza sobre otra entidad ge-
ométrica como puede ser una superficie.
7
La lista de knots es un conjunto de valores reales no decrecientes pertenecientes al espacio paramétrico y
que se usan para definir una NURBS. Una definición más detallada de knot se da en el Apartado A.4.
IMPORTACIÓN DE MODELOS GEOMÉTRICOS 41
Colapsado
✛
Detalle ❄✲
Detalle a eliminar
Figura 3-12: En la figura se muestra el ahorro de elementos que supone eliminar detalles
innecesarios.
los pesos asociados. Ası́, dada una curva de grado n y L puntos con la siguiente lista de knots:
ω1 , . . . , ωL (3.3)
Debe tenerse en cuenta que la nueva lista tendrá L−p puntos de control y que la curva resultante
será sólo una aproximación de la curva original.
3.9.5 Reparametrizaciones
Para poder generar malla correctamente sobre una lı́nea o superficie, serı́a óptimo que la en-
tidad estuviese parametrizada según el parámetro arco. Esta propiedad normalmente no se
da en las NURBS. El problema se corrige, hasta cierto punto, con las técnicas descritas en el
Apartado 4.9.2. Sin embargo, es conveniente mejorar la parametrización desde el origen para
obtener mejor calidad en la generación. A estos cambios en las lı́neas o superficies para obtener
mejor avance con el parámetro se les denomina reparametrizaciones.
dL
dt
ltot
Antes
Después
0 1
Parámetro t
Uno de los problemas aparece cuando hay graves discrepancias entre la relación de distancias
IMPORTACIÓN DE MODELOS GEOMÉTRICOS 43
entre los nodos con la relación de distancias entre los puntos de control. La detección del
problema se produce mediante una comparación entre módulos de derivadas tal que:
dL
1 dt t=ki−
<
dL
<F
(3.7)
F
dt t=ki+
Donde los ki en ( 3.7) son todos los knots interiores de la lista y F es un parámetro máximo
aceptable, cuyo valor puede situarse en 4-5 para producir parametrizaciones aceptables.
k0 , . . . , ki , . . . , kL+n (3.8)
P1 , . . . , PL
Se van insertando knots en los valores de los knots existentes en (3.8) hasta que todos ellos
tengan multiplicidad igual al orden
El nuevo número de puntos L , se habrá incrementado tanto como la suma de diferencias entre
multiplicidades y orden de cada uno de los knots.
lc
ki+n+1 − ki+n = (3.12)
ltot
La curva ası́ calculada tendrá la misma forma geométrica que la curva original pero un
avance distinto con el parámetro, o sea, una parametrización distinta. En la Figura 3-13, puede
observarse la mejora tı́pica que se produce con la aplicación de este algoritmo.
En algunos casos, la corrección del apartado anterior no es suficiente para asegurar una parametrización
suficientemente buena. Estos casos se dan tı́picamente cuando alguno de los puntos de control
está repetido varias veces, o el orden de magnitud de distancias entre algunos puntos disminuye
en varios factores respecto a los otros.
Para estos casos se acepta obtener una curva o superficie que no sea exactamente igual que
la original pero que la aproxime lo suficiente. Debe tenerse en cuenta que la importación se
realiza bajo el control de una tolerancia. Por tanto, es lı́cito cambiar la forma de una curva
siempre que se mantenga dentro de los lı́mites de esa tolerancia.
3,4
1
knots: 0 0 0 0.09 0.18 0.26 0.34 0.43 0.52 0.63 0.68 0.73 0.84 1 1 1 1
Figura 3-14: Conversión de una lı́nea NURBS a una NURBS cúbica interpolante que la aprox-
ima.
Dado un conjunto de lı́neas NURBS alineadas, es posible convertirlas en una sola lı́nea. Si se
cumplen una serie de condiciones, es provechoso tener menos lı́neas que definan el modelo. La
razón de ello es que, en el momento de la generación de malla, el programa fuerza la inclusión
de como mı́nimo un elemento para cada una de las entidades. En segmentos extremadamente
pequeños, esto puede significar un gran incremento en la complejidad de la malla resultante.
Los criterios para realizar la unión son los siguientes:
1. Debe existir continuidad suficiente entre los segmentos. Tı́picamente se considera sufi-
ciente continuidad C 1 .
2. Los segmentos individuales no deben tener superficies aisladas sobre ellos. El conjunto de
segmentos debe ser contorno de cada una de las superficies que tienen alrededor.
46 Tratamiento y modelización geométrica
✣ ✲
✻
✻
No puede realizarse la unión
Para realizar la unión, las curvas deben igualarse en grado. Por tanto, se elevará el grado
de todos los segmentos al del segmento con grado mayor n. Seguidamente se unirán los puntos
de control y se calculará la nueva lista de knots a partir de las originales de la siguiente manera:
Algunos algoritmos necesarios para operar sobre las lı́neas, entre ellos la generación de malla,
realizan la resolución de sistemas no lineales que necesitan de la derivada de la curva para
realizar los avances. Si en el interior de la curva existe una discontinuidad acusada en la
derivada, estos algoritmos pueden llegar a fallar. Por esa razón, resulta interesante mantener
continuidad C 1 en toda la lı́nea8 . El proceso consistirá, pues, en subdividir la curva en todos
los puntos en que no se verifique la condición de continuidad adecuada.
La subdivisión se realiza mediante la inserción de knots en t igual al punto de discontinuidad
hasta que se alcance multiplicidad igual al orden. Las nuevas curvas serán:
k0 , . . . , ki , . . . , ki , . . . , kL+n
n+1
se obtendrá:
k0 ki
,..., curva A
ki ki
ki+n+1 − ki+n+1 kL+n − ki+n+1
,..., curva B
kL+n − ki kL+n − ki
Los puntos de control simplemente se repartirán según el número de knots que correspondan a
cada curva.
Para poder realizar la generación de malla, es imprescindible que las lı́neas de contorno de una
superficie estén bien orientadas. Se considera una lı́nea L(t) bien orientada, cuando aplicando
en ese punto,
el criterio dextrógiro a su vector de avance y a la normal de la superficie N
obtenemos que el vector:
× dL
=N
V
dt
8
En general, es suficiente con que el ángulo de discontinuidad sea pequeño.
48 Tratamiento y modelización geométrica
✻
Normal
v=1
u=0 ✙
I
v
✸
✲
❥
u
v=0
✴ u=1
❃
Figura 3-16: Criterio de signos y orientaciones en las lineas de recorte de una superficie trimada.
Dada una lı́nea sobre el contorno exterior de la NURBS, estará bien orientada si se cumple
que:
dL(t) v)
δS(u,
· >0 ∈v=0
L (3.17)
dt δu
dL(t) v)
δS(u,
· <0 ∈v=1
L (3.18)
dt δu
Una comprobación adicional que puede hacerse consiste en calcular la normal a la superficie
en el centro calculado según los criterios del Apartado 3.10.1 y calcular la normal aproximada
IMPORTACIÓN DE MODELOS GEOMÉTRICOS 49
L =
N L(t × L(t
i) − C i + ∆ti ) − C
(3.19)
i
es el centro de la superficie en (3.19). Se considerará que las lı́neas están bien orientadas
Donde C
si:
·N
N L > 0
Un problema muy habitual en los modelos geométricos importados de CAD, es que algunas
superficies tiene ángulos casi nulos que imposibilitan el mallado correcto sobre ellas. En estos
casos interesa colapsar ese ángulo hasta convertirlo en uno más grande que permita introducir
un elemento aceptable en él.
M
✲
✻
Ángulo muy
pequeño Colapso de ángulo
α
β
✛ ❄✲
✛
L β¿α
A efectos de lectura, cada uno de los algoritmos puede considerarse como relativamente inde-
pendiente de los otros.
= S(0.5,
C 0.5)
En las superficies trimadas, esté cálculo se complica pues uno de los criterios imprescindibles
para que muchos algoritmos funcionen, es que el centro debe estar contenido en el interior de
las lı́neas de contorno.
El proceso para la obtención del centro consiste en calcular el centro de las lı́neas de contorno
mediante la ecuación:
j (ti )
i,j L
=
C (3.20)
i
Donde i en ( 3.20) representa un número suficientemente grande de particiones para cada lı́nea.
Este punto será necesario proyectarlo hacia el interior de la superficie mediante las técnicas
de reposicionamiento de puntos que se describirán más adelante. En la Figura 3-18 se puede
ver que las diferencias entre estos puntos pueden llegar a ser muy grandes.
ALGORITMOS DE MODELACIÓN GEOMÉTRICA 51
✻
Punto proyectado
✮
✗
✻
Cuando se desea mover un punto de la geometrı́a, si hay entidades de orden superior sobre él,
éstas deben ser arrastradas y deformadas acordemente. Es muy importante tener en cuenta,
al diseñar el algoritmo, que el movimiento de puntos, lı́neas y superficies debe ser coherente
entre ellos para evitar que en la configuración final algunas entidades que son contorno de otras,
dejen de estar en su interior.
Para ello se calcula una esfera que sea contenedora de todas las entidades que están conec-
tadas directamente al punto. Si el radio de esa esfera es R, se define una función f en el espacio
tal que:
R − Pi − P0
f = ∆P0 (3.21)
R
La ecuación (3.21) se aplicará a todas las entidades que estén contenidas en dicha esfera. Para
las lı́neas y superficies NURBS, los Pi representan los puntos de control.
52 Tratamiento y modelización geométrica
∆P0
P0
✴
q
✗
✻
✾
Radio de la esfera
2. Dado un punto cercano a la superficie, encontrar el punto que sea proyección de éste sobre
dicha superficie. También puede entenderse como buscar el punto
PI ∈ S(u,
v) tal que P − PI sea mı́nimo
de la solución. La segunda ventaja es que es más fácil llegar al punto objetivo desde un punto
inicial que ya está en el interior de la superficie.
v)2
f (u, v) = P − S(u, (3.23)
δf (u,v)
δu =0 (3.24)
δf (u,v)
δv
desarrollando,
v)) δS(u,v) 2
2 · (P − S(u,
A= δu
=0 (3.25)
∼ v)) δS(u,v) 2
2 · (P − S(u, δv
Para resolver este sistema no lineal es necesario, por una parte, tener unos buenos valores
iniciales. Por otro lado, la resolución se puede ejecutar aplicando el método de Newton-Rapson
con line search 9 . Suponiendo unos u0 , v0 suficientemente buenos, la resolución se realiza de la
siguiente manera:
u0
x = (3.26)
v0
se calcula el residuo R
= −A · x
R (3.27)
∼
9
Búsqueda según una determinada dirección de avance.
54 Tratamiento y modelización geométrica
Se comienza a iterar
< se acaba.
si R (3.28)
Se resuelve el sistema:
x = x + ∆x (3.30)
= −A · x
R (3.31)
∼
<
R se acaba (3.32)
Se itera volviendo a (3.28) o se para cuando se alcanza un número máximo de iteraciones. Debe
tenerse en cuenta que hay que controlar que en todo momento u, v ∈ [0, 1].
2 2 2
δS(u,v) δ2 S(u,v) δS(u,v) δ2 S(u,v)
−
δS(u,v) −
δu ( S(u, v) P ) δu2 δu δv (S(u, v) P ) δuδv
J = 2
2 2
∼ δS(u,v) δ2 S(u,v) δS(u,v) 2
δ2 S(u,v)
δS(u,v)
(S(u, v) − P ) δv2
δu δv (S(u, v) − P ) δuδv δv
(3.33)
El line search es una técnica para acelerar la convergencia del método mediante la disminu-
ción de iteraciones. Consiste en que al finalizar cada iteración, se acepta la dirección de avance
y el recién
del incremento y se realiza una aproximación lineal a la solución. Dados A, x, R
∼
calculado ∆x, para obtener un x mejorado se procede de la siguiente manera:
ν=1
φ0 = ∆x · R x0 = x (3.34)
φ = ∆x · R (3.37)
ALGORITMOS DE MODELACIÓN GEOMÉTRICA 55
φ
< se acaba. (3.38)
φ0
se actualiza ν
φ0
ν=ν (3.39)
φ0 − φ
u0 = v0 = 0 u1 = v1 = 1 (3.40)
= u0 + (i − 1) (u1 − u0 ), v = v0 + (i − 1) (v1 − v0 ))
Pi,j = S(u i, j = 1, . . . , N + 1 (3.41)
N N
n , vn ) tal que Pn − Pi,j sea mı́nima
Pn = S(u (3.42)
1 1
u0 = un − u1 = un + (3.43)
N N
1 1
v0 = vn − v1 = vn + (3.44)
N N
Se itera volviendo a (3.41).
Este proceso se realiza varias veces y puede combinarse con la resolución por Newton-Rapson
pasando repetidamente de una metodologı́a a la otra.
tal que P1 − P2 sea mı́nima. La solución a este problema consiste en resolver un sistema
de ecuaciones no lineal similar al del Apartado 3.10.3. La particularidad que debe tenerse en
cuenta en este caso, es que dos lı́neas pueden intersectarse en varios puntos y algunos de ellos
puede ser ya un punto final. Para estos casos hay que partir de una cierta distancia desde los
56 Tratamiento y modelización geométrica
Punto buscado
✕ L1
❃
✎
M
L2
Figura 3-20: Zona válida para realizar la aproximación en la búsqueda de la intersección de dos
lı́neas en el caso de que ya estén unidas.
En la Figura 3-20, se dibuja la zona válida para aplicar el primer algoritmo básico de
aproximación.
La intersección entre lı́neas y superficies se resuelve de manera similar. Cuando la lı́nea y
la superficie no intersectan, se puede aplicar la misma técnica para extender la lı́nea hasta que
entre en contacto con la superficie.
La intersección de superficies consiste en calcular todas las lı́neas que pertenecen a la unión
entre ambas entidades. Estas lı́neas serán una aproximación numérica a la intersección real. El
proceso se puede subdividir en dos partes.
1. Encontrar algún punto de partida para todas las lı́neas que forman parte de dicha inter-
sección.
Para realizar el primer paso, primero se deben encontrar las intersecciones de todas las lı́neas de
contorno de cada una de las superficies con la otra mediante las técnicas descritas previamente.
ALGORITMOS DE MODELACIÓN GEOMÉTRICA 57
Superficie 1
Superficie 1
❖ ✻
✼
Superficie 2
Lı́nea de intersección Superficie 2
Lı́nea de intersección
(A) (B)
Estos puntos serán origen de algunas de estas lı́neas. El resto de las lı́neas deben encontrarse con
algún algoritmo de búsqueda. El algoritmo implementado se basa en la tecnologı́a de Octtrees
descrita en el Apartado 4.12.1. Se define una cuadrı́cula de puntos suficientemente densa para
cada una de las superficies y se van comparando los de una con los de la otra mediante la
búsqueda rápida en el árbol de puntos. Cuando se encuentran puntos suficientemente cercanos,
se considera la zona como de posible paso de una lı́nea de intersección. Para las superficies
trimadas, deben excluirse las zonas que pertenecen al exterior de las lı́neas de recorte.
Conociendo algún punto perteneciente a cada una de las lı́neas, el cálculo efectivo de éstas
se realiza mediante un algoritmo iterativo. Dado P0 tal que P0 ∈ S
1 (u, v) y P0 ∈ S
2 (u, v), se
Donde δ en (3.47) es una distancia fija que representa la precisión en la obtención de puntos
para la intersección. Este planteamiento implica encontrar u1 , v1 y u2 , v2 tal que:
S1,x (u1 , v1 ) − S2,x (u2 , v2 )
S1,y (u1 , v1 ) − S2,y (u2 , v2 )
A=
=0
(3.48)
∼ S1,z (u1 , v1 ) − S2,z (u2 , v2 )
1 (u1 , v1 ) − P0 − δ
S
La resolución de este sistema no lineal se realiza mediante las técnicas descritas en apartados
anteriores. Cuando se ha llegado por ambos lados a los extremos de las lı́neas, que serán una
lı́nea de contorno o indicarán que la propia lı́nea es cerrada, se detiene el proceso. Entonces se
puede calcular una lı́nea NURBS que interpole a todos estos puntos y cumpla algunos criterios
de tangencia en extremos tal como se describe en el Apartado A.5.10.
Para realizar una visualización foto-realı́stica de un modelo geométrico, existen diversas técnicas:
2. Iluminación Gouroud. En este caso se da una normal por cada vértice del triángulo.
El algoritmo realiza una interpolación lineal de colores en los vértices del triángulo y luego
hacia el interior.
3. Ray tracing. Para cada pixel de la pantalla, se calcula el rayo que procede del punto
de vista y intersecta con ese punto de pantalla. Para cada rayo, se calcula su intersección
con todos los elementos del modelo y se calculan sus propiedades lumı́nicas. Este modelo
no está contemplado en la librerı́a OpenGL y por tanto, no se ha usado en la tesis.
Figura 3-22: En estas figuras se pueden apreciar dos Superficie-mallas, que provienen de una
única malla de triángulos. En la figura izquierda, las superficies se representan según el modo
de visualización común. En la derecha se dibuja también la malla de base.
2. Los elementos pueden tener altos niveles de distorsión. Esto permite un gran ahorro
de elementos en superficies con grandes diferencias de curvatura en sus dos direcciones
principales.
4. La transición de tamaños de elemento será siempre lo más rápida posible para minimizar
el número final de ellos.
En la implementación que ha dado lugar a esta tesis, la malla se genera internamente y se cal-
culan los tamaños según un criterio de error cordal. Se permite, en los casos en que se considere
apto, la generación de malla estructurada de triángulos con tamaños en ambas direcciones en
función de cada una de las curvaturas principales. Finalmente, se suministran los triángulos
generados juntamente con las normales nodales a la librerı́a gráfica.
Figura 3-23: La malla de esta figura es el producto de la generación sobre las entidades descritas
en la Figura 3-22. Puede apreciarse que el tamaño de elementos es distinto en ambas.
Dada una malla espacial de triángulos o cuadriláteros, el proceso de creación de una entidad
de este tipo pasa por:
1. Lectura de la malla.
2. Compatibilización de normales.
4. Identificación de las lı́neas internas, que se calculan con un criterio de ángulo máximo.
Una vez leı́da la malla, se calcula información de relaciones de entidades. En concreto, debe
poder encontrarse de manera eficiente para cada uno de los elementos, la lista de sus elementos
vecinos. La identificación de los contornos externos consiste en encontrar las caras de elementos
que no tengan vecinos.
Los contornos internos consisten en encontrar todas las aristas entre elementos tal que el
ángulo entre ambos elementos sea mayor que uno fijo. El proceso se realiza mediante avance
por las aristas angulosas y subdivisión en dos lı́neas en caso necesario.
A partir del conjunto de aristas que forma un contorno externo o una lı́nea interior, se
interpolará una lı́nea NURBS que cumpla criterios suficientes de tangencia. En las Figuras 3-
22 y 3-23 en la página anterior, se puede ver un ejemplo de una entidad de este tipo.
La entidad geométrica volumen se define como un conjunto cerrado de superficies que comparten
sus lı́neas de contorno dos a dos. En el caso de que el volumen contenga agujeros, tendrá
tantos subconjuntos cerrados de superficies como agujeros más el externo. Dada una selección
de superficies, es necesario primero distinguir si cumplen el criterio de formar uno o varios
conjuntos cerrados. Para ello, la comprobación es únicamente topológica dado que gracias al
modelo jerárquico, las uniones entre superficies están ya definidas.
Esta comprobación se basa en que partiendo de una superficie cualquiera, se accede a las
vecinas mediante el criterio de que dos superficies son vecinas si comparten la misma o mismas
lı́neas. Cuando no se puede avanzar más, cada una de las lı́neas encontradas debe pertenecer
exactamente a dos superficies. Se debe contemplar el caso especial de las polilı́neas en las que
algunas de sus sub-lı́neas sean contorno de alguna superficie. Cuando se cierra el volumen, si
quedan aún superficies en la selección se repite el proceso para identificar los agujeros.
Mediante este mismo proceso es fácil orientar las superficies de forma tal que todas las
normales apunten hacia dentro o todas hacia fuera. Para ello, como las superficies mantienen
un indicador de sentido para cada una de sus lı́neas, confrontando estos indicadores se puede
resolver si una superficie está en el mismo sentido o en el opuesto que la de referencia. Al acabar
el proceso de búsqueda, se habrán definido los indicadores de orientación para cada una de las
superficies.
62 Tratamiento y modelización geométrica
El problema que aparece es que en este momento se tienen todas las superficies orientadas de
manera coherente entre ellas, pero no se sabe si con las normales apuntando hacia dentro o hacia
fuera. Para la posterior generación de la malla, es conveniente tener a las normales apuntando
hacia dentro10 . El problema se resuelve calculando la magnitud con signo del volumen interior
del sólido.
Por el teorema de Gauss:
∂f
dv = f · Ni dΩ (3.49)
V ∂xi ∂V
3 3
∂xi
dv = xi · Ni dΩ (3.50)
V i=1 ∂xi ∂V i=1
operando:
3 dv = dΩ
x · N (3.51)
V ∂V
por tanto podemos obtener la magnitud orientada del volumen con la fórmula:
dΩ
x · N
∂V
V = (3.52)
3
El signo de V nos indicará si la normal de las superficies apunta hacia dentro o hacia fuera
del volumen. Para realizar esta operación se va integrando sobre cada una de las superficies y
sumando sus resultados parciales.
dΩ = x · N
x · N sup (3.53)
∂V
• Para las superficies paramétricas con parámetros u,v en el intervalo [0, 1] como son las
10
En realidad, lo realmente imprescindible es saber hacia donde apuntan las normales, si hacia dentro o hacia
fuera.
ALGORITMOS DE MODELACIÓN GEOMÉTRICA 63
1 1
dΩ = ∂S ∂S
x · N x · × dudv (3.54)
∂V 0 0 ∂u ∂v
ξi + 1
ξiN = (3.55)
2
Para el caso de las superficies NURBS, la integración se realiza sobre las superficies de Bézier
obtenidas de la descomposición de la NURBS. De esta manera, la precisión de la integral está
proporcionada a la cantidad de información geométrica que contiene esta entidad geométrica.
Para el cálculo del centro del volumen se puede usar el método elemental de asimilarlo al
centroide de todos los puntos de todas las superficies.
n
c = i=1 Pi
X (3.56)
n
donde estos n puntos se obtendrı́an a partir de todos los puntos extremos de todas las lı́neas
pertenecientes a su vez a todas las superficies del contorno. Este método tiene el inconveniente
de que en algunos casos se concentran muchas superficies en una zona del volumen y muy pocas
en otras zonas. Entonces el centro se desplaza hacia la zona en que hay más superficies y por
tanto más puntos. Otro método es calcularlo mediante integración:
1 2 1
xi dv = ∂i r dv = ni r 2 dΩ (3.57)
V v 2 2 ∂v
1
xdv = r 2ndΩ (3.58)
v 2 ∂v
64 Tratamiento y modelización geométrica
N
x
Figura 3-24: Para hallar el volumen orientado de un sólido cerrado, es necesario integrar sobre
las superficies.
c = 1
X r 2ndΩ (3.59)
2V ∂v
En este apartado se intentará distinguir entre lo que es estado del arte y conocimientos generales
en contraposición a las nuevas ideas o implementaciones que se han desarrollado en la tesis.
Deben entenderse como aportaciones la resolución de problemas y la creación de técnicas que
no tienen una metodologı́a comúnmente aceptada en la literatura.
APORTACIONES EN LA MODELIZACIÓN GEOMÉTRICA 65
Modelo jerárquico
Existen diversos ejemplos de sistemas que usan modelos jerárquicos. Al mismo tiempo, el
concepto de información topológica asociado a la información geométrica tiene muchos paralelos
con la geometrı́a booleana de sólidos, la cual se usa ampliamente en muchos sistemas de CAD.
La aportación de esta tesis ha sido modificar el modelo jerárquico para crear un paralelo preciso
entre la conexión topológica de la geometrı́a con la conexión entre los nodos y elementos de la
malla resultante. De esta manera, se pueden introducir de manera natural diversos conceptos
como:
• Creación de juntas.
Los modelos geométricos que provienen de CAD, han sido creados pensando en unas necesidades
de diseño o de mecanización que no coinciden con las necesidades de generación de malla.
Se han desarrollado un conjunto de técnicas y algoritmos para modificar la geometrı́a original
y hacerla apta para el mallado. Entre ellos figuran los de colapsado de entidades, la corrección
de los knots, las reparametrizaciones, la conversión a cúbica similar, la unión de lı́neas, la sub-
división de lı́neas, la reorientación del contorno de superficies y el colapso de ángulos pequeños.
Algunas de estas correcciones solventan problemas o inexactitudes en la definición original. En
otros casos, pese a que la información de base es correcta, es necesario modificarla para poder
obtener en ella una malla que cumpla con los requisitos del análisis por métodos numéricos.
Ası́, si una entidad es contorno de otra, después del movimiento debe continuar situada ge-
ométricamente sobre dicho contorno.
Intersecciones
Existe abundante literatura sobre diversas metodologı́as para el cálculo de intersecciones entre
las diversas entidades (ver [HL93]). Sin embargo, éste es un problema complejo que exige buenos
algoritmos aproximativos. En la presente tesis se ha optado por aprovechar todas las posibili-
dades que proporcionan técnicas como la de las estructuras Octtree, la interpolación mediante
lı́neas NURBS con información de tangentes y la resolución de problemas de minimización y
sistemas no lineales mediante algoritmos tipo Newton-Rapson. Esta aproximación al problema
es novedosa en contraposición a las descritas en las referencias dadas [HL93, Far93, FvDFH93].
Visualización gráfica
Superficies-malla
El uso de mallas como información geométrica base para generar nuevas mallas encima, ha sido
ampliamente documentada en [Löh96] y [RSSV99]. Sin embargo, la integración total de este
tipo de entidad con el resto de entidades geométricas, dotándola de opciones similares a las
otras, es una forma nueva de operar con estas superficies. Su método de mallado, totalmente
integrado en el método de generación de malla en el espacio, conduce a la homogeneidad en la
resolución de estos algoritmos.
Generación de malla
4.1 INTRODUCCIÓN
La mayor parte de los métodos numéricos actuales basados en técnicas de discretización (ele-
mentos finitos, volúmenes finitos, diferencias finitas, integral de contorno, etc.), resuelven las
ecuaciones diferenciales de gobierno de un problema sobre una malla.
Se entiende por generación de malla el proceso por el cual a partir de la geometrı́a que define
al modelo y de unas indicaciones dadas por el usuario, se procede a la construcción automática
de una malla que defina adecuadamente a esa geometrı́a con los condicionantes del programa
de análisis a usar.
Para la correcta obtención de esta malla hay que tener en cuenta una serie de factores que
pueden venir dados por el usuario o que pueden calcularse automáticamente:
• Selección de las entidades geométricas que deben ser malladas. Puede interesar en algunos
casos obtener también la malla de contorno.
En siguientes apartados se comentará la problemática que origina cada uno de estos factores
y las diversas soluciones que ha sido necesario desarrollar en la tesis. También se describirán
los algoritmos usados en los diversos tipos de generaciones de mallas.
Según las particularidades del análisis a efectuar, puede ser necesario obtener elementos de
distinto grado. Los elementos básicos, que son los que genera por defecto el código de mallado
desarrollado en la tesis son:
Elementos de lı́nea
2 nodos 3 nodos
Elementos triangulares
3 nodos 6 nodos
Cuadriláteros
Tetraedros
4 nodos 10 nodos
El cálculo de los nodos adicionales para elementos de mayor grado requiere que estos nuevos
nodos también estén sobre la entidad geométrica correspondiente. Por ello no es válido calcu-
larlos simplemente como el punto medio del segmento o de la cara. Es necesario posicionarlos
previamente sobre la lı́nea o superficie a la que pertenecen o, en algunos casos, hacer un reposi-
cionamiento1 posterior.
Como restricciones a la elección de elementos está, por una parte, que la unión de enti-
dades tiene que ser compatible2 y por otra, que el grado de los elementos (lineal, cuadrático, o
1
posicionamiento o mapping sobre la superficie.
2
Un volumen mallado con hexaedros no puede estar unido a uno de tetraedros. Por otra parte pueden coexistir
dos volúmenes con estos tipos diferentes siempre que no haya conexión entre ellos.
72 Generación de malla
Hexaedros
6 nodos
Dado un conjunto de entidades geométricas, el criterio por defecto es que sólo se generará
malla sobre las entidades que no tengan una entidad de grado superior superpuesta4 . Por
tanto, si se tiene una superficie cuyo contorno son lı́neas, se obtendrá la malla de los triángulos
3
El tipo cuadrático genera el cuadrilátero serendı́pito de 8 nodos y el hexaedro de 20. El tipo cuadrático9
genera el cuadrilátero lagrantiano de 9 nodos y el hexaedro de 27. Ambos generan el triángulo de 6 nodos.
4
Se excluye de este criterio la entidad punto por no poderse crear elementos sobre él.
MALLA ESTRUCTURADA VERSUS NO ESTRUCTURADA 73
o cuadriláteros pero no la de los elementos de barra que irı́an sobre las lı́neas. De la misma
manera, si se tiene un volumen cuyo contorno son superficies, sólo se obtendrı́an los elementos
de volumen y no los de superficie. Pero si los modelos anteriores tuvieran una lı́nea o una
superficie aislada de las anteriores, se crearı́a malla también sobre estas entidades.
Este comportamiento por defecto puede cambiarse para obtener, por ejemplo, además de la
malla de tetraedros, la malla de triángulos que forma su contorno.
La caracterı́stica de una malla de este tipo es la regularidad. Eso significa que se puede
encontrar una submalla5 que se repite un número arbitrario de veces para formar la malla total.
Los algoritmos de generación de malla estructurada posicionan los nodos de manera ordena-
da en el interior de las superficies o volúmenes. El grave inconveniente reside en que para para
poder ser generada, se debe restringir la topologı́a de las entidades geométricas que componen
el modelo. De alguna manera la regularidad y la repetición de la malla resultante debe estar
ya reflejada en la composición de la geometrı́a original.
Malla no estructurada es cualquier malla que no cumpla la definición anterior. Los algorit-
mos de generación de malla no estructurada son más complejos y no tienen garantı́a absoluta de
éxito pero pueden ser usados en modelos de geometrı́a arbitrariamente compleja sin intervención
del usuario en la definición de los parámetros de mallado. Es posible mezclar malla estructura-
da y no estructurada en un mismo modelo. En la Figura 4-4, se aprecian las caracterı́sticas
principales de cada tipo de malla. Más información sobre los criterios de diferenciación de tipos
de malla puede encontrarse en [Geo91].
5
o patrón (pattern) entendiéndose como parte de un conjunto que se va repitiendo a intervalos regulares.
74 Generación de malla
Figura 4-4: En estas imágenes se aprecia la diferencia entre una malla no estructurada y una
estructurada.
Se entiende por malla conforme aquella en la que todos sus elementos comparten sus nodos
entre elementos vecinos y en la que cada lado de un elemento coincide con el lado de otro
elemento y no con parte de ese lado. La malla no conforme es aquella en la que sus elementos
son independientes entre sı́. Ejemplo de ambas mallas puede verse en la Figura 4-5 en la página
siguiente.
En general, para modelar adecuadamente un sólido continuo, es necesario el uso de mal-
la conforme. En algunos casos especiales, como cuando únicamente queremos discretizar un
contacto geométrico, nos basta con una malla de cualquier tipo.
z x
Figura 4-5: Comparación entre una malla conforme (izquierda) y no conforme (derecha).
• Existe una función que asigna tamaños máximos a las entidades en función de su magnitud
y forma geométrica.
• Otra función asigna tamaños máximos según un criterio de curvaturas o de máximo error
76 Generación de malla
L
L L
• Mediante otra función se suavizan las diferencias de tamaño entre entidades cercanas para
que estas diferencias no superen un determinado criterio de progresión geométrica (ver el
Apartado 4.7.2). Esta función es útil después de haber asignado tamaños con algunos de
los criterios anteriores.
Cuando se tienen asignados diferentes tamaños a diferentes zonas de la malla, los elementos
tendrán un tamaño más pequeño cerca de una de las zonas y mayor cerca de la otra. El paso
de uno de los tamaños al otro puede hacerse de distintas formas. Se ha definido un parámetro
adimensional de preferencia de mallado con valores entre 0 y 1 que indica si esta transición
6
O aproximación de la máxima distancia entre la entidad geométrica y los elementos generados.
TRANSICIÓN DEL TAMAÑO DEL ELEMENTO ENTRE ZONAS 77
debe ser lenta o rápida. Según el tipo de análisis y el número de elementos deseado puede ser
más conveniente una opción u otra. La elección de este parámetro puede influir en la calidad
de la malla resultante e incluso en la posibilidad de éxito en la generación. Este parámetro
influirá posteriormente en los algoritmos de generación de malla según el criterio explicado en
los apartados correspondientes. La aplicación de este parámetro para una malla bidimensional
de triángulos puede verse en la Figura 4.7.
y y
z x z x
Figura 4-7: El número de elementos generados cambia enormemente según el parámetro escogi-
do.
En algunos casos nos interesa que la malla represente la forma geométrica con una determinada
precisión. Esto se consigue mediante un criterio de error cordal.
Si limitamos este error cordal a una cierta tolerancia, obtendremos una malla que aproximará
tanto a la geometrı́a como pequeña sea esta tolerancia.
Dado un error cordal c y una curva L(t), el tamaño óptimo de elemento a generar sobre la
curva, se calcula de la siguiente manera:
3
dL
dt
r= dL
2
(4.1)
dt × ddtL
2
T = 2 2rc − 2c
78 Generación de malla
Tamaño elemento
Error cordal
Radio
y y
x x
z z
Figura 4-9: En estas dos mallas se compara la generación por error cordal para malla no
estructurada, con la de malla estructurada con superficies independientes.
Un factor determinante para el éxito en la generación de malla proviene del hecho que los
tamaños de elementos no sean excesivamente discordantes entre zonas cercanas. Tı́picamente,
si se contraponen elementos unos contra otros donde la relación de tamaños sea mayor que un
factor de 3 ó 4, los algoritmos de puntos cercanos fracasarán en encontrar todas las entidades
necesarias para un mallado correcto. Una de las razones proviene del necesario ahorro en la
búsqueda, para mejorar la eficiencia computacional. Otro factor es el hecho de que ya no puede
crearse una malla bien formada a partir de elementos de tamaño tan discordante.
En el contorno (a) de la Figura 4-10, en caso de poder generarse una malla, ésta darı́a
elementos de muy mala calidad. El contorno corregido de la Figura (b) proporcionarı́a una
80 Generación de malla
malla correcta.
(a) (b)
Figura 4-10: En la Figura (a) se observa la dificultad de generar una malla en el interior del
contorno. En la (b) se corrige tamaños para obtener mejores elementos.
(F − 1)d + S0
S1 = (4.3)
F
donde F es el factor de crecimiento, que se situará tı́picamente en valores del orden 1.5 a 2.
GENERACIÓN DE MALLA ESTRUCTURADA 81
Debe tenerse en cuenta que este nuevo tamaño sólo se aplicará en caso de ser menor al que la
entidad ya tenı́a previamente asignado.
Por su misma naturaleza, este proceso debe ser iterativo para poder traspasar secuencial-
mente los tamaños de unas entidades a otras. Habitualmente, con 2 ó 3 iteraciones se consiguen
unos buenos resultados.
La condición de malla estructurada se impone a las entidades geométricas y requiere que éstas
cumplan las siguientes restricciones:
• Toda lı́nea puede tener malla estructurada. En el caso de lı́neas, no tiene sentido de hablar
de malla estructurada, pero se hace la distinción por la manera de definir los tamaños de
elemento. En malla no estructurada se usa el esquema general de tamaño de elemento.
En cambio, en malla estructurada se define el número de elementos que se desean sobre la
lı́nea. Toda lı́nea que sea contorno de una superficie estructurada debe ser definida según
este criterio aunque cualquier otra superficie, de la cual forma parte de su contorno, sea
no estructurada.
• Sólo las superficies de cuatro lados o topológicamente rectangulares pueden ser malladas
de forma estructurada.
Estas restricciones son necesarias para que el algoritmo de generación de mallas estruc-
turadas de cuadriláteros o de hexaedros tenga sentido. Se podrı́an definir otros algoritmos más
sofisticados, especialmente para el caso de triángulos, pero con los existentes se pueden realizar
gran variedad de configuraciones.
La restricción más grave viene dada por el hecho de que los lados opuestos de una superficie o
volumen deben tener el mismo número de elementos7 . Esto implica que el número de elementos
se propaga entre superficies o volúmenes y dificulta la concentración de elementos en zonas
determinadas. Puede verse en la Figura 4-11, que mediante el empleo de NURBS puede llegarse
a una definición aceptable de las concentraciones de los elementos.
7
Esta restricción puede en parte subsanarse con el uso de polilı́neas que se describirá en apartados posteriores.
82 Generación de malla
Figura 4-11: Mediante el empleo de superficie NURBS de más de 4 lados, se pueden hacer
transiciones de tamaño de una superficie a otra.
El mismo algoritmo de unión simple de lados opuestos puede ser aplicable para generar mallas
sobre superficies de más de 4 lados, siempre que estas se conserven topológicamente similares
a un cuadrilátero. A efectos prácticos esto significa que tengan 4 ángulos pronunciados y el
resto de ángulos entre lı́neas sean nulos o pequeños. Un ejemplo de esta configuración es el de
la Figura 4-11.
Todas las superficies que pueden mallarse de manera estructurada deben ser paramétricas y
pueden ser trimadas. La función que las define es:
0≤u≤1
S (u, v) con (4.4)
o≤v≤1
Disponemos de los nodos del contorno sobre las lı́neas en el espacio paramétrico u, v. Si
llamamos uij ∈ R2 con i = 0 o j = 0 a los puntos del contorno, el cálculo de los nodos interiores
de la malla estructurada consta de dos fases:
v).
2. El nodo en el espacio real se obtiene aplicando la función S(u,
Este esquema generará elementos con buena relación de aspecto siempre que la superficie
sea topológicamente rectangular y no esté excesivamente distorsionada. En la Figura 4-13, se
puede ver un ejemplo de la aplicación de esta técnica.
Los volúmenes que pueden mallarse como estructurados deben tener seis caras o superficies de
contorno. Cada una de estas superficies de contorno podrá representarse según el algoritmo
GENERACIÓN DE MALLA ESTRUCTURADA 85
explicado en el apartado anterior. Por tanto, en el caso de desear la generación de una malla
de M × N × O elementos, el volumen puede representarse como:
V (u = 0, v, w) = S1 (v, w) (4.5)
V (u = 1, v, w) = S2 (v, w) (4.6)
para todos los contornos8 . El cálculo de un punto interior del volumen se puede realizar me-
diante varios algoritmos. El más sencillo consiste en la interpolación básica ponderada con la
distancia, de los puntos de influencia del contorno y puede expresarse como:
wk
V1 (ui , vj , wk ) = (1 − f1 ) · S1 (ui , vj ) + f1 · S2 (ui , vj ) con f1 =
O
vj
V2 (ui , vj , wk ) = (1 − f2 ) · S3 (ui , wk ) + f2 · S4 (ui , wk ) con f2 =
N
ui
V3 (ui , vj , wk ) = (1 − f3 ) · S5 (vj , wk ) + f3 · S6 (vj , wk ) con f3 =
M
3
1
V (ui , vj , wk ) = Vi
3
i=1
Otra técnica que suele dar mejores resultados consiste en aprovechar la interpolación Coon
de manera similar a la empleada en la generación de malla estructurada sobre superficies. En
este caso:
V i , vj ) con S
1 (ui , vj , wk ) = S(u definida en w = wk (4.8)
8
En todo momento deben tenerse en cuenta las orientaciones y disposición de las superficies.
86 Generación de malla
i o promediarlos,
Finalmente se puede escoger uno de los V
3
1
V (ui , vj , wk ) = Vi
3
i=1
Volumen
P8 P1 , . . . , P8
P7
P6 Vi
P5
P4 s
P3
Si
P1
P2
Para otros métodos más suaves de interpolación de puntos interiores se podrı́an usar las
funciones de forma de un elemento hexaédrico de alto grado (ver [Oña95]) o usar una ecuación
diferencial euleriana y resolver el sistema (ver [Geo91]).
Para algunos tipos de análisis es necesario concentrar elementos en algunas zonas. Tı́picamente,
conviene poner mayor número de elementos en zonas de altos gradientes de la variable de cálculo.
Para ello, conviene realizar esta concentración en el espacio paramétrico y actuar únicamente en
GENERACIÓN DE MALLA ESTRUCTURADA 87
las lı́neas. El traspaso hacia las superficies y volúmenes de esta concentración será automático,
según los algoritmos de interpolación ya descritos.
Cada lı́nea, por ser estructurada debe tener como definición de tamaño el número de parti-
ciones sobre ella. La concentración de elementos la definimos como una progresión geométrica
de razón r 9 . Con estas condiciones, el posicionamiento de los nodos en el espacio paramétrico
será:
u0 = 0
fn · ui−1
ui = i = 1, . . . , n
un
fi = r · fi−1
Figura 4-15: Diferentes criterios de concentración de elementos para una misma geometrı́a y
para el mismo número de particiones.
9
La razón r puede tomar un valor positivo o negativo que luego se escala a menor que uno para los valores
negativos y mayor que uno para los positivos. El motivo de este escalado es dar facilidad intuitiva al usuario.
88 Generación de malla
Antes de poder generar malla sobre las superficies y volúmenes, es necesario generar elementos
de 2 ó 3 nodos sobre todas las lı́neas que sean contorno de superficies. Por defecto, estos
elementos serán únicamente parte de la malla final si pertenecen a lı́neas aisladas o si el usuario
lo requiere.
Como todos los tipos de lı́nea están definidos de forma paramétrica en el intervalo [0, 1], se
evalua la función L (u) con u ∈ [0, 1] para diferentes valores del parámetro. Para lı́neas rectas
y arcos, como el parámetro de la curva es el parámetro arco, una vez definidos los intervalos
en el espacio del parámetro, quedan bien espaciados los nodos en el espacio real. Para el caso
de las lı́neas NURBS, es necesaria una función de corrección para correlacionar el avance en el
espacio del parámetro con el espacio real. Esta función se describirá en apartados posteriores.
Las polilı́neas son un caso mixto de los anteriores.
Para todos los tipos de lı́nea excepto la polilı́nea, a partir de los tamaños deseados de elemento
se calculan las posiciones del parámetro en el espacio [0, 1]. Para ello el algoritmo es: Se dispone
de tres tamaños de elementos que están situados en los extremos de la lı́nea y en su centro. Estos
tamaños provendrán del tamaño asignado por el usuario o por algún algoritmo de asignación
o por defecto. En el caso de mallas estructuradas, como el dato es número de elementos por
lı́nea, se calculan los tamaños unitarios:
1.0
T1 = T2 = T3 = (4.9)
NE
siendo Ti los tamaños en el espacio [0, 1] y N E el número de elementos sobre la lı́nea. En malla
no estructurada, cada tamaño en el espacio debe convertirse a ese mismo espacio:
Si
Ti = (4.10)
L
siendo Si el tamaño deseado y L la longitud de la lı́nea. Para posicionar los parámetros se parte
de una configuración de espaciamiento constante y separación del mı́nimo de los tres valores
T0 = min (T1 , T2 , T3 ). A partir de ella se va iterando partiendo de la base de que se tiene una
GENERACIÓN DE MALLA EN LÍNEAS 89
función S (t) tal que nos da el espaciamiento óptimo para cada valor de t
ti + ti−1
ti = ti−1 + S (4.11)
2
SF=0
SF=1
T1
T0
Figura 4-16: Cambio del tamaño óptimo entre t = 0 y t = 0.5 para diferentes factores de
transición.
1
F = (4.12)
tN E + S 1+t2NE
ti = ti · F (4.13)
La definición de la función S (t) viene dada por el hecho de que tiene que haber una transición
adecuada entre tamaños pequeños y grandes y que esta transición viene regulada por el factor
de transición definido por el usuario. Su formulación viene dada por dos parábolas, una entre
t = 0 y t = 0.5 y la otra entre t = 0.5 y t = 1.0 Si T1 es el tamaño deseado en t = 0, T2 es el
90 Generación de malla
Dado que todas las operaciones anteriores se han realizado en el espacio del parámetro t ∈ [0, 1]
y dado que lo que en realidad se desea es mantener las mismas relaciones en el espacio real,
sólo se obtendrá un resultado correcto si el parámetro de la curva es el parámetro arco. Esto
se cumple para las lı́neas rectas y para los arcos pero no para las NURBS (en la Figura 4-
17, se puede apreciar un ejemplo tı́pico de mala parametrización). En este último caso será
necesario hacer una corrección para que las relaciones en un espacio se mantengan en el otro.
El algoritmo es el siguiente: Dada una lista de parámetros t1 , . . . , tn ∈ [0, 1] se desea obtener
|ti −tj |
otra lista t1 , . . . , tn ∈ [0, 1] tal que las relaciones de distancia 1 se mantengan en el espacio
i )−L(t
|L(t j )|
Ltot . El proceso consiste en calcular cada ti como:
ti = ti−1 + I ti−1 , ∆ti−1,i (4.16)
y corregir la nueva lista obtenida para que cubra el espacio [0, 1]:
1
ti = ti · (4.17)
tN E + S 1+t2NE
La función de incremento óptimo I ti−1 , ∆ti−1,i viene dada por el concepto de que:
ti dL
dt
ti−1 dt
ti = ti−1 + (4.18)
Ltot
Arco de circunferencia
✒
✍
Lı́nea recta ✼
✻
✍
✍ ✗
✕
0 t 1
o
0 t 1 ❦ ✼
❑
0 t 1
Figura 4-17: Para lı́neas rectas y para arcos, la parametrización de la lı́nea viene dada por el
parámetro arco. En NURBS, puede no ser ası́.
ti
np
dL dL
∆L =
dt = ωi
dt tGL
(4.19)
ti−1 dt i=1
∆L
∆ti+1 = (4.21)
Ltot
En todo este proceso debe haber controles para casos extremos de ∆t muy altos y curvas
muy mal parametrizadas.
La corrección dada en (4.17), puede dar lugar a grandes errores para lı́neas mal parametrizadas.
La razón es que estamos multiplicando cada ti con un valor constante para todos ellos. Por tan-
to desplazamos por igual todos los valores, tanto por zonas de módulo de la derivada pequeña
92 Generación de malla
1
CF0 = (4.22)
tN E + S 1+t2NE
ti − ti−1
CF = 1.0 + (CF0 − 1.0) · (4.23)
ti − ti−1
tfi inal = ti−1 + CF · ti − ti−1 (4.24)
Este valor debe tener los oportunos controles de corrección de valores por encima del
parámetro 1.0
Las polilı́neas deben tratarse de manera especial ya que son contenedoras de otros tipos de
lı́neas y tienen toda una casuı́stica sobre si los puntos interiores de la malla deben convertirse
en nodos o no. Las posibilidades que se han implementado son:
• Ningún punto forma parte de la malla. En este caso la lı́nea puede considerarse como
cualquier otra.
• Algunos o todos los puntos forman parte de la malla. Aquı́, para definir los tamaños de
mallado, se escoge el conjunto de lı́neas entre dos puntos que deben ser mallados y como
tamaños extremos, se escoge los de estos dos puntos. El tamaño intermedio no puede
ser el de la lı́nea porque no permitirı́a concentrar en diferentes segmentos. Por tanto,
el tamaño en el centro de la lı́nea se calcula a partir de los dos tamaños extremos. A
partir de aquı́, el proceso es el mismo que para una lı́nea normal con el simple escalado y
translación de los parámetros.
GENERACIÓN DE MALLA NO ESTRUCTURADA EN SUPERFICIES 93
4.10.1 Introducción
Los dos primeros métodos han sido desarrollados en esta tesis y cada cual contiene una serie
de ventajas e inconvenientes. En la descripción que sigue, se va a empezar con el método de
generación en el plano. En el se describirá detalladamente el método de generación ası́ como las
técnicas para realizar la transformación directa y la inversa. En la descripción de la generación
en el espacio se comentará únicamente las diferencias con el método anterior. Finalmente se
discutirán las ventajas e inconvenientes de cada método.
10
Algunas veces también llamado 2 12 D por ser superficies en el espacio 3D.
94 Generación de malla
En superficies Coon o NURBS, al ser paramétricas en el espacio [0, 1] × [0, 1], la opción más
sencilla serı́a generar malla en el espacio paramétrico. La generación directa en este espacio y
posterior transformación al espacio real darı́a lugar a elementos con fuertes distorsiones. Para
subsanar este problema hay básicamente dos alternativas:
• Generar malla en el plano con la métrica del espacio real. Básicamente se trata de que
todas las operaciones que requieran una distancia o un ángulo, en lugar de realizarlas
directamente se efectuan en la superficie real mediante unos operadores de transformación.
Ver [MH95] para una descripción más detallada de este esquema.
• Convertir el espacio paramétrico, que es un cuadrado, en una figura geométrica más similar
a la superficie real de manera que haya un parecido mayor de ángulos y de relaciones de
distancias.
La definición de esta nueva forma geométrica viene dada por asociación a un elemento
cuadrilátero de los usados habitualmente en elementos finitos. Puede usarse tanto uno de
cuatro nodos como uno de ocho. En algunos casos degenerados, este cuadrilátero se convertirá
en triángulo para adaptarse mejor a la forma geométrica real. Este cuadrilátero se define de
tal manera que se minimice la distorsión de los elementos resultantes. Para ello el algoritmo es
el siguiente:
Dados los 4 lados de la superficie Coon o NURBS li , y los 4 ángulos αi , se escalan las
longitudes obteniéndose ¯li = li
lo . Los ángulos se escalan para sumar 2π radianes. La matriz de
GENERACIÓN DE MALLA EN EL PLANO 95
v
✻ N l3 α1 l2
(1,1)
v’
✻
α3
✛ ✲ α2 l1
✲
u’
✲
u
Figura 4-18: Relación entre la superficie real y el espacio donde se realiza la generación de malla
bidimensional.
Para obtener los nodos de centro de cara del cuadrilátero de 8 nodos, se calculan primero
como el punto medio de cada uno de sus dos extremos. Después se les aplica un factor de
corrección en la dirección normal a la cara. Ese factor se calcula como:
=S
V (u = 0.0) − S (u = 1.0) − S (u = 0.0)
(u = 0.5) − S (4.26)
2.0
· ∂S |u=0.5
V
f = ∂v
(4.27)
V ∂S |u=0.5
∂v
En la Figura 4-18 se puede ver la relación de formas entre la superficie real y el espacio calculado.
Para generar la malla, se obtiene la posición de los nodos de las lı́neas de contorno en el
espacio paramétrico de la superficie y se les aplica la transformación definida por G. Se genera
96 Generación de malla
la malla en el plano y se realiza la transformación inversa. Este paso del espacio del cuadrilátero
al paramétrico se realiza con un método iterativo como un Newton-Rapson ya que se conoce
la matriz jacobiana de la transformación. El paso del espacio paramétrico al real es directo
mediante la aplicación de la función que define la superficie.
Dado un conjunto de puntos en el plano o en el espacio, el objetivo es encontrar todos los puntos
cercanos a un punto dado. Una de las hipótesis de partida es evitar la comparación directa de
distancias entre todos ellos con el punto base. O sea, dado que el algoritmo básico es de orden
O2 , interesa encontrar otro algoritmo que sea de orden n log(n).
Para minimizar el número de comparaciones, se recurre a una estructura de tipo Quadtree
en el plano y de tipo Octtree 11 en el espacio. Se va a describir el algoritmo para el caso en el
plano. El caso 3D es una extensión directa del caso bidimensional.
La estructura de datos Quadtree se basa en subdividir el plano en un conjunto de regiones
para acotar la búsqueda sólo en las regiones de interés. La definición de las subregiones se va
realizando a medida que se introducen los puntos. El proceso es el siguiente:
1. Se parte de una única región que es un rectángulo que cubre todo el dominio. Para ello
debe conocerse con antelación su tamaño. Normalmente se itera previamente sobre todos
los puntos para calcular la región mı́nima que los contiene a todos. Existen técnicas para
aumentar dinámicamente la región de partida que serán descritas más adelante.
11
La traducción de Quadtree y Octtree podrı́a ser árbol cuadrante y árbol octante.
ALGUNAS ESTRUCTURAS DE DATOS USADAS EN LOS ALGORITMOS
DE GENERACIÓN 97
0
5 6
1 2 1234
9 10
7 8 5678
11 12
0
9 10 11 12
3 4
Figura 4-19: Estructura recursiva del Quadtree. En la figura de la izquierda se observa la forma
geométrica. En la de la derecha, la forma de árbol resultante.
3. Cuando la región está llena, ésta se subdivide en 4 subregiones que se crean dividiendo el
rectángulo original en cuatro rectángulos iguales. Tanto los puntos que ya estaban en la
región, como el nuevo punto entrado, se introducen en la subregión a la que pertenecen en
función de sus coordenadas. Los sucesivos puntos que se vayan introduciendo, se alojarán
en su subregión correspondiente, en el nivel más bajo posible. Por tanto, se entiende que
una región determinada aloja o puntos o subregiones pero no ambas cosas a la vez.
4. Se procede de manera recursiva a medida que se van entrando todos los puntos y se
van creando todas las subregiones que sean necesarias. De esta manera se llega a una
estructura de árbol.
5. Cuando todos los puntos están introducidos, el Quadtree está creado y lleno. A partir de
aquı́, se puede proceder a la búsqueda.
Mediante una estructura de este tipo se pueden realizar varias operaciones. La más común
de ellas es, dado un punto de partida, encontrar un conjunto de puntos cercanos. El criterio de
cercanı́a puede ser tanto una distancia máxima como un número óptimo o máximo de puntos.
También puede ser un criterio que contemple las dos opciones anteriores.
En algunos casos puede interesar encontrar todos los puntos cuya distancia a un punto de
referencia sea menor a un radio dado. Para ello se define una función recursiva que empieza en
la raı́z y que actuará de manera diferente según la rama sea contenedora de hijos o contenga
directamente puntos. Si llamamos Hi1 al hijo con xi menor, Hi2 al hijo con xi mayor y ci al
centro del contenedor según xi , el proceso será:
si Pi − R ≤ ci se entra en Hi1
contiene hijos:
f: si Pi + R ≥ ci se entra en Hi2
contiene puntos: se acepta PI si PI − P ≤ R
ALGUNAS ESTRUCTURAS DE DATOS USADAS EN LOS ALGORITMOS
DE GENERACIÓN 99
Siendo P el punto de referencia, PI el punto interior a comprobar y R el radio máximo aceptado.
Aunque serı́a posible definir una función que diera un número exacto de puntos alrededor de
uno dado y que cumplieran el criterio de ser los más cercanos a él, esta función serı́a muy
ineficiente en tiempo de computación. Por otra parte, en muchos casos deseamos un número
aproximado de puntos cercanos a uno dado y que estén contenidos en un radio máximo.
Para la generación de malla por el método del avance frontal interesa encontrar los puntos
cercanos a la cara activa del avance. Para ello tenemos una primera restricción que es que sólo
es necesario considerar el semiespacio definido por la cara y su orientación. O sea que si P
la normal a la cara, los puntos PI a encontrar deben cumplir que
es el centro de la cara y N
(PI − P ) · N
≥ ε.
Por otro lado, la noción de puntos cercanos se puede considerar relativa. Debido a los
cambios bruscos de tamaño entre elementos de la malla, es difı́cil calcular un radio de cercanı́a
en el que se encuentren todos los puntos de interés. Hay que tener en cuenta que encontrar un
número demasiado pequeño de puntos supondrá el fracaso del método. En cambio, una elección
conservadora en exceso, provocará un incremento del coste de ejecución que se convertirá en
inabordable fácilmente. En la Figura 4-21, se comprueba la diferencia de tamaño del área de
búsqueda para dos configuraciones del frente similares. La solución más efectiva consiste en
definir un número óptimo aproximado de puntos que hay que encontrar alrededor de uno dado.
Este número se calcula en función de los puntos que hay activos en el frente en una situación
extrema y que puedan afectar a la creación del nuevo elemento.
P · N
+D ≥ε (4.28)
100 Generación de malla
cara de avance
área de influencia cara de avance
área de influencia
Figura 4-21: En estas figuras se puede observar la diferencia de tamaño del área de búsqueda
para una misma cara del frente.
entonces el algoritmo de búsqueda será tal que dado un octante hijo Hi , se descartará si se
cumplen las dos condiciones siguientes:
j = x, y, z
H contiene puntos. (a)
p
Hp contiene un solo octante válido. (b) (4.30)
H
p contiene varios octantes válidos. (c)
En el caso (4.30.a), se entrará en el algoritmo (4.31) con el radio máximo y sin radio mı́nimo.
En el caso (4.30.b), se procederá recursivamente con la misma función (4.30) en ese octante. El
caso (4.30.c) requiere un procedimiento iterativo sobre el algoritmo (4.31).
ALGUNAS ESTRUCTURAS DE DATOS USADAS EN LOS ALGORITMOS
DE GENERACIÓN 101
Esta iteración consta de la entrada en el nuevo algoritmo con un radio máximo menor al
dado. Si se considera un máximo de r iteraciones, se entrará inicialmente con un radio máximo
0
de Rmax = Rmax /r. Si el número de puntos ası́ obtenidos es igual o superior al óptimo, se finaliza
1
la función. En caso contrario, se vuelve a entrar con Rmax 1
= 2Rmax /r y Rmin 0
= Rmax . El uso
del radio mı́nimo viene dado para evitar la repetición de puntos en las sucesivas iteraciones.
El siguiente criterio a aplicar sobre los octantes hijos Hi , dados los datos del algoritmo
anterior y un dato adicional Rmin es:
Hi contiene puntos. (a)
Hi es válido según (4.29) y Rmin (b)
(4.31)
Hi es válido según (4.29) y Rmax (c)
H no es válido según (4.29). (d)
i
En el caso (4.31.a), se aceptarı́an todos los puntos que cumpliesen (4.28). En el caso (4.31.b),
no se entrarı́a en el octante, pues ya se ha usado en la iteración anterior. En el (4.31.c), se
ejecutarı́a recursivamente la misma función. El último caso, el (4.31.d), implicarı́a descartar
ese octante.
Al finalizar estas operaciones, se habrá obtenido un número igual o mayor de puntos al
óptimo, siempre que el radio máximo lo permita.
La razón de requerir un algoritmo tan complejo para optimizar el número de puntos obtenido,
es que una apreciación por defecto provoca un error12 irrecuperable en la generación de la malla.
Todos los algoritmos de la generación como la ordenación de puntos, cálculo de intersecciones
y otros van referidos al número de puntos cercanos, entonces, una apreciación en exceso de ese
número, conllevará aumentos en el tiempo de computación directamente proporcionales a ese
incremento de número de puntos.
En algunos casos se conoce a priori el tamaño máximo de la región donde se encuentran todos
los puntos. Esto serı́a el caso tı́pico de generación de malla bi o tridimensional donde se parte
del contorno externo. Este contorno define perfectamente una región convexa que contendrá a
todos los puntos. En estos casos no es necesario incrementar el tamaño del Octtree. Incluso
hay que evitar hacerlo para poder detectar rápidamente errores en la generación de malla.
12
Es posible en algunos casos raros recuperarse de ese error.
102 Generación de malla
Nuevo quadtree
✎
✗
Quadtree existente
Punto insertado
13
Es habitual tener puntos coincidentes en la importación o en la transformación de una geometrı́a. También
en algunas situaciones especiales de generación de malla.
ALGUNAS ESTRUCTURAS DE DATOS USADAS EN LOS ALGORITMOS
DE GENERACIÓN 103
número de puntos que puede contener una región, los algoritmos recursivos irán iterando hasta
el infinito.
Para solventar este problema se define una tolerancia, que puede depender del tamaño del
Octtree o puede estar fijada por otros criterios. Cuando se va descendiendo en la estructura y se
llega a un octante de dimensión menor que la tolerancia, para todos los puntos que desciendan
por ese octante se deja de tener en cuenta el criterio de posicionamiento según coordenadas y se
van colocando los puntos en las subestructuras con el único criterio de llenarlas equitativamente.
En los algoritmos de búsqueda de puntos cercanos, deberá controlarse esta eventualidad y
empezar una búsqueda total en los octantes que entren dentro de esta categorı́a.
El inconveniente de este acercamiento es que la búsqueda se convierte en orden O2 para
los puntos pertenecientes a estos octantes especiales. Raramente pasa a ser un problema real
debido a que los puntos que cumplen este criterio suelen ser una cantidad muy baja respecto
del total.
Dado un conjunto de datos que pueden ordenarse mediante una magnitud escalar, el objetivo
es mantener una lista eficiente de los elementos de menor a mayor, en la que puedan insertarse
y extraerse elementos con facilidad.
Este tipo de lista va a usarse para almacenar las caras del frente de avance en la generación
de malla (ver el Apartado 4.14). El proceso consiste en que se va introduciendo nuevas caras
de tamaño arbitrario y se borran otras ya usadas. Al mismo tiempo interesa poder acceder
siempre a la cara menor, que es la que usaremos para proseguir en el avance.
La caracterı́stica principal a tener en cuenta es que, en general, habrá muchas caras que
tendrán tamaños muy parecidos o iguales entre ellas.
Para la creación de esta lista se readapta el algoritmo de Octtree descrito en el Aparta-
do 4.12.1, a una sola dimensión. La diferencia principal estriba en que si el número de caras
iguales es muy grande, el algoritmo Octtree se convierte en orden O2 . Es necesario hacer una
readaptación que consiste en que cada elemento de la lista almacena un puntero a su rama para
poder extraerlo de la estructura rápidamente. Como las caras se extraen en el frente siempre
de más pequeña a más grande, únicamente optimizaremos el algoritmo de extracción para la
cara más pequeña. Por otra parte, la inserción de caras siempre será eficiente porque se seguirá
el procedimiento descrito en el Apartado 4.12.1.
Esta estructura de árbol binario no debe confundirse con otras parecidas descritas en [BP91],
104 Generación de malla
• Al crear un nuevo elemento en el frente, una vez encontrados los puntos cercanos, necesita-
mos las caras cercanas para el cálculo de intersecciones. Mediante los punteros de nodos a
caras activas, estas nuevas caras se obtienen con costo computacional prácticamente nulo.
• En el nuevo elemento creado, se debe incluir el puntero a los elementos vecinos. Éste se
obtiene a partir de los punteros de caras hacia elementos.
Otra estructura destinada a incrementar la eficiencia de proceso son los cubos MinMax. Éstos
se definen como el cubo envolvente de una entidad geométrica. Dada una arista o una cara
de un frente de generación de malla tetraédrica, el cubo MinMax se calcula a partir de las
coordenadas mı́nimas y máximas de cada uno de los nodos que las forman.
Los cubos MinMax se usan como primer discriminador en el cálculo de intersecciones entre
caras y aristas. En caso de que los respectivos cubos no intersecten, que es una comprobación
muy eficiente, no es necesario realizar el cálculo convencional de intersección cara arista. En la
Figura 4-23, se pueden ver ejemplos de ambas posibilidades.
Dado que los los principios básicos de generación de malla en 2D para triángulos y en 3D
para tetraedros son muy similares, se hará una descripción única para ambos, matizándose las
diferencias cuando sea necesario.
Los métodos de generación de malla más populares son:
• Delaunay (o Boronoi).
14
Un nodo podrı́a mantener punteros a todos los elementos que le contienen. No se ha escogido esta opción
por la gran cantidad de información a almacenar.
106 Generación de malla
(A) (B)
Figura 4-23: En la Figura (A), se puede asegurar que la cara y la arista no intersectan. En la
(B), no se puede decidir la intersección a partir del cubo MinMax y deben usarse los algoritmos
de intersección cara-arista.
En esta tesis se han desarrollado los dos primeros y se explican con detalle en aparta-
dos posteriores. Para más información sobre las otras metodologı́as de generación de malla
ver [Geo91].
24.
2. El avance debe empezar en un de las caras del frente activo. Se escoge la más pequeña
de ellas porque optimiza mejor el futuro tamaño de los elementos.
3. A partir de esa cara se calcula la posición óptima de un punto tal que unido a ella forme
un triángulo o tetraedro de tamaño escogido. Este tamaño es una información de entrada
para el método y puede venir dado por una malla de soporte (background mesh 15 ) o
puede venir dado en relación a las entidades geométricas que rodean al dominio (ver
Apartados 4.6 y 4.7).
4. A la lista de posibles puntos de formación del nuevo elemento, deben añadirse los puntos
del frente activo más cercanos al calculado. Esta lista debe ordenarse según un criterio de
distancias al punto creado16 . Todo punto del frente cuya distancia, D al punto calculado
sea menor que D < f (h) siendo f (h) una función que depende de la altura del elemento
calculado, se considera más óptimo que este punto.
5. Para cada uno de los puntos de la lista ordenada, se calcula si el elemento formado con este
punto cumple con una serie de criterios mı́nimos de calidad, como el de ángulo mı́nimo
aceptable. También se comprueba si sus caras intersectan con cualquiera de las caras del
frente. El primer punto de la lista que cumpla con todos estos criterios queda aceptado y
se crea un nuevo elemento.
6. Se actualiza el frente quitando la cara, o caras usadas y añadiendo las nuevas caras que
se han creado.
A partir de la cara del frente desde la cual se realiza el avance, un dato que hay que precisar es
el tamaño óptimo del nuevo elemento17 a partir de información de tamaños deseados asignada
15
Malla que cubre el dominio a mallar y que se usa para definir una magnitud, como el tamaño deseado u
otras, en cada uno de sus nodos.
16
En realidad, el punto de referencia para calcular las distancias es Pc = (1 − α)C
c + αP
, siendo C
c el centro
de la cara y α un parámetro ponderador del orden de α ∼ = 0.8.
17
En este caso, el concepto tamaño óptimo se refiere a la altura del elemento.
108 Generación de malla
Figura 4-24: Frente activo en una generación de malla de tetraedros mediante el método del
avance frontal.
a las entidades geométricas. A efectos prácticos, eso significa que se dispone de información de
tamaños en el contorno del dominio a mallar y también se dispone de un tamaño genérico en
el interior del dominio. Otras técnicas de cálculo de tamaños óptimos pueden encontrarse en
[Löh97].
La idea básica consiste en que el tamaño óptimo se transmite de unos elementos a otros.
Resulta interesante fijar una desviación máxima de este parámetro en relación al elemento del
frente desde el cual se parte. Esta limitación se define de la siguiente manera:
h
< hopt < h · α (4.32)
α
Siendo h el tamaño del lado escogido del frente, hopt el nuevo tamaño deseado, que puede
provenir de una malla soporte o de una definición de tamaños en entidades geométricas, y
GENERACIÓN FRONTAL 109
Fs una factor adimensional con Fs ∈ [0, 1], que viene dado por el usuario y que representa
un incremento lento o rápido del tamaño de los elementos. El cálculo de α a partir de Fs es
empı́rico y proviene del interés de dar una gama válida de valores de transición.
1
4
3
(A) ❖
2 I
l h1
3 4
❖
(B) 2 I
l h2
Figura 4-25: En la Figura (A), el elemento 4 tiene el mismo tamaño que el 1 y el 2 porque su
nueva altura se calcula sólo a partir del l. En la Figura (B), h2 es mayor que h1 porque h2 se
calcula a partir del tamaño óptimo almacenado en el elemento 3.
Otro método que da mejores transiciones es guardar para cada lado del frente su tamaño
óptimo de nuevo elemento y calcular el tamaño h en (4.32) a partir de este tamaño guardado en
lugar de a partir del tamaño real del lado. La mejora del segundo método respecto al primero
proviene de que si en los casos que al avanzar el frente se aprovechan puntos existentes, las
dos magnitudes se hacen distintas. En estos casos, mantener el tamaño deseado provoca una
mejora en el tamaño óptimo. La Figura 4-25, compara la opción de guardar ese tamaño óptimo
con la de no guardarlo.
110 Generación de malla
Una vez calculado el punto óptimo, es necesario encontrar todos los puntos existentes cercanos
para escoger cual de ellos debe ser usado. La comparación de distancias de todos los puntos
del frente es extremadamente costosa en tiempo y operaciones y darı́a lugar a algoritmos de
orden O2 o peores. Es necesario, por tanto, el uso de algún algoritmo con una optimización
mayor en la búsqueda de puntos alrededor de uno dado. El algoritmo usado es el que se basa
en la estructura de almacenamiento de tipo Quadtree para dos dimensiones u Octtree para tres
dimensiones. Estos algoritmos ya se han descrito en el Apartado 4.12.1.
Como ya se comentó en el Apartado 4.12.1, para que los siguientes algoritmos funcionen
correctamente, es más importante fijar un número aproximado de puntos de búsqueda, que
definir un radio y su esfera asociada.
1. Borrado corto.
2. Borrado de región.
El borrado corto consiste en borrar todos los elementos cuyas caras intersecten con las caras
GENERACIÓN FRONTAL 111
del elemento que se está intentando crear. En este caso se vuelve a intentar la generación desde
la misma cara.
El borrado de región se realiza cuando ha fracasado el anterior y consiste en borrar todos los
elementos asociados a las caras pertenecientes a la región de interés. En este caso, se realizan
varios intentos de generación partiendo desde diferentes caras cuyo tamaño no difiera en exceso
de la cara original.
· (P − C
N c ) > r · h
Por otra parte, las nuevas caras que se van a crear y que unen el nuevo punto con la cara
del frente activo de la que se parte, deben cumplir una serie de comprobaciones de intersección
con caras y aristas existentes. En la intersección cara-arista, se considera a la cara como un
triángulo con funciones de forma N (α, β) y a la lı́nea como una función del tipo N (t) con
t ∈ [0, 1]. La intersección se produce si existe un punto en el espacio de parámetros (α, β, t) tal
que los dos puntos calculados como:
3
(1 − N (t))PL1 + N (t)PL2 = Ni (α, β)PT i (4.36)
i=1
α, β, t ∈ [−r , 1 + r ] (4.37)
Considerando r0 como la tolerancia adimensional definida, cuando se llega a una situación
donde no se puede avanzar, se procede a disminuir este parámetro a r1 y proseguir el avance. En
caso de nuevo fallo, se intenta una vez más con un r2 aún menor. En caso de fallar de nuevo se
continúa con otros métodos como el de borrado de elementos definido en el apartado anterior.
Si mediante una de estas reducciones de calidad se consigue generar un nuevo elemento, la
generación prosigue con r0 para que los elementos siguientes sean de alta calidad.
intersecciones y
calidad de elemento No ✲ borrado corto
r0 r1 No ✲
No ❄✲ ✻
r2 Si ✲ Nuevo
Cara ❄✲
Si✲ Nuevo elemento
activa Si ✲ Nuevo elemento
✻ elemento
❄ ❄ ❄ ❄
✻ ✻
Éxito Éxito
Definición: Una malla triangular será malla Delaunay si cualquier cı́rculo circun-
scrito a un triángulo no contiene en su interior ningún otro nodo de la malla18 .
La descripción del método que sigue está centrada en mallas triangulares. Para mallas volumétricas
se podrı́a crear una metodologı́a similar.
Dado un contorno plano, el proceso constructivo será el siguiente:
2. Se generan nodos en el interior de esta región que cumplan los criterios de espaciamiento
requeridos. A los nodos generados se les unen los nodos del contorno. Las técnicas de
generación de puntos se describen en [GB98].
18
Para malla de tetraedros puede usarse una definición similar sin más que substituir cı́rculos por esferas.
114 Generación de malla
3. Se van comprobando nodos cercanos tres a tres. Se crea el cı́rculo definido por tres nodos,
si este cı́rculo no contiene a ningún otro nodo se acepta el elemento. En la Figura 4-
28, se visualiza este criterio. Los elementos que contienen puntos del contorno deben
comprobarse especialmente pues es posible que el segmento de unión entre dos nodos del
contorno no forme un triángulo que cumpla el criterio.
Las ventajas e inconvenientes de unos métodos respecto a otros pertenecen en gran manera al
campo subjetivo. De todas maneras, se puede intentar un pequeño resumen que de una idea a
la persona interesada en el tema.
Ventajas
compara cı́rculos con puntos, en contraposición al avance frontal donde se realiza el cálculo
de gran número de intersecciones.
Inconvenientes
• Dificultades adicionales en los puntos del contorno por la necesidad de mantener las caras
del contorno, que son una información invariable de partida.
4.16 ALISADO
Para entender lo que significa mejorar la calidad de la malla, hay que precisar que se entiende
por calidad de malla. Genéricamente hablando, se considera la calidad de la malla en relación
a la calidad de los elementos que la componen, y la calidad de los elementos en relación a
la semejanza que tengan con un elemento regular, sea un triángulo equilátero o un tetraedro
regular.
116 Generación de malla
Es necesario definir un indicador de calidad que proporcione una medida de que elementos son
mejores que otros y de cuales son aceptables y cuales no lo son. Existen multitud de indicadores
descritos en la literatura (ver [Kre95]). Algunos ejemplos de ellos son:
Se ha adoptado para todos los cálculos el criterio del coseno del ángulo mı́nimo. Dicho
criterio se define de la siguiente manera:
✼
P3 N2
N1
P2
P1 α
✿
N1
Ic =cos(α)
α
N2
z
Dados los puntos P1 , P3 , P3 definidores del triángulo de estudio, se llama indicador de calidad
Ic a:
i = 1, 2, 3
(Pi−1 − Pi ) · (Pi+1 − Pi )
Ic = min i0 = i3 (4.38)
Pi−1 − Pi · Pi+1 − Pi
i4 = i1
ALISADO 117
s , la normal al triángulo N
si la normal a la superficie es N t es:
t = (Pi−1 − Pi ) × (Pi+1 − Pi )
N (4.39)
Pi−1 − Pi · Pi+1 − Pi
N t > 0
s · N (4.40)
La condición (4.40) debe cumplirse para asegurar que el elemento no ha quedado mal orientado19
En el caso de malla bidimensional, se supone al elemento situado en el plano z = 0 y la normal
= [ 0 0 1 ]T .
a la superficie será N
Para tetraedros, el ángulo a considerar será el ángulo diedro entre los planos de dos caras.
Si llamamos N̂i a las normales unitarias a las caras, el indicador Ic se calculará como:
i = j
Ic = min(N̂i · N̂j ) (4.41)
i, j = 1, . . . , 4
Para asegurarnos que el volumen del elemento no resulta negativo, puede calcularse su Jaco-
biano, que debe ser positivo. En general no es necesario este cálculo, debido al hecho de que el
método de generación impedirá la creación de elementos degenerados.
Se observa que este indicador de calidad será mayor como peor sea la calidad y en su
extremo, cuando el ángulo sea nulo, el indicador valdrá 1.
Dada una malla a la que se desea hacer un proceso de mejora, serı́a posible aplicar los algo-
ritmos que se van a describir en siguientes apartados, a todos los elementos y nodos que la
forman. Este criterio darı́a mallas de calidad alta pero serı́a absolutamente prohibitivo a nivel
de coste computacional para mallas con número elevado de elementos. Por otro lado, interesa
iterar varias veces sobre los algoritmos porque las mejoras de calidad en los elementos no son
acumulativas, sino que tienen interdependencia unas con otras.
Asimismo, la pretensión de estos procesos no es tanto la mejora global de la malla como la
mejora de los elementos peores. Éstos se consideran como crı́ticos para el éxito de cualquier
19
A priori, el método de generación debe impedir la creación de elementos mal orientados o de volumen
negativos pero pueden darse casos degenerados.
118 Generación de malla
• Intercambio de diagonales.
Ambos algoritmos parten de un elemento, que es el que se considera que se debe mejorar.
Intercambio de diagonales
Este algoritmo es únicamente válido para triángulos. Dado el elemento a mejorar, se va com-
parando alternativamente con las caras que tiene a su alrededor, que serán 1,2 ó 3 caras, y se
basa en que, dados los dos triángulos que comparten una cara, se comprueba sus indicadores de
calidad Ic1 y Ic2 . Si los triángulos son P1 , P2 , P3 y P2 , P4 , P3 según la Figura 4-30, se substituyen
dichos triángulos por los P1 , P2 , P4 y P1 , P4 , P3 . Se calcula de nuevo los indicadores de calidad
y si ambos son mayores que los anteriores, se acepta el cambio.
Debe tenerse en cuenta que no interesa que el conjunto de ambos elementos mejore, sino
que sólo aceptaremos el cambio si los dos nuevos elementos mejoran a los dos antiguos. La
razón de ello estriba en el hecho de que el objetivo es mejorar los elementos peores de la malla
en lugar de querer mejorar la calidad media.
La razón de la no aplicabilidad de este algoritmo a tetraedros viene dada por el hecho
de que si se substituye una cara por la cara asociada, se cambia la conectividad con otros
tetraedros vecinos y se pierda la conformidad de la malla20 . Esta situación se ve claramente en
la Figura 4-31.
20
Serı́a posible aplicar el algoritmo de intercambio de diagonales a un mayor número de elementos. Simplemente
se ha considerado que para su implementación, la complejidad superaba el beneficio del método.
ALISADO 119
P3 P3
P1 ✲ P1
P4 P4
P2 P2
Otro criterio de mejora de la malla consiste en que, dado el elemento a mejorar, se aplica el
siguiente algoritmo a cada uno de sus nodos que no estén en el contorno:
Se buscan todos los elementos que contienen a ese nodo. Se calcula el ı́ndice de calidad Ic
para todos los elementos y nos quedamos con el mı́nimo Ic,min0 . Se realiza un movimiento del
nodo según alguna de las técnicas descritas posteriormente y se calcula de nuevo Ic,min1 para el
conjunto de los elementos. Si Ic,min1 < Ic,min0 se acepta el cambio y se procede hacia un nuevo
intento de movimiento.
P5 P5
P4 P4
P1 P1
P3 ✲ P3
No válido
P2 P2
Figura 4-31: Si cambiamos la cara
235 por la cara
134 , los dos nuevos tetraedros son válidos,
pero al hacerlo cambiamos también la conectividad de las caras
125 y
245 hacia
124 y
145 ,
lo cual dará no conformidad con los elementos vecinos.
donde Pcn es la nueva posición del nodo y Pi son los n nodos que rodean al nodo de estudio.
En la Figura 4-32 (A), se representa gráficamente esta translación del nodo.
Este esquema se utiliza principalmente en mallas de triángulos, pues en la mayorı́a de los
casos mejora la calidad del conjunto a un nivel muy cercano al óptimo. En cambio, en el caso
de tetraedros, es más frecuente que esta nueva posición origine elementos de peor calidad y
que incluso, la posición final del nodo quede fuera del conjunto. En este último caso quedarı́an
elementos de área negativa.
La técnica consiste en mover el nodo de estudio en una pequeña magnitud tal que el punto final
se mantenga en el interior del conjunto de elementos y que mejore la calidad del elemento peor.
Una manera de definir las direcciones de movimiento viene dada por escoger las diagonales
ALISADO 121
✲ (A)
Pc
αL
✲ ✲ (B)
(1-α)L
Figura 4-32: En la Figura (A), el movimiento de nodo se produce hacia el centroide del conjunto.
En la (B), se produce un movimiento de factor en una de las diagonales del conjunto.
que unen el nodo con todos los otros nodos que le rodean. Es una elección arbitraria pero
cómoda, ya que obtenemos con poca cantidad de cálculos un conjunto de direcciones en el
espacio que tienden a repartirse homogéneamente.
En el Apartado 4.11, se describı́an las técnicas de generación que requerı́an una transformación
previa al plano. Ahora se expondrán sus equivalentes en caso de generación en el espacio.
Generación en el espacio significa que la implementación de cualquier método se realiza
directamente en la posición que ocupa la geometrı́a original. El método usado para este tipo de
generación es el de generación frontal. Las diferencias con el método tradicional se describirán
a continuación.
Los pasos y particularidades de la generación frontal en su modalidad espacial son:
1. Se elige la cara del frente donde se va a continuar el avance, de igual forma que en la
generación 2D.
2. El punto óptimo del nuevo triángulo a generar se calcula en el plano local tangente. Este
es el plano ortogonal a la normal a la superficie en la arista de avance.
3. El punto debe resituarse sobre la superficie desde el plano local. Para ello se realiza una
nueva proyección sobre la superficie.
El cálculo del punto óptimo para el nuevo elemento que se va a generar se realiza de manera
equivalente al caso bidimensional pero situado encima del plano tangente. Para ello es necesario
conocer previamente la normal a la superficie. Como se conocen los parámetros u, v para
todos los nodos existentes, el problema se reduce al cálculo de la normal a la superficie en
GENERACIÓN DE MALLA DE SUPERFICIE EN EL ESPACIO 123
u = (u1 + u2 )/2, v = (v1 + v2 )/2 siendo u1 , v1 las coordenadas paramétricas del nodo 1 de la
arista y u2 , v2 las del nodo 2.
El punto calculado no residirá en el interior de la superficie. Es necesario hacer una operación
de reposicionamiento sobre ella (ver el Apartado 3.10.3). En la Figura 4-33, se puede ver una
descripción gráfica del proceso.
Plano tangente
Punto calculado
N
I
✮
Superficie
Figura 4-33: Cálculo del punto óptimo del nuevo elemento a generar.
Pi,L = T t Pi
El cálculo de la intersección se realiza sin tener en cuenta la coordenada z local de los triángulos.
Los puntos de intersección lı́nea-triángulo Ii tendrán unas coordenadas z diferentes para cada
uno de los triángulos. La magnitud ∆z será la diferencia entre coordenadas z locales de esos
puntos. Se considerará intersección si existe algún Ii tal que ∆z sea menor que una magnitud
relativa dada.
La razón de tener que limitar las distancias ortogonales al plano de proyección en las inter-
secciones, viene dada para distinguir casos anómalos de altas curvaturas en la superficie.
A B
B
A
A
B
Figura 4-34: Diversas vistas de dos caras que no intersectan en el espacio pero que deben
considerarse como una intersección para el algoritmo de avance frontal.
En el plano existe una orientación dada de manera implı́cita que consiste en aplicar la regla
dextrógira a una normal definida en sentido z positiva. Ello resulta en un sentido positivo de
los giros antihorarios.
GENERACIÓN DE MALLA DE SUPERFICIE EN EL ESPACIO 125
El resultado de ello es que la generación de malla plana es mucho más rápida que la homóloga
en el espacio y es más fiable. Como contrapartida, puede dar elementos más distorsionados que
la generación espacial.
En las Figuras 4-35 y 4-36, puede observarse que la velocidad de generación plana es un orden
de magnitud mayor que la espacial. En todo el proceso de generación hay algunos algoritmos
que son de orden lineal y otros que son de orden n log(n). A partir de las gráficas se deduce que
después de un incremento de la velocidad al inicio debido a tareas de coste fijo, se entra en una
curva ligeramente descendente pero bastante constante para el rango de elementos analizado.
Se deduce de ello que los algoritmos de mayor coste computacional son los de orden lineal.
126 Generación de malla
250000
RFAST total
RFAST AF
200000
150000
Elem/min
100000
50000
0
0 50000 100000 150000 200000 250000
Num. elementos
Figura 4-35: Velocidad en elementos por minuto con el algoritmo de generación en el plano
(pentium 200). El gráfico total representa el tiempo total de generación. El AF representa el
tiempo del avance frontal.
En las Tablas 4.2 y 4.3, se puede observar el porcentaje de tiempo que se dedica a cada una
de las tareas en la generación de malla por el método del avance frontal. A partir de ellas se
pueden deducir algunas conclusiones:
14000
RSURF total
RSURF AF
12000
10000
8000
Elem/min
6000
4000
2000
0
0 20000 40000 60000 80000 100000 120000
Num. elementos
Figura 4-36: Velocidad en elementos por minuto con el algoritmo de generación en el espacio
(pentium 200). El gráfico total representa el tiempo total de generación. El AF representa el
tiempo del avance frontal.
• La mayor parte del tiempo de computación para malla tridimensional, se usa en encontrar
los nodos cercanos a la cara activa, a partir de ellos obtener las aristas y caras cercanas,
y finalmente, escoger el elemento óptimo mediante la comprobación de intersecciones y
otros criterios.
Figura 4-37: Mallas obtenidas en una superficie distorsionada según la generación plana y la
espacial.
Figura 4-38: Gráfica de calidad de elementos para una superficie distorsionada según la gen-
eración plana y la espacial.
El proceso general para calcular estos datos consiste en encontrar al elemento en la malla
de soporte al cual pertenece el punto21 .
La búsqueda del elemento activo de malla soporte se realiza mediante el criterio del camino (ver
[Löh96]). Según este criterio y dado un elemento cualquiera, es posible calcular las coordenadas
21
Un punto pertenecerá a un elemento cuando esté en su interior o cuando su proyección esté en el interior de
dicho elemento.
GENERACIÓN DE MALLA EN LAS SUPERFICIE-MALLA 129
Number of Elems=51775
Tabla 4.2: Relación de tiempos entre las principales operaciones de generación de malla en el
plano por el método de avance frontal.
Pi = T t · Pi
En ese sistema la z del punto será z = Pr,z − P1,z las coordenadas naturales L1 , L2 y L3 se
calculan resolviendo el sistema:
L1 = 1 − L2 − L3
Si L1 , L2 , L3 ∈ [0, 1], el punto pertenece al triángulo. La z del punto debe limitarse para
distinguir el caso de un punto que proyecte en el interior de dos triángulos que pertenecen a
dos zonas distintas de la malla o que tienen el ángulo entre ambos es muy grande.
Para encontrar el elemento, se parte de un elemento cualquiera. Habitualmente se usa el
que se ha obtenido en un paso anterior pues la probabilidad de que sea cercano al que buscamos
130 Generación de malla
Number of Elems=14854
Tabla 4.3: Relación de tiempos entre las principales operaciones de generación de malla de
volumen mediante el método del avance frontal.
es alta. Se calculan las coordenadas naturales locales del punto en relación a este elemento. Si
alguna de ellas está fuera del intervalo [0, 1], nos indicará hacia que lado del triángulo se debe
avanzar. En la Figura 4-39 en la página siguiente, se puede observar el criterio de lado preferido.
Como se ha almacenado información de elementos vecinos, se puede realizar el mismo proceso
para el nuevo triángulo y proceder, de esta manera, en forma iterativa. Se debe mantener una
lista de elementos ya visitados y fijar un número máximo de elementos en el camino para no
entrar en recursiones infinitas.
(0,0,1)
L1 <
0
L2 <
0
(1,0,0) (0,1,0)
L3 <
0
Figura 4-39: Búsqueda del nuevo elemento en el algoritmo del camino en función de las coor-
denadas naturales.
Una vez obtenido el elemento óptimo, la normal se puede calcular como la normal al elemento.
Para conseguir geometrı́as más suaves, puede calcularse un campo de normales mejorado. Este
pasa por calcular previamente las normales en los nodos de la malla y, a partir de ellos, recalcular
las nuevas normales en los elementos. De esta manera, la normal a un elemento tiene información
de los elementos vecinos y se consigue más continuidad entre ellos.
Debe tenerse en cuenta que para un punto situado sobre una arista, la normal según uno u
otro elemento de ambos lados de la arista serán muy diferentes si los elementos tienen un alto
ángulo entre ellos. Esto será especialmente importante para el caso de aristas pertenecientes a
lı́neas interiores del dominio (ver el Apartado 3.10.7). La elección del elemento correcto para
este cálculo, requiere de información adicional. Esta información puede ser un segundo punto
que nos de la orientación de avance en la generación de nuevos elementos. Una situación de
este tipo puede verse en la Figura 4-40.
132 Generación de malla
Help point
N1
❘ N2
Base point
3
Pn = Li Pi
i=1
Pn = T · Pn
En este apartado se pretende distinguir los algoritmos y métodos que se han ido desarrollando
a lo largo de este trabajo en contraposición al estado del arte y a los conocimientos acumulados
sobre el tema. Más que pretender afirmar lo novedoso de algunas técnicas, se va a intentar
mostrar cómo la utilización de algoritmos conocidos en maneras un tanto distintas, puede llevar
a un mejor cumplimiento de los objetivos, o sea, la generación eficiente de malla de calidad para
APORTACIONES EN LA GENERACIÓN DE MALLA 133
Transiciones de tamaños
El proceso anterior a la generación de malla que consiste en corregir los tamaños óptimos de
elementos para compatibilizarlos entre ellos fue descrito en el Apartado 4.7.2. La innovación
de más interés ha consistido en aplicar esta transición de tamaño a mezclas de mallas estruc-
turadas y no estructuradas para minimizar el número de elementos que describen correctamente
una geometrı́a. Debe tenerse en cuenta que este preproceso que se produce anteriormente a la
generación es crucial para obtener éxitos en la generación para modelos geométricos arbitrari-
amente complejos. También es básico para incrementar la automatización y minimizar, por
tanto, el trabajo humano para obtener una malla correcta.
La generación de malla estructurada se realiza, tanto en las superficies como en los volúmenes,
mediante la aplicación del algoritmo de interpolación Coon parcialmente bicúbico. Aunque este
algoritmo ha sido y es utilizado ampliamente en muchas aplicaciones (ver [Far93]), su uso en
la generación de malla estructurada representa un nuevo acercamiento al problema de insertar
nodos en el interior de un dominio.
134 Generación de malla
La concentración de elementos para dichas mallas se realiza con un incremento según una
progresión geométrica que se asigna y se calcula lı́nea por lı́nea (ver Apartado 4.8.5 en la
página 86). De esta manera se puede tener una combinatoria mayor para colocar los elementos
en forma óptima.
Uno de los problemas más graves que aparecen en la generación de malla sobre NURBS, con-
siste en que éstas pueden tener parametrizaciones muy alejadas a la del parámetro arco. En
generación de malla, es completamente imprescindible tener un buen control en los tamaños de
elementos en cada zona. Para solventar este problema se ha procedido de dos maneras:
Cuando hay que generar nodos sobre una lı́nea con diferentes tamaños en diferentes zonas de
dicha entidad, es necesario el uso de un algoritmo que posicione estos nodos de tal manera
que se distribuyan correctamente a lo largo de todo ella. El algoritmo de la doble parábola
con reposicionamiento iterativo desarrollado en la tesis cumple muy adecuadamente con dichos
preceptos. En concreto, se adapta muy bien al parámetro de transición definido por el usuario.
Para la generación de malla de superficie, las técnicas más habituales en la literatura consisten en
la generación en el espacio paramétrico con corrección mediante la métrica del espacio. Algunos
ejemplos de ello pueden verse en [MH95]. También se encuentran ejemplos en la literatura sobre
generación en un espacio equivalente al paramétrico.
APORTACIONES EN LA GENERACIÓN DE MALLA 135
El uso de Octtrees para búsquedas optimizadas se ha convertido en habitual para todo generador
de malla que pretenda ser eficiente computacionalmente [Löh88]. Ha sido necesario en la tesis
la implementación de funcionalidades adicionales para poderlo adaptar a todas las necesidades
que se han ido presentado. En concreto:
Octtree unidimensional
La extensión, o en este caso más bien reducción, de la técnica Octtree al caso unidimensional,
se ha usado para la ordenación eficiente de caras del frente de generación de malla.
Para conseguir una extracción rápida de las caras usadas, ha sido necesario desarrollar
criterios adicionales de información cruzada. Debido al hecho de que muchas caras tienen
tamaño equivalente, ha sido necesario implementar técnicas que no reduzcan la ordenación a
orden O2 .
[MH95] y [Löh97].
Para aumentar la eficiencia del método, la calidad de los elementos resultantes y sobre todo,
la seguridad en el éxito de la generación, se han añadido algunas técnicas a las ya descritas. En
concreto:
• Se mantiene una historia del incremento del tamaño de los elementos, pues basar el
incremento del tamaño óptimo únicamente en el tamaño actual del elemento del frente,
evita que se produzca en muchos casos el crecimiento deseado. La solución consiste en
que cada elemento contenga información no sólo de su tamaño, sino también del tamaño
que deberı́a haber tenido.
• El criterio de diferentes niveles de tolerancia desarrollado permite asegurar una alta cali-
dad de la mayorı́a de los elementos y al mismo tiempo, permite proceder con una tolerancia
menor en la generación cuando no es posible continuar con la óptima.
Las técnicas de mejora de la malla han sido descritas ampliamente en la literatura de generación
de malla (ver [BD97]). Más concretamente, tanto el algoritmo de intercambio de diagonales
como el de movimiento de nodos en el centroide de superficies elementos se han convertido en
estándares en la materia. En el algoritmo desarrollado en la tesis, la consecución de una buena
mejora de la malla radica en la utilización de un indicador de error adecuado y en un buen
criterio para reposicionar los nodos que se desplazan en el centroide.
ha permitido desarrollar un nuevo algoritmo que, aún siendo más lento que otros algoritmos
alternativos, proporciona elementos de gran calidad para superficies altamente distorsionadas.
Por el hecho de que no puede llegarse siempre a una generación óptima, es imprescindible
usar dicho algoritmo en combinación con otras técnicas de generación de malla en el plano.
Aceptando todas estas dificultades, este método de generación es de gran utilidad en los casos
en que la calidad de los elementos resultantes sea un requisito imprescindible para el método
de cálculo.
Las superficies-malla
El método de generación de malla sobre un dominio superficial descrito mediante otra malla, ha
sido ya implementado y descrito en [Löh96]. Sin embargo, las dificultades de implementación
práctica y eficiente requieren de todo un conjunto de técnicas que lo complementen.
En concreto, los puntos que provocan más dificultades a esta tecnologı́a son:
• El salto en el frente a través de una lı́nea de unión de elementos que defina una elevado
ángulo entre las dos partes.
• La búsqueda eficiente del elemento que debe servir de base para el cálculo de normales o
para el reposicionamiento del nuevo nodo requiere de métodos de avance según un camino
a través de la malla y de cálculos rápidos de funciones de forma en coordenadas locales.
Durante los últimos años se ha producido una importante investigación, con su desarrollo aso-
ciado, de multitud de técnicas de generación de malla. Ello ha producido abundante literatura
sobre el tema y la aceptación de algunas técnicas como las que deben ser usadas de facto, y que
ya han pasado al conocimiento general.
Sin embargo, la obtención a partir de unas técnicas genéricas de unos generadores de malla de
robustez industrial y que sean lo suficientemente automáticos para casi anular la intervención del
usuario, es aún motivo de importantes desarrollos y preocupaciones. Puede resumirse diciendo
que es un tema muy avanzado a nivel de investigación pero que aún no ha llegado a su absoluta
madurez en su aplicación práctica y eficiente.
138 Generación de malla
Se espera que los desarrollos de esta tesis descritos en este capı́tulo, ayuden a avanzar la
tecnologı́a de generación de malla hacia ese objetivo de alta robustez y automatización.
Capı́tulo 5
5.1 INTRODUCCIÓN
Se entiende por adaptación a un tipo de análisis al conjunto de todos los pasos, procesos y
programación adicional que se requiere para que un sistema de preproceso pueda tratar, y más
tarde transferir, toda la información necesaria para describir dicho análisis a un programa de
cálculo.
Tal como se describı́a en el Capı́tulo 2, el sistema desarrollado en la tesis se ha organizado
para poderse utilizar en cualquier tipo de análisis. Para poder cumplir tal objetivo, cabrı́a
pensar en tres posibilidades:
1. En la creación del sistema se incluyen todos los tipos de datos que se necesitarán para
todos los análisis contemplados y también se incluye la adaptación para todos esos análisis.
2. En el interior del sistema se incluyen todos los tipos de datos que se necesitarán. Para
cada tipo de análisis se escoge de entre esos datos.
La primera posibilidad es la más cerrada en el sentido de que no admite ningún tipo de análisis
nuevo. La segunda posibilidad permitirı́a incluir tipos de análisis nuevos siempre que no nece-
siten estructuras de datos nuevas. Ası́, si no se han contemplado los tipos de datos particulares
que requiere un análisis concreto, la adaptación posterior será imposible.
140 Adaptación a un tipo de análisis
La tercera posibilidad, que es la más genérica, es la que ha sido adoptada. Para hacerla
posible, es necesario realizar una abstracción de todos los datos que se puedan necesitar para
cualquier análisis y entenderlos como unas estructuras de datos más sencillas.
Con este criterio se permite adaptar el sistema a tipos de análisis que eran imposibles
de prever en el instante en que se creó este programa. Se puede pensar en el concepto de
extensibilidad total.
Se define tipo de problema como la información que hay que proporcionar al sistema para que
éste pueda operar con un programa de análisis determinado. Es decir, dado un sistema de
preproceso genérico como el desarrollado, y dado un programa de cálculo, se entiende como tipo
de problema a toda la información que falta para unir ambos programas.
Preproceso
✻
Tipo de prob- Programa de
✛ ✲ ✲
lema A análisis A
... ...
Esta información consiste en un conjunto de ficheros de texto que describen todos los datos
ABSTRACCIÓN DE DATOS 141
particulares del análisis que el usuario deberá proporcionar posteriormente para cada análisis
que vaya a realizar. También habrá una descripción de la manera en que deben proporcionarse
esos datos al programa de análisis. Por tanto, la creación de un tipo de problema es un proceso
que se realiza de manera completamente externa al sistema de preproceso y que se hace una
sola vez. Una vez terminada, el preproceso y el proceso quedan perfectamente unidos y la
percepción que recibe el usuario es la de un programa único.
Cuando pensamos en un análisis por métodos numéricos (elementos finitos, diferencia finitas,
etc.), los datos que se necesitan para éste se consideran, en un primer nivel, como entes con
significación fı́sica. Ası́, una fuerza, una velocidad inicial o un material tienen un significado
fı́sico muy determinado dentro de un análisis.
En un segundo nivel, cada conjunto de estos datos se puede interpretar como un conjunto de
nombres, números, vectores y matrices que tienen una estructura concreta y distinta para cada
agrupación de estos datos. Ası́, una fuerza puntual se entenderı́a como un vector tridimensional
más un punto de aplicación. Un material serı́a un conjunto de propiedades representables en
su mayorı́a por números, aunque también podrı́a haber propiedades representadas con curvas
de variación o con nombres especı́ficos.
El tercer nivel de abstracción consiste en simplificar toda esta información en un conjunto
de campos, donde cada campo contiene el nombre del dato a introducir y su valor es siempre
representable mediante una cadena de texto. Con este criterio, una fuerza no es más que un
conjunto de tres campos, de nombres Componente x, Componente y y Componente z 1 y de
valores tres cadenas de texto que en este caso representan números.
En realidad, es necesario introducir unos pocos tipos de campos y mediante éstos será posible
representar cualquier información para el análisis. Los tipos de campos son:
1. Campo de valor libre. Se permite al usuario entrar cualquier valor en él. Su uso tı́pico es
para entrar valores numéricos o no numéricos para una propiedad.
2. Campos con número fijo de valores. El usuario puede escoger entre un número finito de
posibilidades. Su representación gráfica es mediante un menú o unos check boxes 2 .
1
O cualquier otros nombres similares.
2
Se denomina check boxes a un tipo de botones cuyas dos alternativas son estar conectado o desconectado.
142 Adaptación a un tipo de análisis
3. Campo de ejes locales. Permite asociar unos ejes locales a la condición a la que están
asociados.
4. Campo de vectores o matrices. Se usa tı́picamente para representar una propiedad me-
diante una curva definida por puntos. También es útil para propiedades cuya definición
requiere de un número de valores no conocidos a priori.
Con este conjunto de tipos de datos se puede representar virtualmente cualquier tipo de
propiedad o información asociada a un análisis.
La separación de los datos del análisis en subgrupos ha sido ya dada en el Apartado 2.5. Cada
uno de estos subgrupos consistirá en un conjunto de campos de los anteriormente definidos
y en una posible información adicional relativa al grupo en si. A continuación se describe la
aplicación de estos criterios a cada uno de los grupos.
Condiciones
Una condición es un conjunto de campos de los anteriormente descritos que contiene una vin-
culación con las entidades geométricas. Una vez definida, el usuario asignará unos valores
particulares de dichos datos a un conjunto de entidades geométricas o de malla. Debe ten-
erse en cuenta toda la casuı́stica que provoca que estos datos estén finalmente vinculados a un
conjunto de nodos, de caras de elementos o de elementos.
En la Figura 5-2 se describen los datos necesarios para definir una condición concreta.
En este caso se trata de una prescripción de movimiento nodal con posibilidad de introducir
desplazamientos impuestos.
Materiales
Son muy similares al concepto de condición. La diferencia básica consiste en que el tipo de
problema proporciona una base de datos de materiales que, posteriormente, el usuario podrá
modificar y ampliar.
Los materiales siguen siendo un conjunto de los campos descritos previamente que tı́picamente
representarán a las propiedades de dicho material que tengan interés para un análisis concreto.
CONEXIÓN PREPROCESO-PROCESO 143
Figura 5-2: Comparación entre los datos que definen una condición en el tipo de problema con
la ventana que pide esos datos al usuario.
Conjunto de campos que para el caso de los datos generales del problema es un conjunto único
y para el caso de los datos de intervalo, es un conjunto que se repite para cada intervalo.
Como en todos los casos anteriores, el problemas se reduce a definir cada conjunto como
una suma de dichos campos.
Hasta ahora, se ha descrito el tratamiento de los datos para el análisis en el interior del sistema
de preproceso. Una alternativa consistirı́a en concluir el problema en este punto y escribir todos
estos datos en un formato de fichero neutro. Dada la complejidad y variedad que representa
esta información, la solución ası́ escogida exigirı́a la creación de muy complejos programas de
interfase de difı́cil mantenimiento. Además de esta dificultad, la vertebración de un sistema en
múltiples y pequeños componentes conlleva una carga de mantenimiento muy difı́cil de asumir.
En este trabajo se presenta una forma alternativa de resolver este problema. Se propone la
extensión del tipo de problema para que también incluya una descripción del formato del fichero
144 Adaptación a un tipo de análisis
El lenguaje de programación o de macros para definir los datos para el análisis, consiste en un
fichero, al que llamaremos fichero BAS, donde se incluye la información que se requiere en el
fichero de comunicación. Insertados en medio del texto genérico, que se reproduce ı́ntegramente,
se introducen un conjunto de comandos3 que extraen información de la base de datos y la
substituyen en el fichero de salida.
Tabla 5.1: Comparación entre el código BAS para escribir unos datos y los datos que efectiva-
mente se escriben para un ejemplo concreto.
En la Tabla 5.1, se incluyen como ejemplo algunos comandos que extraen información de
propiedades de la malla ası́ como de datos generales del problema. En la Tabla 5.2, se puede
ver otro ejemplo donde se introducen ya estructuras clásicas en la programación como son
los bucles. Además de bucles, el lenguaje incluye condicionales, variables y otros tipos de
estructuras necesarias para producir la salida adecuada.
Al ser un lenguaje especializado para el cometido de escribir este tipo de información, su
programación es mucho más sencilla que la de escribir un programa independiente, que actúe
como interfase, en un lenguaje de programación convencional como puede ser FORTRAN o
3
Se distingue un comando porque lleva como signo diferenciador el sı́mbolo estrella (∗) delante suyo.
EXTENSIONES MEDIANTE LENGUAJES DE SCRIPT 145
GEOMETRIA
GEOMETRIA
$ CONECTIVIDADES ELEMENTALES
$ CONECTIVIDADES ELEMENTALES
$ ELEM. MATER. SECUENCIA DE CONECTIVIDADES
$ ELEM. MATER. SECUENCIA DE CONECTIVIDADES
1 0 1 22 4
*loop elems
2 0 22 21 23
*elemsnum *elemsmat *elemsConec
...
*end elems
36 0 25 30 5
$ COORDENADAS DE PUNTOS NODALES
$ COORDENADAS DE PUNTOS NODALES
$ NODO COOR.-X COOR.-Y COOR.-Z
$ NODO COOR.-X COOR.-Y COOR.-Z
*loop nodes
1 -9.94231 2.65128
*format "%6i%15.5f%15.5f%15.5f"
2 -0.79538 1.50239
*NodesNum *NodesCoord
...
*end
30 -7.04511 1.39341
FIN_GEOMETRIA
FIN_GEOMETRIA
Tabla 5.2: Otro ejemplo de comparación entre el código BAS para escribir unos datos y los
datos que efectivamente se escriben.
C++.
El lenguaje es interpretado, en el sentido de que cada vez que se va a escribir un fichero de
datos para el análisis, se vuelve a leer el fichero BAS y se ejecutan los comandos contenidos
en él. La ventaja evidente de esta forma de trabajar reside en que la velocidad de creación
y prueba de nuevos tipos de problemas aumenta considerablemente. Se ha comprobado que
la velocidad de creación de un nuevo tipo de problema, para un usuario entrenado y para un
programa de análisis de dificultad media, puede estimarse en unas pocas horas.
El inconveniente de los lenguajes interpretados, reside en la menor velocidad de ejecución.
Ello implica que el tiempo de escritura del fichero de datos es mayor del que tendrı́a una solución
especializada. La comprobación práctica, es que el tiempo final para realizar este cometido no
representa un problema real para su uso práctico, incluso para modelos de grandes dimensiones.
La idea de la simplificación de los datos en unos pocos tipos básicos, encaja muy bien en
la necesidad de adaptación total del sistema. La solución opuesta de tener todos los datos
146 Adaptación a un tipo de análisis
especializados para todos y cada uno de los tipos de análisis impide esta generalización tan
beneficiosa.
Finalmente, la solución de insertar un lenguaje especializado y simplificado para escribir
los datos en el formato del análisis, es una aportación significativa de esta tesis que cambia el
sentido de la adaptación. Del clásico criterio de que el programa de análisis se adaptaba al
preproceso, se ha ido al extremo contrario de que el preproceso se convierte en una herramienta
básica, a la que todos los programas de análisis se van conectando.
Ejemplos de aplicación
En este capı́tulo se describirán mediante ejemplos los retos que han permitido al programa de
preproceso ir mejorando su calidad y nivel de utilización.
Cada uno de estos ejemplos, que pueden considerarse descriptivos de toda una categorı́a de
modelos, ha supuesto para la tesis la subida de un escalón en el nivel de calidad en las técnicas
desarrolladas y en las posibilidades de tratamiento de modelos industriales mediante el sistema
GiD, resultante de este trabajo.
En la descripción unitaria de cada uno de ellos se va a hacer hincapié en las mejoras que ha
requerido el modelo para poder ser tratado con eficiencia y robustez.
Este avión fue uno de los primeros casos de importación de modelos externos. La generación de
malla de superficie fue usada para análisis de impacto contra una pared. Posibilitó el desarrollo
de las NURBS y de la generación de malla sobre ellas. La importación de la geometrı́a se realizó
mediante la utilidad de lectura de ficheros batch y el uso de un conversor externo. El modelo
está descrito por unas 200 superficies y la malla generada se compone de 30000 triángulos (ver
Figura 6-1).
Diente de excavadora
Este ejemplo (Figura 6-2), representa la generación de malla sobre un modelo de sólido de
un diente de excavadora. Con el se inició la generación de malla de tetraedros sobre formas
geométricas no triviales. Las mallas resultantes se componı́an de 20-40000 tetraedros y el
número de superficies necesarias para describir los modelos fue incrementándose desde 30-40
148 Ejemplos de aplicación
Presa bóveda
Por los requerimientos del análisis, convenı́a obtener una malla de hexaedros de 20 nodos sobre
el modelo de la presa de la Figura 6-5. Para ello, se usaron las funcionalidades del sistema GiD
en relación a la malla estructurada. En concreto, fue necesario crear funciones que permitieran
la creación automática de volúmenes estructurados y la asignación automática y coherente de
tamaños y transiciones entre ellos. En la Figura 6-6, se observa la malla estructurada resultante
del modelo. El cálculo se realizó mediante un análisis de sólido con un modelo de degradación
de los materiales [CdSC99].
Catedral de Tarazona
Estampación de chapa
Para un análisis de estampación de chapa es necesario obtener la malla de los útiles que in-
tervienen en el proceso [RGO95]. Estos útiles representan formas complejas como pueden ser
componentes de automóviles. El tratamiento de estos componentes requirió una gran mejora en
la importación de ficheros IGES ası́ como en la generación de malla sobre NURBS. Debe ten-
erse en cuenta que este tipo de piezas contiene radios de acuerdo y otros pequeños detalles que
provocan superficies extremadamente complejas con ratios de relación de tamaños de 1/1000
149
Transbordador espacial
Para la generación de malla volumétrica alrededor del transbordador espacial de la Figura 6-10,
se importó la geometrı́a mediante una superficie-malla, se creó la caja contenedora y se remalló
el conjunto. Ello supuso la implementación de la generación de malla de superficie sobre una
malla previa. El análisis posterior consistió en un cálculo fluido dinámico (CFD) con superficie
libre que representaba la forma de las olas al zambullirse el transbordador en el mar [Cod93].
El análisis de velas de barco se realiza con un modelo acoplado CFD-estructural con interpo-
lación de presiones del fluido hacia el modelo de sólido. La creación del modelo geométrico
requerı́a la creación de superficies suaves a partir de un conjunto de lı́neas paralelas y el du-
plicado de los nodos alrededor de las velas para el cálculo fluido dinámico. Esta última opción
150 Ejemplos de aplicación
Análisis de un barco
El modelo geométrico del casco de barcos se realiza normalmente con un número pequeño de
NURBS, donde cada una de ellas tiene una forma muy sofisticada. En este caso, la generación
de malla convencional sobre un dominio alterado era incapaz de producir elementos de calidad
sobre el casco del barco. Con la generación directa de triángulos en el espacio, se ha podido
reproducir bien la forma con una buena relación de aspecto. Las Figuras 6-15 y 6-16, muestran
uno de los modelos y su malla. Las mallas para análisis hidrodinámico sobre cascos de barco
oscilan entre 300000 y un millón de tetraedros.
Fundición de aluminio
En la pieza de la Figura 6-17, se puede ver un modelo para análisis de procesos de fundición
de aluminio. La caracterı́stica de más interés a nivel de generación de malla es que es posible
mallar correctamente un volumen importado mediante fichero IGES con cientos de superficies y
complejidad muy alta. Las mallas para estos análisis rondan los cientos de miles de elementos.
Estos análisis tienen la complejidad adicional de que hay que crear contactos pieza-molde, tanto
mecánicos como térmicos.
Figura 6-2: Malla de una pieza de diente de excavación, recortada para permitir ver los tetrae-
dros interiores.
154 Ejemplos de aplicación
155
Figura 6-6: Malla de la presa anterior generada como malla estructurada de elementos
hexaédricos.
158 Ejemplos de aplicación
159
Figura 6-11: Malla del edificio del telescopio de Gran Canarias para realizar un análisis fluido
dinámico (CFD).
Figura 6-12: Malla y resultados del campo de velocidades del aire alrededor del telescopio con
parte del terreno circundante.
166 Ejemplos de aplicación
167
Figura 6-13: Geometrı́a de una vela de barco deportivo más el dominio de análisis.
Cada uno de los capı́tulos de esta tesis concluye con un apartado destinado a especificar y
distinguir lo que se considera aportación de la tesis en contraposición a la algoritmia extraı́da
del estado del arte. En el presente apartado se incluye un extracto de dichas aportaciones.
El Capı́tulo 5 expone los criterios generales y las técnicas que permiten la adaptación del
176 Conclusiones y lı́neas futuras de investigación
En cada uno de los capı́tulos se ha incluido un apartado de conclusiones que hacı́a referencia
a toda la temática descrita en dicho capı́tulo. Estas últimas conclusiones generales serán un
resumen de aportaciones de todo lo ya descrito, más un conjunto de observaciones que afectan
al conjunto de la tesis como unidad.
En primer lugar, para cumplir los objetivos propuestos, era necesario crear capacidades de
tratamiento de modelos geométricos complejos. Estas capacidades incluyen tanto la importación
a partir de programas externos como una cierta capacidad de modificación de los modelos
importados. Además, también debe ser posible la creación dentro del sistema de modelos
geométricos hasta una cierta complejidad.
Se ha conseguido este propósito, ya que es habitual con el sistema desarrollado el tratamiento
de modelos con varios cientos e incluso miles de superficies NURBS con una relativa comodidad.
Se ha dotado al sistema con un conjunto de herramientas que permiten modificar hasta cierto
punto esos modelos con el objetivo de convertirlos en aptos para su análisis. Esas mismas
herramientas y otras permiten crear modelos de dificultad baja y media sin depender de un
programa externo. Es posible crear modelos bi y tridimensionales del orden de dificultad del
análisis resistente de una catedral, del análisis aerodinámico de un modelo de un telescopio más
el terreno circundante o de las velas de una embarcación recreativa.
En segundo lugar, es necesario corregir la geometrı́a para poder generar una malla de calidad
suficiente sobre ella.
La mayorı́a de los modelos que se importan para crear una malla, han sido diseñados con
otros propósitos y por tanto, no optimizados para el análisis. En la tesis, se han creado un
conjunto de herramientas que corrigen gran cantidad de estos defectos sin intervención del
usuario.
En tercer lugar, se requerı́a la generación de malla de manera eficiente y que se adaptase a
gran variedad de necesidades. El resultado ha sido:
Finalemente, se requerı́a que el programa fuese capaz de tratar todos los datos correspondi-
entes a diferentes tipologı́as de programa de análisis. Al mismo tiempo, el coste de adaptación
entre programas debı́a ser bajo y realizable de manera exterior al sistema de preproceso.
El resultado ha sido que actualmente existe una gran cantidad de códigos tanto académicos
como comerciales que se han adaptado completamente al sistema GiD desarrollado en la tesis.
Después de la adaptación, la percepción que recibe el usuario es la de un programa único.
Ejemplos de estas adaptaciones son:
• Programas de análisis de sólidos tanto estáticos como dinámicos y con no linealidad tanto
geométrica como de materiales. Calsef [OOBC91], COMET [CdSC99].
• Otros.
A continuación se incluye una lista de posibles temas de interés para investigación futura dentro
del ámbito de trabajo planteado:
4. La generación de capas lı́mite para análisis mediante Navier-Stokes provoca una serie de
problemáticas que deben ser resueltas de una manera totalmente general. Entre éstas
se destaca la necesidad de generar una malla estructurada próxima a las superficies que
definen el modelo de análisis para capturar la capa lı́mite, que esté conectada a una malla
no estructurada que discretice el dominio exterior.
7. Las técnicas de adaptación del sistema a un programa de cálculo pueden mejorarse para
permitir mayor versatilidad de uso por parte del usuario. Puede pensarse en conceptos
tales como:
• Criterios lógicos de interacción de campos. Unos campos pueden forzar valores de-
terminados a otros.
Dado un conjunto de puntos y un conjunto de vectores, diremos que los puntos pertenecen al
espacio euclı́deo tridimensional E 3 y que los vectores pertenecen a R3 .
Dados los puntos P0 y P1 , la diferencia entre ambos da como resultado el vector v . La
substracción de dos elementos de E 3 da como resultado un elemento de R3 .
En general la operación de suma para puntos no está bien definida. Sólo es válida la combinación
baricéntrica, que consiste en la suma de un conjunto de puntos afectados cada uno de ellos por
1
Acrónimo de Non Uniform Rational B-Splines.
182 Descripción matemática de las NURBS
Esta operación es válida debido a que puede considerarse como la suma de un punto con un
vector:
n
P = P0 + αi (Pi − P0 )
i=1
Una combinación baricéntrica es convexa si todos los coeficientes αi son mayores o iguales a
cero. El lugar geométrico de todos los puntos resultantes de una combinación de este tipo se
llama polı́gono convexo. Una propiedad de este polı́gono es que la recta que une dos puntos
cualesquiera de su interior, estará también totalmente contenida en su interior. En la Figura A-
1, se aprecia una recta cualquiera que une dos puntos extremos.
P2
P3
PA
P1
P4
PB
P5
En general, todas las curvas y superficies que se describirán en los apartados siguientes, se
construyen a partir de combinaciones baricéntricas de puntos. De aquı́ la importancia de esta
introducción.
DIFERENTES TIPOS DE LÍNEAS 183
Para describir el tipo de lı́neas denominadas NURBS en toda su generalidad, será interesante
introducir previamente un conjunto de curvas más simples que nos servirán como introducción
a algunas de sus propiedades. En concreto, el orden natural de introducción de las curvas será:
1. Curvas de Bézier. Tipo de curvas que se definen mediante un polı́gono de control con
un número fijo de puntos en función del grado.
2. Splines. Extensión de las anteriores a partir del concepto de curva definida a trozos.
Incorporan los knots 2 .
3. B-splines. Otro nombre dado a las Splines cuando se representan mediante el polı́gono
de Boor.
4. Cónicas. Curvas con término racional que describen al conjunto de: parábolas, hipérbolas,
elipses, cı́rculos, etc.
5. Lı́neas NURBS. B-splines con término racional. O sea, que combinan las propiedades
de las B-splines con las de las cónicas.
Todas las curvas que trataremos serán paramétricas tridimensionales, siendo el espacio
paramétrico en todos los casos el [0, 1]. La introducción de esta restricción en el espacio del
parámetro no resta generalidad a la formulación, pues se podrı́an obtener ecuaciones equiva-
lentes en el dominio genérico [a, b], con la simple aplicación de una transformación del parámetro
t tal que t = a + (b − a)t.
Las curvas de Bézier son una forma alternativa de representación de una curva polinómica. En
lugar de la representación tradicional de un polinomio como: P = P0 + P1 t+· · ·+ Pn tn , se escoge
otra representación en la que los puntos P i adquieren sentido geométrico. A continuación se
introduce, de manera constructiva, la definición de una curva de Bézier.
2
Se llama knots al conjunto de parámetros Ki pertenecientes a R tal que Ki ∈ [0, 1], que forman una serie de
valores posibles del parámetro de la curva y que sirven para su definición. Una posible traducción serı́a nodos.
En todo caso, en este documento mantendremos el vocablo original por razones de uso común.
184 Descripción matemática de las NURBS
P1 P2
P1
P1
P3
P0 P2 P0
M
P0 M M
t t t
0 1 0 1 0 1
Dados los puntos P0 y P1 , todos los puntos P pertenecientes a E 3 de la forma
se denominan la lı́nea recta a través de P0 y P1 . Para 0 ≤ t ≤ 1, el punto P estará entre los
dos puntos. Por tanto podemos considerar a P (t) como una función paramétrica de t ∈ [0, 1]
hacia un segmento de lı́nea recta en E 3 . Nótese que esta función se obtiene como combinación
baricéntrica de dos puntos.
Si realizamos la misma construcción para un grado más, o sea, creamos una nueva función de
t tal que sea combinación baricéntrica de dos combinaciones baricéntricas lineales, se obtiene:
Por tanto, obtenemos una nueva función paramétrica, llamada parábola, que es una aplicación
del intervalo [0, 1] a una curva de grado dos en el espacio. Algunas de sus propiedades pueden
deducirse directamente de las propiedades de la combinación baricéntrica y son:
4. La curva es plana y está incluida en el polı́gono convexo que forman sus puntos.
Definimos la curva de Bézier de grado n, P n como P0n (t) en (A.1). Vemos que esta curva
queda perfectamente definida mediante su grado n, y su polı́gono de control, que son los puntos
P0 , . . . , Pn . Esta curva cumple las siguientes propiedades:
2. La tangente de la curva en el P0 y Pn pasan, respectivamente, por los puntos P1 y Pn−1
si no coinciden con los anteriores y, en general, por los más cercanos a ellos que no sean
coincidentes.
5. De las propiedades anteriores se deduce que la curva se acerca suavemente a los puntos
interiores del polı́gono de control.
6. Se deduce también que si el polı́gono de control reside en un plano, la curva estará con-
tenida en el mismo plano.
186 Descripción matemática de las NURBS
En la Figura A-2 en la página 184, pueden observarse las propiedades de interpolación, con-
tinuidad y tangencias para curvas de Bézier de diversos grados.
El método usado para introducir y definir a las curvas de Bézier es al mismo tiempo, una
función recursiva que sirve para evaluarlas. Existen otras formas de definir y evaluar este tipo
de curvas que se describirán en apartados posteriores.
n
n!
i!(n−i)! si 0 ≤ i ≤ n
=
i 0 en caso contrario.
• Recursividad.
0
B0 (t) ≡ 1
Bi (t) = (1 − t)Bi (t) + tBi−1 (t) con:
n n−1 n−1
Bjn (t) ≡ 0 para j ∈ [0, . . . , n]
n
Bin (t) ≡ 1
i=0
Dadas estas definiciones, podemos expresar una curva de Bézier P n (t) como:
n
P n (t) = P0n (t) = Pi Bin (t).
i=0
CURVAS DE BÉZIER 187
Derivadas
Si definimos el operador diferencias en avance ∆ como ∆Pi = Pi+1 − Pi , obtenemos que la
derivada de una curva de Bézier es:
d n
n
n−1
n−1
P (t) = n
Bi−1 (t) − Bi (t) Pi = n
n−1
∆Pi Bin−1 (t) con ∆Pi ∈ R3 (A.2)
dt
i=0 i=0
Para las derivadas de orden superior definimos el operador diferencias en avance iterativo ∆r
como:
r
r
∆r Pi = ∆r−1 Pi+1 − ∆r−1 Pi = (−1)r−j Pi+j (A.3)
j
j=0
dr n n! n−r
P (t) = ∆r Pi Bin−r (t) (A.4)
dtr (n − r)!
i=0
Operando, es posible deducir una expresión recursiva para las derivadas que mantendrı́a una
relación directa con (A.1). Para obtener sus expresiones ver [Far93].
Subdivisión
Dada una curva P (t) con t ∈ [0, 1], queremos encontrar una curva P (t) tal que P (t) ≡ P (s)
para s ∈ [0, s1 ] siendo s1 un valor del parámetro situado en el interior del intervalo [0, 1]. O
sea, queremos subdividir la curva P (t) y obtener una nueva curva que sea equivalente a ella en
un subconjunto del intervalo del parámetro. Si P0 , . . . , Pn es el polı́gono de control de P (t) y
P0 , . . . , Pn es el polı́gono de control de P (s), entonces debe cumplirse que:
Donde el superı́ndice i se refiere a que son los puntos del polinomio de grado i calculado a partir
de P0 , . . . , Pn que es el polinomio de grado 0.
P2
P2
P1
P1
P3
P3
P0
0 s1 1
Figura A-3: Subdivisión de curvas de Bézier. A partir de la curva de los Pi definida en [0, 1],
obtenemos la curva definida por los Pi , definida en [0, s1 ].
La forma matricial
Otra forma de expresar las curvas de Bézier es mediante matrices en la siguiente forma:
B0n (t) m00 · · · m0n t0
n ! !
.. . .. ..
P n (t) = Pi Bin (t) = P0 , . . . , Pn ] . = P0 , . . . , Pn ] .. . .
i=0
Bnn (t) mn0 · · · mnn t n
j−i n j
mij = (−1)
j i
Esquema de Horner
Una forma más eficiente de evaluar una curva de Bézier es mediante el esquema de Horner, que
se basa en anidar las operaciones unas dentro de otras. Para el caso de una curva de grado
SPLINES 189
cúbico tendremos:
"# $ %
3 3 3 2 3 3
P 3 (t) = sP0 + tP1 s + t P2 s + t P3
0 1 2 3
n
con s = 1 − t y teniendo en cuenta que i = n−i+1 n
i i−1 para i > 0.
i i
Pi = Pi−1 + (1 − )Pi para i = 0, . . . , n + 1 (A.6)
n+1 n+1
n r
(r) n i−j
Pi = Pj (A.7)
j n+r
i
j=0
t
n+1
1
Bin (x) dx = Bjn+1 (t)
0 n+1
j=i+1
1
1
Bin (x) dx =
0 n+1
t i
t n
P n (x) dx = P0 (t)
0 n+1
i=0
A.4 SPLINES
Tal como se ha descrito en la sección A.3, el grado de una curva de Bézier determina el número
de puntos que contiene el polı́gono de control. Debido a esto, cuando se necesita aumentar el
número de puntos para tener más flexibilidad en la definición de la curva, se debe aumentar el
grado. A efectos prácticos y de coste computacional, grados excesivamente altos (n > 10) no
son aconsejables. La extensión natural de estas curvas para obtener otras más flexibles, es la de
190 Descripción matemática de las NURBS
las curvas polinómicas a trozos. Se trata de definir una nueva curva que sea la unión de varias
curvas polinómicas simples (como las curvas de Bézier) y que cumplan una serie de requisitos
de continuidad en la unión entre cada dos de estas curvas polinómicas. Esta nueva curva se
llamará spline.
o ✕
... ...
ai ai+1 ai+2 ai+3
bi−1 bi bi+1 bi+2
Figura A-4: Una curva spline se forma mediante la unión de sucesivas curvas de Bézier cumplien-
do unos requisitos de continuidad en los puntos de unión.
Si tenemos L curvas de Bézier unidas de manera consecutiva y cada una de ellas definida en
el intervalo [0, 1], tal como se muestra en la Figura A-4, podemos realizar una transformación
local del parámetro tal que queden definidas en [ai , bi ]. Ası́ obtenemos una curva global PG (t)
como unión de todas ellas y cuyo parámetro estará definido en [a, b]. Se tiene que cumplir que:
L−1
a = a0 ; b = bL−1 ; ai = bi−1 ; y b−a= bi − ai .
i=0
Por continuidad C 0 de las curvas se comprueba que Pin = Pi+1,0 . El conjunto de los ui se llama
la secuencia de knots. En la nota 2 en la página 183, se comenta sobre la posible traducción de
este término.
Continuidad C1 Para que la curva sea continua C 1 en todo el dominio de definición, im-
ponemos igualdad de derivadas en la unión de dos segmentos. Si llamamos ∆i a ui+1 − ui , t al
parámetro global de la curva y ti a los parámetros locales de cada segmento, se deduce que:
d
d 1 d 1 d P (1)
dt0 0
= n∆Pn−1
PG (t) = P0 (t0 ) = P1 (t1 ) como: entonces:
dt ∆0 dt0 ∆1 dt1 d
P (0) = n∆Pn
dt1 1
Se observa del resultado que para que la curva sea derivable C 1 en todo el dominio, es condición
necesaria pero no suficiente que los tres puntos del polı́gono de control alrededor de un punto
de unión deben ser colineales. Las relaciones de distancia a las que deben estar entre ellos
depende de la parametrización. Por tanto, dada una curva formada por segmentos de Bézier y
con los puntos colineales 3 a 3 alrededor de los puntos de unión, será C 1 en todo el dominio o
no, en función de la parametrización escogida.
Ps
∆0
∆1 Pn+1
Pn
∆1
Pn−1
∆0
Pn+2
Pn−2
∆0 ∆1
Figura A-5: La condición de continuidad C 2 en el punto Pn implica la unicidad del punto PS
A.5 B-SPLINES
Las curvas B-spline son curvas spline representadas y definidas mediante el polı́gono B-spline y
la secuencia de knots. Seguidamente se va a deducir la forma del polı́gono B-spline para curvas
de grado C 1 y C 2 de manera constructiva a partir de las curvas splines y, posteriormente, se va
a dar la definición genérica de B-spline para cualquier grado.
B-SPLINES 193
Supongamos que tenemos una curva spline cuadrática, continua C 1 en todo su dominio y
compuesta por L segmentos de Bézier. La curva queda definida mediante los polı́gonos de
control P00 , P01 , P02 , . . . , PL0 , PL1 , PL2 y la secuencia de knots. Para que se cumpla el criterio
de continuidad C 1 en los puntos P2i , se requiere que:
∆i ∆i−1
P2i = P2i−1 + P2i+1 (A.11)
∆i−1 − ∆i ∆i−1 − ∆i
Por tanto, el mı́nimo número de puntos para que quede perfectamente definida esta curva es el
polı́gono P00 , P01 , P03 , . . . , PL−1,1 , PL1 , PL2 . A esta secuencia de puntos se le llama el polı́gono
B-spline o polı́gono de Boor. Una curva B-spline cuadrática quedará definida por el polı́gono
B-spline y por la secuencia de knots. En la Figura A-6, puede apreciarse dicha relación.
P4
P21 P5
P22
P12 P30
P20 P31
P3
P2
P02 P11
P01 P10
P32
P16
P1 t0 t1 t2 t3 t4
P00
Figura A-6: Relación entre los puntos de control de la B-spline y de las curvas de Bézier que la
forman, para el caso cuadrático.
194 Descripción matemática de las NURBS
Para que una curva spline cúbica sea continua C 2 en todos los puntos P3i , i ≥ 0, debe cumplirse
el criterio de continuidad C 1 y además, debe existir un conjunto de puntos PSj , j ≥ 1 que
cumplan:
∆i ∆i−1
P3i = P3i−1 + P3i+1 (A.12)
∆i−1 − ∆i ∆i−1 − ∆i
∆i−1 + ∆i ∆i−2
P3i−2 = PS,i+1 + PS,i+2 (A.13)
∆ ∆
∆i ∆i−2 + ∆i−1
P3i−1 = PS,i+1 + PS,i+2 (A.14)
∆ ∆
con ∆ = ∆i−2 + ∆i−1 + ∆i . Esta imposición viene dada de que se fuerza igualdad de derivadas
segundas en los puntos. Cerca de los extremos de la lı́nea, usaremos PS,1 = P0 y PS,2 = P1 .
Entonces se obtiene que:
∆1 ∆0
P2 = PS,2 + PS,3
∆0 + ∆1 ∆0 + ∆1
Para los puntos finales de la lı́nea se procede de igual manera. El conjunto de los puntos
PS,1 , . . . , PS,L+3 es el polı́gono B-spline de la curva. Se observa que el número de puntos de
control de la B-spline cúbica NP s = NP b /3 + 3 siendo N Pb el número de puntos del polı́gono
spline.
Se ha obtenido, tanto para el caso cuadrático como para el cúbico, una formulación que nos
permite calcular los polı́gonos de control de los segmentos Bézier a partir del polı́gono B-spline.
De esta manera podemos evaluar la curva para cualquier t ∈ [0, 1]. En el siguiente apartado se
generaliza el concepto de B-spline para cualquier grado y se describen técnicas de evaluación
de las curvas directamente, sin tener que acceder a los segmentos de Bézier.
Se puede observar en la Figura A-7 en la página siguiente, la relación entre los polı́gonos de
control de la curva de Bézier con el polı́gono B-spline.
Una curva B-spline viene definida por su grado, su polı́gono de control y su secuencia de knots.
Como una B-spline es una curva formada por diversos segmentos polinómicos, el grado de
la lı́nea será el mismo grado que tendrá cada uno de los segmentos.
Figura A-7: Relación del polı́gono de control de una B-spline cúbica con las curvas de Bézier
asociadas.
Para evaluar una curva de este tipo se pueden usar varios algoritmos. Uno de ellos proviene
de la inserción de knots y se enuncia de la siguiente manera: Dada una curva definida por su
grado n, polı́gono de control P1 , . . . , PL y knots u0 , . . . , uL+n , para evaluarla en u tendremos
196 Descripción matemática de las NURBS
entonces:
s(u) = PI+1
n−r
(u)
Nota: Obsérvese que en la notación usada, la lista de puntos empieza con el subı́ndice 1 y la
lista de knots empieza con el 0. Si se quisiera que ambas listas empezasen por el mismo
subı́ndice, deberı́an modificarse ligeramente las fórmulas.
Para ilustrar los puntos que intervienen en la evaluación de la curva para un valor del parámetro
dado, se va a dar un pequeño ejemplo de una curva B-spline cuadrática (n = 2), definida
mediante un polı́gono de control de 4 puntos3 . El polı́gono de control y la secuencia de knots
se pueden ver en la Figura A-8 en la página siguiente.
Suponiendo que u ∈ [u3 , u4 ), entonces I = 3 y la curva s(u) = P42 . El cálculo será el
siguiente:
u − u2
P31 = (1 − α)P2 + αP3 con: α = (A.16)
u4 − u2
u − u3
P41 = (1 − α)P3 + αP4 con: α = (A.17)
u5 − u3
u − u3
P42 = (1 − α)P31 + αP41 con: α = (A.18)
u4 − u3
Se comprueba que para una curva cuadrática, la función recursiva se evalúa en dos niveles y
3
El mı́nimo número de puntos que puede tener el polı́gono de control de una B-spline cuadrática es de 3. En
este caso, serı́a equivalente a una curva de Bézier.
B-SPLINES 197
P2
P31
P3 P42
P41
P4
y que los knots afectados son u2 , u3 , u4 , u5 . A medida que aumenta el grado de la curva,
aumentan los niveles de recursividad y también el número de puntos de control que intervienen
en la solución.
A.5.5 Parametrizaciones
En diferentes casos nos encontraremos con que no disponemos de la secuencia de knots y que hay
que calcularla. Un caso tı́pico serı́a cuando un usuario crea interactivamente una lı́nea dando
los puntos de control o modificándolos. El programa debe calcular los knots por si solo. Otro
caso en el que debe calcularse esta lista es en la interpolación de puntos mediante B-splines.
deseada4 . Este cálculo de parámetros puede realizarse con diversas técnicas, de entre las que
se comentan dos:
Parametrización constante Todos los incrementos del parámetro son iguales. Es la más
sencilla. Si la separación entre puntos es muy distinta de unos a otros, puede dar avances
muy poco constantes.
Para interpolación de puntos mediante B-splines (ver A.5.10 en la página 200), los algoritmos
se aplicarán a los puntos a interpolar en lugar de a los puntos de control. Esto es debido a que
se necesita conocer la lista de knots, para poder calcular los puntos de control.
4
Normalmente, consideraremos una curva mejor, si los cambios de curvatura son suaves. También se tendrá
en cuenta que el parámetro de la curva se aproxime al parámetro arco. O sea, que el avance en la curva sea lo
más constante posible.
5
El segundo y penúltimo puntos no se tienen en cuenta para este cálculo de distancias.
B-SPLINES 199
entonces:
n
s(u) = Pi Nin (A.19)
i=1
Entre las dos técnicas de evaluación de la curva, esta última requiere menos operaciones que la
anterior debido a que la recursividad afecta solamente a términos escalares. Por otro lado, la
técnica primera es más estable numéricamente.
d n
s(u) = ∆PIn−1
du uI+1 − uI
d
L+n−1
∆Pi−1
s(u) = n N n−1 (u)
du un+i−1 − ui−1 i
i=1
d n n n
N (u) = N n−1 (u) − N n−1 (u)
du i un+i−1 − ui−1 i un+i − ui i+1
En la Tabla A.1 en la página siguiente, se describen los efectos en la continuidad que provoca la
repetición de knots o puntos de control para una B-spline de grado 3. Debe tenerse en cuenta
que La notación G2 , se refiere a que la curva tiene continuidad geométrica de grado 2 pero no
necesariamente continuidad en la derivada segunda. En [FvDFH93], se describen gráficamente
los efectos sobre la curva de las diferentes multiplicidades.
1 C 2 ,G2 C 2 ,G2
2 C 2 ,G1 C 1 ,G1
3 C 2 ,G0 C 0 ,G0
La curva interpola el punto de control La curva interpola el punto de control.
triple. Se puede controlar la forma de los seg-
Los segmentos en cada lado del punto mentos a cada lado del punto.
son lı́neas rectas.
lı́neas rectas. Por tanto, para representar una curva ésta debe descomponerse en un conjunto
elevado de segmentos rectos. La obtención de estos segmentos puede realizarse de dos maneras:
El segundo método permite dibujar la curva con menos operaciones para igual precisión.
Existen muchas técnicas para definir una curva que interpole a un conjunto de puntos dados.
En este caso se va a realizar una interpolación mediante B-splines cúbicas. La formulación del
problema viene dada por: dados los puntos x1 , . . . , xL , encontrar una curva B-spline de grado
3 y L + 2 puntos de control que interpole a los puntos dados. En la Figura A-9 en la página
siguiente, puede observarse la relación entre ambos conjuntos de puntos.
Para ello, debemos crear primero la lista de knots. Las técnicas de creación serán las descritas
en la sección A.5.5 en la página 197.
A partir de las relaciones entre los sucesivos polı́gonos de Bézier con el polı́gono de control
B-SPLINES 201
P4 P5
x3
x4
P3
x2
P7
P2
x5
x6
P1 x1 P6
P8
P9 x7
Figura A-9: Obtención de los puntos de control a partir de un conjunto de puntos interpolados
con una B-spline cúbica.
B-spline (ver A.5.1 en la página 193 y A.5.2 en la página 194), se pueden deducir las siguientes
relaciones:
∆i = ∆ui
∆2i
αi =
∆i−2 + ∆i−1 + ∆i
∆i (∆i−2 + ∆i−1 ) ∆i−1 (∆i + ∆i+1 )
βi = +
∆i−2 + ∆i−1 + ∆i ∆i−1 + ∆i + ∆i+1
∆2i−1
γi =
∆i−1 + ∆i + ∆i+1
1 P2 ra
α1 β1 γ1 P3 (∆0 + ∆1 )x2
.. .. ..
. . = .
αL−1 βL−1 γL−1 PL (∆L−2 + ∆L−1 )xL−1
1 PL+1 rb
202 Descripción matemática de las NURBS
Donde ra y rb , que son el segundo y penúltimo punto, deben darse como una información
adicional. Una posibilidad es que el usuario los introduzca como una indicación de las tangentes
a la curva en los puntos extremos, otra posibilidad es autocalcularlos. En este caso existen
diversas técnicas, de la que se comenta una de ellas que es la de los puntos finales de Bessel.
La técnica de los puntos finales de Bessel consiste en calcular la parábola que pasa por los
3 puntos extremos de un lado de la curva y considerar que el punto a calcular debe estar en el
interior de esta parábola. Normalmente se escoge un punto convencional de la parábola como
por ejemplo t = 0.4. Se repetirı́a dos veces el proceso, una para cada lado.
Otra técnica de cálculo de los puntos incógnitas es la de imponer curvatura nula en los
extremos. A este criterio de cálculo se le denomina Condición natural de puntos finales.
El cálculo de la curva interpolante se reduce pues a calcular la lista de knots, calcular los dos
puntos de definición de tangentes (si no están ya dados), y resolver un sistema de ecuaciones
tridiagonal. Más información sobre interpolación geométrica en [LS88].
La interpolación de un conjunto de puntos con una curva cerrada implica un ligero cambio
en el sistema, ya que para asegurar continuidad C 2 entre los puntos inicial y final, hay que
incluir algunos términos más en la matriz, dejando esta de ser tridiagonal.
Existen varias maneras de definir una cónica. Una de las posibles definiciones es:
z ✻
✒y
# $
ωP
ω
P
ω=1
✲
x
2
s(t) = PHi Bi2 (t) con PHi ∈ E 4
i=0
!T
La relación de un punto P con su punto homogéneo asociado ω P ω , puede observarse
en la Figura A-10.
Una lı́nea NURBS es una B-spline con término racional. Las expresiones para evaluar una
NURBS serán equivalentes a las de evaluación de las B-splines, añadiendo los pesos ωi con su
evaluación, también recursiva. En el caso de operar con los puntos en coordenadas homogéneas
(en E 4 ), las fórmulas son idénticas. En esta sección se darán las expresiones a aplicar usando
puntos P ∈ E 3 .
204 Descripción matemática de las NURBS
Esta fórmula es equivalente a la de la ecuación A.15 en la página 196, añadiendo las componentes
del término racional. El cálculo de los pesos ωik se realiza también de manera recursiva. Para
evaluar la curva en u se debe encontrar uI tal que u ∈ [uI , uI+1 ],
k = 1, . . . , n − r
k−1 k−1
(1 − αki )ωi−1 Pi−1 (u) + αki ωik−1 Pik−1 (u) i = I − n + k + 1, . . . , I + 1
Pik (u) = para:
ωik Pi0 (u) = Pi
ωi0 = ωi
(A.20)
u − ui−1
αki =
ui+n−k − ui−1
ωik = (1 − αki )ωi−1
k−1
+ αki ωik−1
entonces:
s(u) = PI+1
n−r
(u)
De manera completamente equivalente a la ecuación A.19 en la página 199, sin más que añadir
el término racional obtenemos la expresión de la lı́nea NURBS en función de la base B-spline.
n
ωi Pi Nin
s(u) = i=1
n n
i=1 ωi Ni
n−1
n−1 n−1 β(ωI+1 −ωIn−1 ) n
d β(ωI+1 PI+1 − ωIn−1 PIn−1 ) − n
ωI+1 PI+1 n
s(u) = con: β =
du n
ωI+1 uI+1 − uI
Para ilustrar la definición de una curva racional mediante lı́neas NURBS, se ofrece el ejemplo
de la Figura A-11 en la página siguiente. Los valores de las coordenadas están dados para el
cı́rculo unitario centrado en el origen. Cualquier otro cı́rculo se obtiene mediante traslaciones y
LÍNEAS NURBS 205
escalados. Una elipse tendrı́a una definición equivalente, sin más que transformar el cuadrado
que forman los puntos de control en un rectángulo.
n=2
o
n knots = 12 ki = 0, 0, 0, 0.25, 0.25, 0.5, 0.5, 0.75, 0.75, 1, 1, 1
no puntos = 9
√
2
a=
2
P4 P3 P2
ωx ωy ω x y ω
1 1 0 1 1 0 1
2 a a a 1 1 a
3 0 1 1 0 1 1
4 −a a a −1 1 a
P5 P1 ≡P9
5 −1 0 1 −1 0 1
6 −a −a a −1 −1 a
7 0 −1 1 0 −1 1
8 a −a a 1 −1 a
9 1 0 1 1 0 1
P6 P8
P7
Figura A-11: En este ejemplo se detallan los puntos de control y los knots necesarios para
definir un cı́rculo unitario centrado en el origen.
El cambio de los pesos de los puntos de control de una NURBS afectarán, en general, a la forma
de la curva. En concreto, el incremento del peso de un punto tenderá a atraer la curva hacia
ese punto. En la Figura A-12 en la página siguiente, puede verse la diferencia en el cambio de
la forma de la curva según se mueva el punto de control o se incremente el peso de ese mismo
punto. Esta propiedad de los pesos puede usarse para modelar la forma de la curva.
Si todos los pesos tienen el mismo valor, la forma de la curva es equivalente a la curva no
racional. Esto limita el interés de los pesos para modelar porque, si se varı́an varios pesos de
varios puntos, la curva tiende a recuperar su forma original. Se parte de la restricción de que
todos los pesos deben ser positivos para evitar singularidades.
206 Descripción matemática de las NURBS
Figura A-12: En las dos figuras se aprecia la diferencia entre un movimiento de un punto de
control y un incremento del peso para el mismo punto.
Se dice que la curva está en la forma estándar si los pesos de los dos puntos extremos son
iguales a uno. Nos interesará, en general, que la curva esté en esta forma para poder realizar
algunas operaciones como creación de superficies a partir de su contorno. Toda curva se puede
convertir a su forma estándar mediante:
& i−1
ω 1
ω̂i = n i = 1, . . . , n + 1 (A.21)
ωn+1
1
ω̂i = ωi i = 1, . . . , n + 1 (A.22)
ω1
La ecuación ( A.21) está descrita para curvas de Bézier racionales pero puede extenderse a
NURBS. La ecuación ( A.22) aplica la propiedad de que un escalado uniforme de los pesos no
varı́a la forma de la curva. Estas transformaciones de los pesos influirán en la parametrización.
Si realizamos la extensión de las expresiones de las lı́neas NURBS en dos direcciones, obtenemos
las superficies NURBS. Éstas son el producto tensorial de dos lı́neas.
Figura A-13: En esta figura se puede observar una superficie NURBS con su polı́gono de control.
m n
i j ωij Pij Ni (u)Nj (u)
s(u, v) = m n
i j ωij Ni (u)Nj (u)
La mayorı́a de las operaciones a realizar sobre estas superficies, incluida la evaluación, pueden
realizarse primero sobre un sentido, obtener como resultado una lı́nea y aplicar la operación
sobre el otro sentido. De esta manera reducimos el problema de operar sobre una superficie al
problema de operar sobre un conjunto de lı́neas.
✻
n
PLM
P10 ≡ P20 ≡
, . . . , ≡ PL0
P1M
Figura A-14: Cuando el lado de una superficie NURBS degenera a un punto, el cálculo de la
normal no puede realizarse mediante las derivadas.
El cálculo de la normal se realizará a partir del producto vectorial de las derivadas. Para obtener
la normal a la superficie en (u, v) se calculará de la siguiente manera:
δS(u,v)
δS(u,v)
= δu ∧
N δv
δS(u,v)
δS(u,v)
δu ∧ δv
En el caso de superficies con alguno de sus lados colapsados a un punto, la expresión anterior
darı́a normal 0 al evaluarla en el contorno colapsado. Por tanto, no serı́a válida. Para estas
situaciones, se puede usar la siguiente fórmula para evaluar la normal en el contorno:
(0, 0) = ∆u P11 ∧ ∆v P11
N (A.23)
∆u P11 ∧ ∆v P11
En la ecuación ( A.23), debe hacerse un control, caso por caso, de los puntos que quedan
colapsados y modificar ligeramente los puntos a tener en cuenta para el cálculo. En la Figura A-
14, puede observarse un caso de superficie degenerada.
SUPERFICIES NURBS 209
Dadas un conjunto cerrado de lı́neas en el espacio, queremos encontrar una superficie, cuyo
contorno sean las lı́neas dadas, y que interpole de manera suave a esas lı́neas. El proceso
consiste en reducir el conjunto de lı́neas a uno equivalente formado por cuatro lı́neas NURBS.
Estas las asociamos dos a dos mediante el criterio de lı́neas opuestas. Cada uno de estos grupos
debe tener el mismo grado y la misma lista de knots. Ello se consigue mediante técnicas de
elevación de grado y mediante inserción de knots (ecuación A.20 en la página 204).
Al acabar este proceso, de la cuadrı́cula de puntos de control de la superficie conocemos
todos los puntos del contorno y conocemos los grados y las listas de knots. Únicamente hay
que calcular los puntos interiores de la cuadrı́cula. Para ello se pueden usar varios algoritmos
interpolantes. Se presenta a continuación algunos de ellos.
Dado el contorno de una superficie, representado por x(u, v) con u, v ∈ [0, 1], la superficie Coon
bilineal se crea mediante la composición de las dos superficies regladas definidas tomando las
curvas opuestas dos a dos, y un término de orden superior para compatibilizarlas. Su definición
es la siguiente:
! x(0, v) ! 1−v
x(u, v) = 1−u u + x(u, 0) x(u, 1)
x(1, v) v
! x(0, 0) x(0, 1) 1−v
− 1−u u
x(1, 0) x(1, 1) v
Si consideramos el polı́gono de control de una superficie NURBS como una superficie Coon, y
definimos unos valores ui , vi para cada punto de control, podemos calcular los puntos de control
interiores mediante esta formulación.
El cálculo de los ui , vi debe realizarse con algún criterio parecido al de chord length (ver
sección A.5.5 en la página 197) porque un espaciamiento uniforme de los parámetros puede
producir malos resultados en superficies distorsionadas.
Las superficies bilineales tienen el problema de que las tangentes en el contorno se calculan
con información que esta alejada de él. Como consecuencia, dos superficies cuyas lı́neas son
continuas C 1 , tienen discontinuidad C 1 y G1 . En la Figura A-15, se observa la discontinuidad
entre ambas superficies.
Figura A-15: Las dos superficies se han creado a partir del contorno de lı́neas. Puede observarse
una pequeña discontinuidad G1 entre ambas.
Una superficie que se comporta mejor ante este efecto es la parcialmente bicúbica, que es una
modificación de la anterior que introduce los polinomios cúbicos de Hermite. El uso de estos
polinomios procede de la interpolación mediante una curva de Bézier cúbica, de dos puntos y
las dos derivadas en ellos. Su expresión es:
Donde los Bij son los polinomios de Bernstein definidos en A.3.1 en la página 186. La expresión
SUPERFICIES NURBS TRIMADAS 211
Las superficies NURBS trimadas 6 se definen mediante una superficie NURBS como base y una o
varias curvas de corte. Según el sentido de la curva, ésta será un contorno exterior o un agujero.
Tı́picamente, se obtienen a partir de la intersección de dos superficies NURBS normales. Las
lı́neas de intersección definirán a las lı́neas de corte.
En las Figuras A-16 y A-17 en la página siguiente, se observa que a partir de una intersección
de una superficie NURBS con otras superficies se puede obtener tanto la superficie externa a
las lı́neas de corte como la interna. En este último caso, nos quedarı́a la superficie original con
un agujero.
6
Una traducción correcta de este término serı́a superficie recortada. Se mantiene la nomenclatura original por
ser de uso corriente en la modelación geométrica.
212 Descripción matemática de las NURBS
Figura A-17: En este caso, el recorte provocado por la intersección crea un agujero en la
superficie NURBS original.
Índice de Materias
Quadtree, 96
Racionales
Curvas, 202
Render, 58
Reparametrizaciones, 42
Reposicionamiento de superficies, 52
Script, 145
Splines
Curvas, 189
Suavizado, malla, 115
Superficie
malla, 122
reposicionamiento, 52
Superficie Coon, 209
Superficie-malla, 59
Superficies
visualización, 58
tilde no elemento, 74
Tcl-Tk, 8
Tipo de problema, 140
Tolerancias, 111
tilde nos, 76
Unix
Sistemas operativos, 9
User interface, 7
VDA, 36
Visualización
superficies, 58
Widget, 9
216 ÍNDICE DE MATERIAS
Bibliografı́a
[BD97] Gustavo C. Buscaglia and Enzo A. Dari. Anisotropic mesh optimization and its
application in adaptivity. Int. j. numer. methods in eng., (40):4119–4136, 1997.
[BP91] J. Bonet and J. Peraire. An alternating digital tree (adt) algorithm for 3d geometric
search and itersection problems. Int. Journal for Num. Meth. in Eng., (31):1–17,
1991.
[Cod93] R. Codina. A finite element formulation for viscous incompressible flows. Technical
report, CIMNE, 1993.
[COG+ 94] J. Miquel Canet, E. Oñate, C. Garcı́a Garino, S. Botello, F. Flores, and J. Rojek.
Análisis de problemas de choque e impacto entre sólidos deformables por el método
de los elementos finitos. Technical report, CIMNE, 1994.
[Eng91] PDA Engineering. PATRAN Plus Users Manual. PATRAN division, Costa Mesa,
California, USA, 1991.
[Far93] Gerald Farin. Curves and surfaces for CADG. ACADEMIC PRESS, INC., third
edition, 1993.
[Fry94] Jas Frykestig. Advancing front mesh generation techniques with application to the
Finite Element method. PhD thesis, Chalmers University of Technology, Göteborg,
1994.
[FvDFH93] Foley, van Dam, Feiner, and Hughes. Computer Graphics. Principles and practice.
Addison-Wesley, second edition, 1993.
[Gar99] Julio Garcı́a. A finite element method for hydrodynamic analysis of naval structures.
PhD thesis, Universidad Politécnica de Cataluña, 1999.
[GB98] P.L. George and H. Borouchaki. Delaunay Triangulation and Meshing. HERMES,
first edition, 1998.
[HL93] Josef Hoschek and Dieter Lasser. Fundamentals of computer aided geometric design.
Addison-Wesley, 1993.
[J.89] Peiró J. A finite element procedure for the solution of the Euler equations on
unstructured meshes. PhD thesis, Civil Eng. Dpt., Univ. College of Swansea, U.K.,
1989.
[Kre95] Ralf Kreiner. Generation of unstructured Finite Element meshes. PhD thesis,
Universität Stuttgart, 1995.
[Lev99] Adi Levin. Interpolating nets of curves by smooth subdivision surfaces. Computer
Graphics Proceedings (SIGGRAPH), pages 57–64, 1999.
[Löh88] R. Löhner. Some useful data structures for the generation of unstructured grids.
Commun. appl. numer. methods, (4):123–135, 1988.
BIBLIOGRAFÍA 219
[LS88] P. Lancaster and K. Salkauskas. Curve and Surface Fitting. Academic press, first
edition, 1988.
[MH95] Peter Möller and Peter Hansbo. On advancing front mesh generation in three
dimensions. Int. Journal for Num. Meth. in Eng., (38):3551–3569, 1995.
[Oña95] Eugenio Oñate. Cálculo de estructuras por el método de los elementos finitos.
CIMNE, 1995.
[OOBC91] E. Oñate, S. Oller, S. Botello, and J. Miquel Canet. Métodos avanzados de cálculo
de estructuras de materiales compuestos. Technical report, CIMNE, 1991.
[PPLFZ88] J. Peraire, J. Peiró, K. Morgan L. Formaggia, and O.C. Zienkiewicz. Finite element
euler computations in three dimensions. Int. j. Numer. Methods Eng., (26):2135–
2159, 1988.
[PVMZ87] J. Peraire, M. Vahdati, K. Morgan, and O.C. Zienkiewicz. Adaptive remeshing for
compressible flow computations. J. Comp. Phys., (72):449–466, 1987.
[R+ 98] Ramon Ribó et al. GiD reference manual. CIMNE, 1998.
[RGO95] J. Rojek, G. Garcia Garino, and E. Oñate. Advanced finite element models for
analysis of industrial sheet forming processes. Technical report, CIMNE, 1995.
[RSSV99] A. Rassineux, J-M. Savignat, O. Stab, and P. Villon. Surface remeshing by lo-
cal hermite diffuse interpolation. Technical report, Universit, de Technologie de
CompiSgn, 1999.
[ZO93] F. Zarate and E. Oñate. Caltep: Programa para el cálculo transitorio de la ecuación
de poisson. Technical report, CIMNE, 1993.