Sie sind auf Seite 1von 236

Desarrollo de un sistema integrado para tratamiento de

geometrı́a, generación de malla y datos para el análisis por el


método de los elementos finitos

por

Ramon Ribó Rodrı́guez

Ingeniero de caminos, canales y puertos por la UPC

entregada en el Departament de resistència de materials i estructures a la enginyeria


como requerimiento parcial para el grado de

Doctor

en la

UNIVERSITAT POLITÈCNICA DE CATALUNYA

febrero 2000


c Universitat Politècnica de Catalunya 2000

Firma del autor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


Departament de resistència de materials i estructures a la enginyeria
febrero 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

Desarrollo de un sistema integrado para tratamiento de geometrı́a,


generación de malla y datos para el análisis por el método de los elementos
finitos
por
Ramon Ribó Rodrı́guez

entregada en el Departament de resistència de materials i estructures a la enginyeria


on febrero 2000, como requerimiento parcial para el
grado de
Doctor

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:

• Organización del sistema. Consiste en definir el tratamiento de todos los datos de un


análisis genérico de manera uniforme. También se dan criterios sobre el ordenamiento
interno de los datos.

• Modelación geométrica. Se presenta una serie de algoritmos que se han desarrollado para
tratar y modificar la geometrı́a del modelo.

• Generación de malla. Se describen diferentes técnicas y algoritmos para poder realizar la


generación de la malla.

• Adaptabilidad del sistema a diferentes análisis. Se describe como se ha diseñado y como


se realiza la adaptación del sistema a un código de análisis cualquiera.

La implementación del conjunto de criterios y algoritmos descritos a lo largo de esta tesis ha


permitido la creación de un sistema que da soporte al proceso de análisis mediante métodos
numéricos de modelos, tanto a nivel académico como industrial.

Supervisor de la tesis: Eugenio Oñate Ibáñez de Navarra


Ttulo: Catedrático de Universidad

Supervisor de la tesis: Gabriel Bugeda Castelltort


Ttulo: Profesor titular de Universidad
iv
Aquesta tesi va ser llegida el dia ................................................................................. a l’Escola
Tècnica Superior d’Enginyers de Camins, Canals i Ports de Barcelona, i va obtenir la qualificació
de .........................................................................................

El President El Secretari

El Vocal El Vocal

El Vocal
vi
vii

A Lara, por sus ánimos, paciencia y por


que ya es parte de mi trabajo y de mi vida.

A mis padres, por su apoyo incondicional.


viii
ix

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

2 Organización del sistema GiD 7


2.1 INTRODUCCIÓN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 LENGUAJE DE PROGRAMACIÓN Y LIBRERÍAS . . . . . . . . . . . . . . . . 8
2.3 CRITERIOS PARA LA CREACIÓN DE LA INTERFAZ DE USUARIO . . . . 9
2.4 DESCRIPCIÓN BÁSICA DEL SISTEMA Y DE SU CONFIGURACIÓN . . . . 12
2.5 AGRUPACIÓN Y ESTRUCTURA DE LOS DATOS . . . . . . . . . . . . . . . . 13
2.5.1 Malla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.5.2 Condiciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.5.3 Materiales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.5.4 Datos generales del problema . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.5.5 Datos generales de intervalo . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.6 SISTEMAS DE UNIDADES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.6.1 Problemática . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.6.2 Esquema escogido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.6.3 Control de unidades por el usuario . . . . . . . . . . . . . . . . . . . . . . 17
2.6.4 Unidades en el postproceso . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.7 APORTACIONES A LA ORGANIZACIÓN DE GiD . . . . . . . . . . . . . . . . 20
2.8 CONCLUSIONES A LA ORGANIZACIÓN DE GiD . . . . . . . . . . . . . . . . 21
xii ÍNDICE GENERAL

3 Tratamiento y modelización geométrica 23


3.1 DEFINICIONES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2 DESCRIPCIÓN Y COMPARACIÓN DE DIVERSOS MODELOS GEOMÉTRICOS 24
3.2.1 CAD tradicional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.2.2 CAD con geometrı́a booleana de sólidos . . . . . . . . . . . . . . . . . . . 25
3.2.3 Superficies como contenedoras de superficies . . . . . . . . . . . . . . . . . 26
3.2.4 Modelo jerárquico de entidades geométricas . . . . . . . . . . . . . . . . . 26
3.3 MODELO ESCOGIDO EN LA TESIS . . . . . . . . . . . . . . . . . . . . . . . . 28
3.4 ENTIDADES PUNTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.5 ENTIDADES LÍNEA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.6 ENTIDADES SUPERFICIE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.7 VOLÚMENES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.8 CONTACTOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.9 IMPORTACIÓN DE MODELOS GEOMÉTRICOS . . . . . . . . . . . . . . . . . 35
3.9.1 Importación y ficheros de intercambio . . . . . . . . . . . . . . . . . . . . 36
3.9.2 Filtros de corrección de la geometrı́a importada . . . . . . . . . . . . . . . 38
3.9.3 Colapsado de entidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.9.4 Corrección en la lista de knots . . . . . . . . . . . . . . . . . . . . . . . . 40
3.9.5 Reparametrizaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.9.6 Conversión a cúbica similar . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.9.7 Unión de lı́neas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.9.8 Subdivisión de lı́neas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.9.9 Reorientación del contorno de las superficies . . . . . . . . . . . . . . . . . 47
3.9.10 Colapso de ángulos pequeños . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.10 ALGORITMOS DE MODELACIÓN GEOMÉTRICA . . . . . . . . . . . . . . . 50
3.10.1 Cálculo del centro de una superficie . . . . . . . . . . . . . . . . . . . . . 50
3.10.2 Movimiento de puntos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.10.3 Reposicionamiento o mapping sobre una superficie . . . . . . . . . . . . . 52
3.10.4 Intersecciones de lı́neas y lı́neas-superficies . . . . . . . . . . . . . . . . . . 55
3.10.5 Intersección de superficies . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.10.6 Visualización de superficies . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.10.7 Las superficies-malla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.10.8 Creación de volúmenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
ÍNDICE GENERAL xiii

3.11 APORTACIONES EN LA MODELIZACIÓN GEOMÉTRICA . . . . . . . . . . 64


3.12 CONCLUSIONES A LA MODELACIÓN GEOMÉTRICA . . . . . . . . . . . . . 67

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

4.13 MÉTODOS DE GENERACIÓN DE MALLA TRIANGULAR EN 2D Y TETRAÉDRICA


EN 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
4.14 GENERACIÓN FRONTAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
4.14.1 Incremento del tamaño de los elementos . . . . . . . . . . . . . . . . . . . 107
4.14.2 Elección del punto para la creación del nuevo elemento . . . . . . . . . . . 110
4.14.3 Borrado de elementos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
4.14.4 Disminución de tolerancias . . . . . . . . . . . . . . . . . . . . . . . . . . 111
4.14.5 Ordenación de intentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
4.15 MÉTODO DE DELAUNAY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
4.15.1 Ventajas e inconvenientes del Método de Delaunay . . . . . . . . . . . . . 114
4.16 ALISADO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
4.16.1 Indicador de calidad Ic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
4.16.2 Proceso de mejora de la malla . . . . . . . . . . . . . . . . . . . . . . . . . 117
4.16.3 Algoritmos de mejora de la malla . . . . . . . . . . . . . . . . . . . . . . . 118
4.17 GENERACIÓN DE MALLA DE SUPERFICIE EN EL ESPACIO . . . . . . . . 122
4.17.1 Cálculo del punto óptimo . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
4.17.2 Intersecciones entre caras . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
4.17.3 Control de calidad de los elementos . . . . . . . . . . . . . . . . . . . . . . 124
4.17.4 Comparación de la generación en el plano versus en el espacio . . . . . . . 125
4.17.5 Tiempos relativos de computación . . . . . . . . . . . . . . . . . . . . . . 126
4.18 GENERACIÓN DE MALLA EN LAS SUPERFICIE-MALLA . . . . . . . . . . . 127
4.18.1 Búsqueda del elemento activo . . . . . . . . . . . . . . . . . . . . . . . . . 128
4.18.2 Cálculo de la nueva normal . . . . . . . . . . . . . . . . . . . . . . . . . . 131
4.18.3 Reposicionamiento del punto . . . . . . . . . . . . . . . . . . . . . . . . . 132
4.19 APORTACIONES EN LA GENERACIÓN DE MALLA . . . . . . . . . . . . . . 132
4.20 CONCLUSIONES A LA GENERACIÓN DE MALLA . . . . . . . . . . . . . . . 137

5 Adaptación a un tipo de análisis 139


5.1 INTRODUCCIÓN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
5.2 CONCEPTO DE TIPO DE PROBLEMA . . . . . . . . . . . . . . . . . . . . . . 140
5.3 ABSTRACCIÓN DE DATOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
5.4 APLICACIÓN A LOS DATOS DEL ANÁLISIS . . . . . . . . . . . . . . . . . . . 142
5.5 CONEXIÓN PREPROCESO-PROCESO . . . . . . . . . . . . . . . . . . . . . . 143
ÍNDICE GENERAL xv

5.6 LENGUAJE BAS DE DESCRIPCIÓN DEL FICHERO DE ENTRADA DEL


ANÁLISIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
5.7 EXTENSIONES MEDIANTE LENGUAJES DE SCRIPT . . . . . . . . . . . . . 145
5.8 APORTACIONES EN LA ADAPTACIÓN AL ANÁLISIS . . . . . . . . . . . . . 145
5.9 CONCLUSIONES A LA ADAPTACIÓN . . . . . . . . . . . . . . . . . . . . . . 146

6 Ejemplos de aplicación 147

7 Conclusiones y lı́neas futuras de investigación 175


7.1 PRINCIPALES APORTACIONES DE LA TESIS . . . . . . . . . . . . . . . . . 175
7.2 CONCLUSIONES GENERALES . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
7.3 LÍNEAS FUTURAS DE INVESTIGACIÓN . . . . . . . . . . . . . . . . . . . . . 178

A Descripción matemática de las NURBS 181


A.1 ESPACIO EUCLÍDEO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
A.2 DIFERENTES TIPOS DE LÍNEAS . . . . . . . . . . . . . . . . . . . . . . . . . 183
A.3 CURVAS DE BÉZIER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
A.3.1 Curvas de Bézier expresadas en términos de los polinomios de Bernstein . 186
A.3.2 Diversas propiedades de las curvas de Bézier . . . . . . . . . . . . . . . . 187
A.4 SPLINES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
A.5 B-SPLINES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
A.5.1 Construcción de la B-spline cuadrática (C1 ) . . . . . . . . . . . . . . . . . 193
A.5.2 Construcción de la B-spline cúbica (C2 ) . . . . . . . . . . . . . . . . . . . 194
A.5.3 Definición de las curvas B-spline . . . . . . . . . . . . . . . . . . . . . . . 194
A.5.4 Ejemplo de evaluación de una lı́nea B-spline cuadrática . . . . . . . . . . 196
A.5.5 Parametrizaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
A.5.6 La base B-spline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
A.5.7 Derivada de una curva B-spline . . . . . . . . . . . . . . . . . . . . . . . . 199
A.5.8 Efectos de la multiplicidad de knots y puntos sobre la continuidad de la
curva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
A.5.9 Representación gráfica de una B-spline . . . . . . . . . . . . . . . . . . . . 199
A.5.10 Interpolación mediante B-splines . . . . . . . . . . . . . . . . . . . . . . . 200
A.6 CURVAS RACIONALES. LAS CÓNICAS . . . . . . . . . . . . . . . . . . . . . . 202
A.7 LÍNEAS NURBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
xvi ÍNDICE GENERAL

A.7.1 Evaluación recursiva . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204


A.7.2 Evaluación mediante la base B-spline . . . . . . . . . . . . . . . . . . . . . 204
A.7.3 Derivada de una lı́nea NURBS . . . . . . . . . . . . . . . . . . . . . . . . 204
A.7.4 Definición de la circunferencia como lı́nea NURBS . . . . . . . . . . . . . 204
A.7.5 Influencia de los pesos en la curva . . . . . . . . . . . . . . . . . . . . . . 205
A.8 SUPERFICIES NURBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
A.8.1 Cálculo de la normal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
A.8.2 Interpolación a partir del contorno . . . . . . . . . . . . . . . . . . . . . . 209
A.9 SUPERFICIES NURBS TRIMADAS . . . . . . . . . . . . . . . . . . . . . . . . 211
Capı́tulo 1

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

usable industrialmente cuando se supere toda la problemática de la interacción con el usuario


ası́ como cuando una persona, con conocimientos técnicos adecuados, sea capaz de utilizar un
programa sin excesivas dificultades prácticas.

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

A partir de las motivaciones y criterios ya mencionados, el objetivo de esta tesis es la creación


de un sistema de preproceso con capacidad de tratamiento de modelos geométricos complejos,
que permita la generación de mallas que se adapten a todas las posibles tipologı́as de análisis
y con posibilidad de tratamiento de todos los datos asociados a dichos análisis.
El sistema debe ser capaz de crear un entorno de trabajo que permita a un usuario preparar
todos los datos que requiera un cálculo y minimizar el coste de tiempo que requiere esta
preparación. Asimismo, la curva de aprendizaje del sistema debe resultar en un tiempo mı́nimo
de iniciación y en una alta eficiencia de proceso al final de este perı́odo inicial.
Finalmente, se debe proporcionar una alta adaptabilidad entre el preproceso y el programa
de simulación numérica. Se considerará óptimo si este proceso de adaptación puede realizarse
4 Introducción

exteriormente a ambos programas y con un coste de tiempo que se mantenga dentro de lı́mites
razonables.

1.4 PRESENTACIÓN DE LOS CONTENIDOS DE LA TESIS

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

El Capı́tulo 4 trata el tema de la generación de malla. En su inicio, se dan algunas con-


sideraciones de tipo general sobre en que consiste dicha generación y en las particularidades y
casuı́sticas que contiene. Seguidamente se procede a la descripción de las técnicas usadas para
la generación. Durante todo el capı́tulo, se intenta hacer hincapié en los algoritmos que han
sido creados o mejorados en la presente tesis y que, en algunos casos se mezclan con algoritmos
ya existentes y extraı́dos de la bibliografı́a. Al final del capı́tulo se incluye un apartado en el
que se precisan las aportaciones de esta tesis a las técnicas y metodologı́as de generación de
malla.
El Capı́tulo 5 se refiere a la adaptación del sistema para un tipo de análisis. En él se
describe qué se considera por adaptación y como se ha tratado dentro del sistema implementado.
Asimismo, se crea el paralelo entre la abstracción de datos necesaria para un sistema genérico
de preproceso y su implementación práctica.
El Capı́tulo 6 describe un conjunto de ejemplos de aplicación. Su objetivo consiste en ir
introduciendo una serie de modelos, que crearon en su momento la necesidad de implementar
nuevos algoritmos que pudieran tratarlos correctamente. Al mismo tiempo, dan una idea de
que tipologı́as y en que nivel de dificultad se pueden resolver con los algoritmos desarrollados e
implementados en el sistema GiD, que es el resultado más notable de esta tesis.
El apéndice A versa sobre la descripción matemática de las NURBS. Este apéndice contiene
la descripción de las principales entidades que se consideran hoy en dı́a imprescindibles para un
sistema de modelado tridimensional. Al mismo tiempo, se incluyen algunos de los algoritmos
más ampliamente conocidos y necesarios para el tratamiento de dichas entidades geométricas.
La inclusión de este apéndice proviene del hecho de que muchas de las definiciones y algoritmos
contenidos en él son de necesario conocimiento para comprender correctamente el Capı́tulo 3 y
algunas partes del 4.
6 Introducción
Capı́tulo 2

Organización del sistema GiD

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.

Se va a describir la organización a nivel del código interno en cuanto al empleo de her-


ramientas y utilidades externas ası́ como a la utilización de librerı́as gráficas o de librerı́as de
otros tipos.

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 va a dividir el conjunto de datos necesarios para el análisis en una serie de subconjuntos


lógicos y funcionales que se han implementado en el sistema GiD.

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

2.2 LENGUAJE DE PROGRAMACIÓN Y LIBRERÍAS

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.

• Tcl-Tk: Librerı́a para el uso de scripts 2 y para la construcción de la interfaz de usuario.


Sirve para crear todos los menús, botones y ventanas que interaccionan con el usuario.
La posibilidad de ejecución de scripts permite que una tercera persona pueda añadir
funcionalidad al programa para realizar tareas concretas o para crear nuevas ventanas.

• Gettext: Librerı́a de soporte para internacionalización. Facilita la traducción del pro-


grama a otros idiomas.

• 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

Figura 2-1: Interfaz de usuario centrada en una ventana única.

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.

2.3 CRITERIOS PARA LA CREACIÓN DE LA INTERFAZ


DE USUARIO

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

Figura 2-2: Interfaz de usuario con ventanas múltiples.

su posterior análisis en el mı́nimo tiempo y con la máxima comodidad posible3 , la comunicación


persona-máquina cobra especial importancia.
A lo largo de los años se han ido definiendo una serie de estándares que marcan unas
reglas sobre como deben ser los menús, ventanas, cuadros de diálogo y todos los elementos que
interaccionan con el usuario. Estos estándares están fuertemente relacionados con el sistema
operativo que los utiliza y no son intercambiables con otros sistemas operativos. Ejemplos de
ello son:

• Sistema operativo Macintosh: El precursor en ordenadores personales. La apariencia de


todos los programas que funcionan en él es muy similar y bien definida.

• Sistema operativo MS-Windows: A partir de los conceptos definidos por el anterior ha


creado sus librerı́as MFC4 y unas reglas también muy definidas de como deben ser todos
estos elementos.

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

• X-Windows y Motif: Proporcionan también un estándar de creación de widgets 5 . En este


caso las reglas de creación son un poco más libres.

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.

Comentario: Según la capacidad del ordenador, tamaño de la pantalla, tipo de modelo


de análisis o preferencias del usuario, puede ser más interesante tener una única ventana
de trabajo con unos pocos menús y botones desde donde se pueda acceder a toda la
funcionalidad del programa. En otros casos, el acceso a los comandos puede ser más
intuitivo o cómodo mediante el uso de muchas ventanas. La preferencia por un esquema
u otro debe dejarse al usuario.

2. Las ventanas, en general, no deben tener tamaño fijo y deben ser, hasta cierto punto,
adaptables a todos los tamaños.

Comentario: Fijar el tamaño de las ventanas secundarias de entrada de datos asegura


que estas tengan siempre una forma correcta. El grave inconveniente es que restringe la
posibilidad de que puedan adaptarse a la disposición preferida por el usuario. Se acepta
por tanto que pueda haber una cierta incorrección en la presentación a cambio de la mayor
libertad de posicionamiento.

3. El modo de uso debe ser bastante similar a los estándares antes consignados.

Comentario: Puede sacarse un denominador común de las diversas formas de repre-


sentación. Aprovechar estas formas de trabajo ya conocidas por el usuario reduce el
tiempo de aprendizaje.

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.

5. Ser agradables de uso (estética y funcionalmente).

Comentario: Un usuario se pasa muchas horas utilizando un mismo programa. Es básico


que su funcionamiento y la disposición de sus partes le resulten adecuados.

6. Minimizar la curva de aprendizaje.

Comentario: Lo que resulta intuitivo para el usuario acostumbra a ser producto de un


gran esfuerzo en la programación y diseño de un sistema.

7. Dar la máxima potencia y velocidad de uso a los usuarios expertos.

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.

2.4 DESCRIPCIÓN BÁSICA DEL SISTEMA Y DE SU CON-


FIGURACIÓN

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.

2.5 AGRUPACIÓN Y ESTRUCTURA DE LOS DATOS

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:

• Malla que defina la geometrı́a del modelo.

• Condiciones de contorno y, en general, toda la información asociada a los nodos o elemen-


tos de la malla.

• Materiales.

• Datos generales del problema.

• Datos generales de intervalo.

Estos subgrupos engloban toda la información necesaria y se van a describir en apartados


posteriores.

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.

2.5.4 Datos generales del problema

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.

2.5.5 Datos generales de intervalo

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.

Definición de intervalo: Se entiende por intervalo un subconjunto de información que per-


mite encapsular un conjunto de datos en grupos. Puede haber un número arbitrario de
ellos en un modelo. Al iniciar un nuevo modelo habrá siempre un intervalo definido y
el usuario puede crear más. Dentro de cada uno de estos intervalos, cambiará la infor-
mación de condiciones y los datos generales de intervalo. El resto de la información es
independiente de él.

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 SISTEMAS DE UNIDADES

Tradicionalmente, la mayorı́a de los programas de análisis por ordenador no han tenido en


cuenta las unidades de las diferentes magnitudes y propiedades que se introducen para el cálculo.
El único requerimiento ha sido, y sigue siendo en la mayorı́a de los casos, que todos estos datos
estén introducidos en unas unidades compatibles entre ellas, sin necesidad de especificar cuales
son en cada caso. Esto traslada la problemática y el control de errores sobre estas unidades
hacia el usuario. Aunque es evidente que el usuario debe controlar perfectamente la coherencia
de todos los datos, se obvia la necesidad de poner unos controles que faciliten la detección de
errores.
Por otra parte, se puede comprobar fácilmente que el hecho de que no se realice control de
unidades en el programa de análisis, es fuente de abundantes errores para el usuario. Incluso
a nivel de visualización de resultados, la identificación por parte del programa de cada valor
con su unidad correspondiente, facilita la comprensión de esos resultados y su interpretación
posterior.
Se deduce de todo ello que es necesario que el pre y postprocesador de un programa de
cálculo se ocupe de toda esta problemática y haga un control adecuado de errores y de la
coherencia sobre los datos que introduce el usuario.

2.6.1 Problemática

La carencia de unidades en el programa de cálculo provoca el primer problema, ya que éste no


tiene manera de indicar en el fichero de postproceso las unidades en que está expresado cada
resultado. Deben buscarse medios adicionales de comunicación entre pre y postproceso para
solventar esta dificultad. Hay que tener en cuenta la casuı́stica de si el programa se ejecuta
desde dentro del entorno (máximo control), o se escribe el fichero de datos, y se ejecuta el
16 Organización del sistema GiD

cálculo desde el exterior (mı́nimo control).


Otro problema es que para obtener la máxima funcionalidad en la elección de unidades
distintas, es necesario que el preprocesador mantenga una tabla interna de unidades para difer-
entes magnitudes. Como la pretensión del programa es que se pueda adaptar a cualquier tipo
de análisis, resulta evidente que puede haber algunas unidades o incluso magnitudes, que no
estén contempladas en su interior. Por tanto, debe permitirse al tipo de problema, definir sus
propias unidades y magnitudes que se sumarı́an a esta tabla general.
Finalmente, debe evitarse la confusión al usuario entre las unidades de trabajo, que pueden
ser no compatibles entre ellas (siempre que esté claramente especificado), con las que se utilizan
en el análisis, que sı́ deben serlo.

2.6.2 Esquema escogido

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.

Magnitudes Reference unit Basic unit other units


MAGNITUDE: length m m 100cm ...
MAGNITUDE: mass kg kg 103 gr ...
kg·m
MAGNITUDE: strength s2
1N ≈ 10−1 kp ...
kg·m kp
MAGNITUDE: pressure m2 s2
1Pa ≈ 10−5 cm 2 ...
5
MAGNITUDE: temperature d Celsius d Celsius 9 (d Farenheit − 32) ...
...

Tabla 2.1: Introducción de unidades y magnitudes fı́sicas en el programa

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.

2.6.3 Control de unidades por el usuario

Ú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:

1. En el primero de ellos se declararı́a la unidad de longitud en que está expresado el modelo


geométrico. Esta unidad es básica porque es la especificación de como es el modelo, que
en ningún caso va a escalarse.

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.

La diferencia entre el primer y segundo grupo es grande porque en la especificación de la


longitud del primer grupo, el usuario declara que la geometrı́a del modelo está definida en esa
unidad. Esta es una información que si se cambia a otra unidad que no sea la real, el resultado
final será incorrecto porque el programa no puede comprobar este dato.
En cambio, las unidades del segundo grupo se utilizan solamente a efectos de edición y
visualización. Como GiD conoce en que unidades están expresadas las propiedades originales,
podrá escalarlas adecuadamente para que en GiD se visualicen en el sistema elegido. Incluso si
el usuario cambia una propiedad en un momento dado y la introduce en las unidades activas
en ese momento, si más tarde se cambian las unidades de visualización, la unidad se escalará
correctamente de forma automática. Para evitar confusiones, es básico que toda propiedad
tenga indicado visualmente en qué unidades está expresada y que también se indique muy
claramente la unidad de la geometrı́a del modelo.
La razón de introducir está complejidad adicional de que la unidad de longitud del modelo
pueda ser diferente de la de visualización de propiedades radica en el hecho siguiente: el modelo
normalmente está en unas unidades de trabajo no modificables, bien porque procede del exterior
(importación de CAD o de otro modelo), o bien porque se trabaja de manera más apropiada
con unas ciertas unidades. Por otra parte, las propiedades de los materiales se conocen en un
sistema de unidades determinado y cambiarlas a otras no habituales puede ser una fuente de
errores. Dos ejemplos tı́picos de ello serı́an:

• En algunas ramas de la ingenierı́a de procesos industriales, los modelos se trabajan


tı́picamente en milı́metros y el sistema de unidades para los materiales acostumbra a
ser el Sistema Internacional, que tiene como unidad básica de longitud el metro. Mod-
elar la geometrı́a en metros serı́a muy poco práctico y fuera de costumbre. Por el otro
lado, introducir los materiales con unas unidades que incluyeran al milı́metro serı́a, como
mı́nimo, poco ortodoxo además de proclive a errores.
SISTEMAS DE UNIDADES 19

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.

2.6.4 Unidades en el postproceso

El hecho de que la mayorı́a de programas de análisis no incluyan el concepto de unidades en el


conjunto de sus datos11 , significa que éstas no podrán venir dadas al postproceso desde el módulo
de análisis mismo. El programa de análisis normalmente no conoce en que unidades están
expresados los datos de entrada al cálculo. Ası́, le será imposible transmitirlas al posproceso.
Será necesario definir algún sistema para hacer esta transmisión de unidades desde el pre hacia
el postproceso. El origen de la problemática viene determinado por varios factores:

• 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

El método propuesto para solventar esta problemática es el siguiente: cuando se define el


tipo de problema, se deben explicitar las magnitudes fı́sicas para cada uno de los resultados. La
información podrı́a introducirse en el mismo fichero donde se han definido las unidades del tipo
de problema en el preproceso (ver página 16). La información se describirı́a según la Tabla 2.2.

Resultados Magnitudes
RESULT: desplazamientos length
RESULT: tensiones nodales pressure
...

Tabla 2.2: Magnitudes de unidades para los resultados en postproceso

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.

2.7 APORTACIONES A LA ORGANIZACIÓN DE GiD

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 subdividido el conjunto de información que se requiere para una análisis genérico en


varios subgrupos lógicos y funcionales que más tarde, en el Capı́tulo 5, permitirán introducir el
concepto de adaptación.

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

2.8 CONCLUSIONES A LA ORGANIZACIÓN DE GiD

El diseño de un sistema que interactúe con el usuario y permita realizarle un conjunto de


operaciones complejas, puede considerarse una tarea difı́cil. En concreto, ha sido necesario
definir un conjunto de criterios que rijan el comportamiento general del sistema y que lo acerquen
a ese óptimo de facilidad y eficiencia de uso.
Asimismo, la subdivisión de la información interna en subgrupos y la forma de uso de las
unidades permite la implementación práctica de un sistema que se pueda adaptar a cualquier
tipo de análisis y posibilita la introducción del concepto de adaptación en capı́tulos posteriores.
22 Organización del sistema GiD
Capı́tulo 3

Tratamiento y modelización
geométrica

En este capı́tulo se describirán las estructuras de tratamiento y almacenamiento de la infor-


mación geométrica ası́ como su visualización, creación y manipulación por parte del usuario.
También se describirán algunos de los algoritmos usados para la manipulación de las entidades
geométricas.
Debe entenderse que parte de la funcionalidad de las técnicas y algoritmos que van a ser
descritos, está compartida con cualquier programa genérico que trate con geometrı́as, como
puede ser un sistema de CAD o CAM. En el otro sentido, hay un conjunto amplio de algoritmos
que están especializados en preparar a las entidades geométricas para su mallado posterior.
Normalmente, se usa el concepto CAE, para referirse al uso de programas de tratamiento
geométrico para realizar análisis posteriores por ordenador.

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.

Geometrı́a booleana de sólidos: Tratamiento geométrico basado en sólidos,


24 Tratamiento y modelización geométrica

o sea un conjunto de entidades geométricas que definen un volumen en el espacio.


Tı́picamente se incluye en esta geometrı́a una serie de operaciones que afectan a uno
o varios de estos sólidos como: uniones, intersecciones, extrusiones, etc.

Malla: Conjunto de elementos geométricos simples como triángulos o tetraedros,


unidos entre ellos de manera que comparten sus nodos en el caso de las mallas
conformes y que son independientes en el caso de las no conformes, que sirven para
describir de manera sencilla la geometrı́a de un continuo. Las mallas se usan para
describir el modelo en la mayor parte de los métodos numéricos de análisis por
ordenador.

3.2 DESCRIPCIÓN Y COMPARACIÓN DE DIVERSOS MOD-


ELOS GEOMÉTRICOS

Para describir la jerarquı́a de entidades geométricas y como están tratadas y vinculadas, es


conveniente hacer una comparación con los sistemas que se usan habitualmente en programas
existentes. Uno de los factores que se tendrá más en cuenta en la comparación será la generación
posterior de la malla, que es el objetivo principal del tratamiento de la geometrı́a en nuestro
caso.

3.2.1 CAD tradicional

En un sistema de CAD tradicional, cada entidad es independiente de las entidades contiguas.


Esto significa que dos lı́neas unidas por uno de sus extremos, en realidad sólo tienen iguales las
coordenadas de posición de esos puntos extremos. No hay ningún tipo de vinculación topológica
entre ellas. Por tanto se podrı́an describir como entidades con información geométrica pero no
topológica1 .
Para poder generar una malla sobre las entidades geométricas, este modelo presenta serios
inconvenientes. La malla debe tener relaciones topológicas claras entre un elemento y sus
vecinos. En función de si comparten o no comparten los mismos nodos dos elementos vecinos,
se estarán modelando dos comportamientos distintos. Ello implica que en el momento de generar
la malla, debe realizarse algún tipo de operación de relación de entidades entre ellas. Llevar a

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

Superficie 1 Superficie 2 Superficie 1 Superficie 2

✻ ✻

Contorno entre ambas su- Contorno entre ambas super-


perficies único ficies duplicado

Figura 3-1: Si no hay información topológica de asociación de entidades, no se puede distinguir


entre estas dos configuraciones.

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.

3.2.2 CAD con geometrı́a booleana de sólidos

En otros sistemas de CAD el tratamiento de la geometrı́a se hace mediante la geometrı́a booleana


de sólidos. En este caso sı́ hay información topológica que relaciona todas las entidades ge-
ométricas que conforman un sólido o volumen. Esta información es imprescindible para poder
realizar las operaciones de sólido sobre todo el conjunto de entidades. En concreto, se ten-
drá información sobre todas las superficies que conforman un sólido y sobre las relaciones de
vecindad entre ellas.
La información de sólido sı́ que puede ser interesante para una generación de malla posterior.
En particular, si los modelos a tratar son únicamente volúmenes, se tendrı́a toda la información
topológica necesaria. El problema aparece cuando en el modelo existen también superficies o
lı́neas aisladas que podrı́an ser usadas para simular elementos de lámina o de barra. También
ocurre que en modelos de análisis numérico puede ser interesante definir elementos especiales
como elementos de junta, de contacto entre sólidos, etc. En estos casos es necesario extender
26 Tratamiento y modelización geométrica

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.

la información topológica de solidos al conjunto de todas las entidades.

3.2.3 Superficies como contenedoras de superficies

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.

3.2.4 Modelo jerárquico de entidades geométricas

En este modelo, se define una jerarquı́a de entidades donde hay cuatro diferentes niveles:

• Primer nivel: puntos.


DESCRIPCIÓN Y COMPARACIÓN DE DIVERSOS MODELOS
GEOMÉTRICOS 27
• Segundo nivel: lı́neas.

• Tercer nivel: superficies.

• Cuarto nivel: volúmenes.

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.

• Para el caso de volúmenes, se opera de manera similar a la de las superficies.


28 Tratamiento y modelización geométrica

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.

3.3 MODELO ESCOGIDO EN LA TESIS

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


Figura 3-4: Jerarquı́a de entidades para un volumen.

dimensión interna que son: puntos, lı́neas, superficies y volúmenes.

3.4 ENTIDADES PUNTO

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.

3.5 ENTIDADES LÍNEA

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

Punto en la geometrı́a El punto será un nodo de la malla

❄ ❄

Figura 3-5: Un punto en la geometrı́a fuerza un nodo en la malla.

y que se se incorporan en este trabajo son:

• 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.

• Polilı́neas Se entiende como polilı́nea a un conjunto ordenado de varias lı́neas simples. Su


mayor ventaja reside en que simplifica el tratamiento de un conjunto grande de pequeñas
lı́neas una detrás de otra a la hora de seleccionarlas o aplicarles cualquier operación.

• 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.

Ejemplos de estas lı́neas pueden verse en la Figura 3-6.


Las lı́neas en un programa tridimensional pueden entenderse de varias maneras. En concreto
su uso puede ser:

• La entidad definidora de elementos de barra.

• El contorno y medio de unión o no unión de las superficies.

• La entidad donde se asignan condiciones de contorno que más tarde se transferirán a sus
elementos o nodos.

• Zona de asignación de tamaños de malla para realizar concentraciones de elementos.


Puntos de Tramo❃
α control recto

❖ Tramo
NURBS s
Polı́gono de control

Tramo
recto z

Lı́nea recta Arco Lı́nea NURBS Polilı́nea

Figura 3-6: Diferentes tipos de lı́neas implementadas.

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

3.6 ENTIDADES SUPERFICIE

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 ✌

Sup. NURBS recortada

Figura 3-7: Diversos tipos de superficies implementadas.

En cuanto a su descripción matemática, podemos diferenciar los siguientes tipos de super-


ficies implementados en la tesis:

• 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.

• Superficie Coon es un interpolante de las lı́neas de contorno. Por tanto, la única


información geométrica viene dada por esas lı́neas. Esta propiedad simplifica algunas
operaciones como las distorsiones de geometrı́a ya que sólo es necesario realizarlas sobre
VOLÚMENES 33

el contorno. Su mayor inconveniente reside en que no se puede modelizar formas complejas


con ellas.

• Superficie NURBS De la misma manera que sus homólogas en lı́neas, es la entidad


más potente para realizar modelación geométrica y por tanto, se han convertido en el
estándar de todo tipo de aplicaciones tridimensionales. Permiten modelizar cónicas ası́
como superficies polinómicas a trozos. Otra de sus propiedades reside en que es posible
modificar su forma actuando sobre su polı́gono de control. Con ello se puede realizar una
modificación interactiva de forma en la fase de diseño. Una descripción detallada de este
tipo de superficies puede encontrarse en el apéndice A.

• Superficie NURBS recortada3 Es una extensión de la anterior en la que se permite


que las lı́neas de contorno no se correspondan con el contorno natural de la NURBS.
El único requerimiento es que pertenezcan al interior de la superficie. Tı́picamente se
obtienen a partir de intersecciones de superficies simples.

• Superficie-malla es un tipo de superficie cuya información geométrica viene dada por


una malla de triángulos o cuadriláteros. Este tipo de entidades se describirá en el Aparta-
do 3.10.7.

Ejemplos de estas superficies pueden verse en la Figura 3-7 en la página anterior.

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

Se define volumen como el espacio comprendido en el interior de un conjunto cerrado de superfi-


cies que definen su contorno. Por extensión, el volumen puede tener agujeros que son conjuntos
cerrados de superficies que definen un espacio vacı́o en su interior.

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

Superficie de contacto de elementos degenerados

Figura 3-9: Ejemplo de un contacto entre volúmenes

la inclusión de una entidad considerada como de superficie, para problemas 2D y como de


volumen, para problemas 3D, que permite forzar esta coincidencia de nodos y la creación de
los elementos descritos.
Entre la multitud de casos donde puede ser interesante usar contactos se pueden citar:

• Contactos entre dos piezas mecánicas para evitar que una penetre en el interior de la otra.

• Modelización de fenómenos de rozamiento.

• Modelización de juntas en mecánica del suelo.

• Transmisión térmica entre sólidos o entre un sólido y el exterior.

• Simetrı́a de rotación en análisis de fluidos.

La representación gráfica de un contacto puede verse en la Figura 3-9.

3.9 IMPORTACIÓN DE MODELOS GEOMÉTRICOS

Una capacidad absolutamente imprescindible en cualquier programa de modelado sólido o de


generación de malla, es la de poder intercambiar modelos entre diferentes programas. Esta
36 Tratamiento y modelización geométrica

necesidad aparece en los programas de modelado geométrico para permitir el intercambio de


información entre personas que no usen el mismo programa. En el caso de un preprocesador
para análisis numérico, esta necesidad se hace aún más imprescindible debido al hecho de que,
tı́picamente, el modelo que se quiere analizar ya ha sido creado para otras utilidades como el
diseño, la mecanización o la definición de dimensiones.
A la dificultad inherente a todo tipo de importación geométrica se suma, por tanto, la
dificultad añadida de que el modelo en muchos casos no se ha diseñado pensando en el análisis.
Ello implica que la geometrı́a puede ser no apta, a priori, para realizar una generación de malla
sobre ella.
Otras dificultades provienen del hecho de que las entidades geométricas que se definen en el
CAD no han sido pensadas para generar malla sobre ellas. Además, la escritura, transformación
y lectura es un proceso que introduce pequeños4 errores en la información geométrica que es
necesario corregir.
Consecuencia de todo esto es que resulta conveniente dividir el proceso de importación en
dos fases diferenciadas:

• La importación propiamente dicha. Consiste en la transformación de las entidades del


fichero de intercambio al formato de la base interna de datos.

• La corrección y adaptación de la geometrı́a para convertirla en apta para la generación


de malla sobre ella.

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.

3.9.1 Importación y ficheros de intercambio

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

Figura 3-10: Diagrama de flujo del proceso de importación de modelos geométricos.

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.

1. Formato DXF Este formato se creó y se usa mayoritariamente para el intercambio de


geometrı́as bidimensionales. Soporta la definición de entidades tridimensionales pero de
una manera un tanto precaria. En concreto, no soporta las superficies NURBS.

2. Formato IGES Este formato es inherentemente tridimensional y se puede considerar


como el estándar para todos los programas que trabajan con geometrı́as complejas en
el espacio. Soporta gran cantidad de entidades diferentes, lo cual es, en algunos casos,
un inconveniente por la gran complejidad que entraña. Soporta las lı́neas y superficies
NURBS.

3. Formato VDA Es un formato tridimensional simplificado en el cual todas las superficies


tienen que convertirse a unas entidades básicas que tienen forma analı́tica. Su mayor
ventaja es la simplicidad, lo cual evita muchos errores en el traspaso. Su inconveniente
es que, al pasar de un sistema a otro, ya no se tiene exactamente la misma entidad que
en el original. No soporta las superficies NURBS.
38 Tratamiento y modelización geométrica

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.

3.9.2 Filtros de corrección de la geometrı́a importada

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.

En los siguientes apartados se describirán una serie de filtros, o algoritmos de corrección


y mejora, que se aplican en cadena a un modelo geométrico proveniente de un fichero de
intercambio.

3.9.3 Colapsado de entidades

Los formatos de intercambio mencionados incluyen la descripción matemática de las entidades,


pero no describen la vinculación topológica que hay entre ellas. Además, es habitual que haya
discrepancias entre valores que deberı́an ser equivalentes para una correcta conexión. Para
solventar este problema es necesario definir una tolerancia que, para distancias menores que
ella, se considere que dos entidades deban convertirse en una. Esta tolerancia pueda ser dada
por el usuario o puede calcularse automáticamente como un determinado porcentaje del tamaño
total del modelo.

Dada una tolerancia , el criterio de colapso según entidades será el siguiente:


IMPORTACIÓN DE MODELOS GEOMÉTRICOS 39

Tolerancia

Colapsado

Figura 3-11: El proceso de colapsado reduce las cuatro lı́neas iniciales a tres.

• Dos puntos se convertirán en uno si se cumple que:

P1 − P2  < 

• 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.

• Dos superficies se colapsarán si comparten las mismas lı́neas de contorno y cumplen un


criterio de distancia máxima similar al del caso anterior.

• Dos volúmenes serán considerados equivalentes si comparten las mismas superficies de


40 Tratamiento y modelización geométrica

contorno.

El cálculo de la distancia máxima entre lı́neas o entre superficies se realiza de manera


aproximada según el criterio siguiente: se escoge un número determinado de puntos Pi en el
interior de la lı́nea o superficie en función de sus caracterı́sticas geométricas5 . Se calcula la
distancia punto-recta o punto-superficie di para cada uno de ellos. Entonces se aproxima dmax
como dmax = max(di ).

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.

El colapso también es útil para hacer desaparecer detalles excesivamente pequeños de la


geometrı́a. Si algunas lı́neas o superficies son menores que la tolerancia, éstas desaparecen y se
unen el resto de entidades que hay alrededor. A esta operación se le llama comúnmente feature
reduction o eliminación de detalles. A efectos prácticos, muchos detalles que son imprescindibles
para el diseño, pueden ser obviables para el análisis. Esta capacidad puede disminuir en gran
manera el número de elementos de la malla posterior. En la Figura 3-12, se muestra un ejemplo
gráfico de tal disminución de la malla.

3.9.4 Corrección en la lista de knots 7

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

Malla amplia- 116 elementos 22 elementos


da

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:

k0 , . . . , ki , ki+1 , . . . , ki+n+p , . . . , kL+n con: ki = ki+1 = · · · = ki+n+p (3.1)

P1 , . . . , PL (3.2)

ω1 , . . . , ωL (3.3)

la lista (3.1) quedará reducida a:

k0 , . . . , ki , ki+1 , . . . , ki+n , ki+n+p+1 , . . . , kL+n (3.4)


42 Tratamiento y modelización geométrica

y la lista de puntos de control (3.2) y pesos (3.3) a:

P1 , . . . , Pi+1 , Pi+p+2 , . . . , PL (3.5)

ω1 , . . . , ωi+1 , ωi+p+2 , . . . , ωL (3.6)

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

Figura 3-13: Comparación entre derivadas de la curva antes y después de la reparametrización.

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.

La primera técnica de corrección consiste en descomponer la curva analizada en la curva


resultante de la suma del conjunto de curvas de Bézier equivalentes. Para ello se realiza una
inserción múltiple de knots hasta que todos ellos tienen multiplicidad igual al orden. El proceso
de inserción de knots se describe en el Apartado A.5.3.

La curva obtenida es equivalente a la anterior tanto en su forma geométrica como en su


parametrización. Dada una curva de grado n y L puntos con los siguientes valores:

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

k , . . . , k , . . . , ki , . . . , ki , . . . , kL+n , . . . , kL+n (3.9)


 0  0      
n+1 n+1 n+1

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.

Si en la nueva lista de puntos, se van escogiendo de n + 1 en n + 1, se obtienen sucesivas


curvas de Bézier del mismo grado y que serán continuas en los puntos de unión entre curvas.
Estas nuevas curvas no dependen de la lista de knots, por tanto, su forma no variará al trasladar
cada uno de los knots. Por tanto, podemos recalcular los incrementos entre grupos de knots
tal que cumplan alguna separación más favorable. Una posible modificación, basada en la
44 Tratamiento y modelización geométrica

parametrización chord length, consiste en que, en la nueva lista:

k0 , . . . , kn , . . . , ki , . . . , ki+n , . . . , kL , . . . , kL +n (3.10)

k0 = · · · = kn ki = · · · = ki+n kL = · · · = kL +n (3.11)

se calcula el incremento como:

lc
ki+n+1 − ki+n = (3.12)
ltot

Donde lc en (3.12) es la longitud de la curva de Bézier correspondiente y ltot es la longitud total.

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.

3.9.6 Conversión a cúbica similar

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.

El proceso consiste en calcular un conjunto de puntos Pi pertenecientes al interior de la


curva y que definan a ésta de manera suficientemente precisa. El criterio para decidir el número
de puntos LI se obtiene de correlacionar el número de puntos de control L con la tolerancia
aceptable. A partir de estos puntos se podrá calcular una nueva curva cúbica interpolante según
las técnicas descritas en el Apartado A.5.10. En la Figura 3-14, se muestra un ejemplo de la
conversión. En este caso, la discrepancia entre ambas lı́neas es alta debido a que hay un punto
con continuidad C 0 .
IMPORTACIÓN DE MODELOS GEOMÉTRICOS 45

3,4
1

knots: 0 0 0 0.1 0.1 1 1 1


2

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.

3.9.7 Unión de lı́neas

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

✣ ✲

Segmento innecesario Unión de lı́neas


No se puede
realizar la
unión
Puede realizarse la unión


No puede realizarse la unión

Figura 3-15: Diversos criterios para aceptar o no una unión de lı́neas.

Ejemplos de estas situaciones se muestran gráficamente en la Figura 3-15.

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:

kA,0 , . . . , kA,LA +n curva A (3.13)

kB,0 , . . . , kB,LB +n curva B (3.14)

entonces la nueva lista será:

αkA,0 , . . . , αkA,LA +n , αkA,LA +n + βkB,0 , . . . , αkA,LA +n + βkB,LB +n (3.15)


lA lB
α= β= (3.16)
lA + lB lA + lB

donde lA y lB en ( 3.16) son las longitudes respectivas de las lı́neas.


IMPORTACIÓN DE MODELOS GEOMÉTRICOS 47

3.9.8 Subdivisión de lı́neas

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.

3.9.9 Reorientación del contorno de las superficies

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

apunta hacia el interior de la superficie.


En algunos casos, la información proveniente de CAD no cumple esta norma. Es necesario
realizar una comprobación y cambiar el sentido cuando sea necesario.

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.

El problema aparece por el hecho de que no es fácil distinguir cual es el interior de la


superficie. El algoritmo implementado en la tesis se aprovecha del hecho de que en las superficies
no trimadas las lı́neas tiene que pertenecer forzosamente al contorno de la NURBS. En el caso
de las trimadas, es necesario buscar alguna de las lı́neas que esté sobre él.

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

 v) es la superficie paramétrica. Si la lı́nea está contenida en u = 0 ó u = 1 se


Donde S(u,
emplearı́an expresiones similares a las de ( 3.17).

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

al contorno de lı́neas. Esta última se aproxima como:


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

3.9.10 Colapso de ángulos pequeños

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 β¿α

Figura 3-17: Colapso de un ángulo excesivamente pequeño. Se aceptará el colapso si L es mayor


que un valor mı́nimo.

El ángulo de colapso se calculará en función de la tolerancia dada . En general, el criterio


resultante, tal como se ve en la Figura 3-17, se basará en que la linea individual resultante
50 Tratamiento y modelización geométrica

tenga un tamaño acorde con el resto de lı́neas de las superficies contiguas.

3.10 ALGORITMOS DE MODELACIÓN GEOMÉTRICA

En los siguiente apartados se van a describir un conjunto de algoritmos desarrollados en la tesis


que tratan esencialmente de la manipulación de la geometrı́a para obtener diversos fines. Entre
ellos:

• Proporcionar al usuario unas herramientas de creación y manipulación geométrica que le


permitan crear sus modelos y adaptarlos a la generación de malla posterior.

• Algunas de estas técnicas se utilizan indirectamente en la generación de malla, como por


ejemplo el reposicionamiento de puntos sobre la superficie.

• Soporte a las técnicas de visualización de la geometrı́a.

A efectos de lectura, cada uno de los algoritmos puede considerarse como relativamente inde-
pendiente de los otros.

3.10.1 Cálculo del centro de una superficie

Para una superficie NURBS no trimada, el centro se calcula trivialmente como:

 = 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


Centro de las lı́neas


Centro de la NURBS

Figura 3-18: Diferencias entre los diferentes centros de las entidades.

3.10.2 Movimiento de puntos

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



Las lı́neas y superficies se deforman

Radio de la esfera

Figura 3-19: El movimiento de un punto provoca distorsiones en las entidades vecinas.

3.10.3 Reposicionamiento o mapping sobre una superficie

Este algoritmo es uno de los fundamentales en la modelación geométrica y es también esencial


para la generación de malla. Tal como se ha ido viendo en los apartados anteriores, gran parte
de los procedimientos acaban necesitando de un reposicionamiento de puntos sobre la superficie.
En realidad, con el mismo algoritmo se resuelven dos problemas diferentes:

1. Dado un punto perteneciente a la superficie, encontrar los parámetros u, v que lo definen.

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

Ambos objetivos se reducen a un problema de minimización de distancias que conduce a la


resolución de un sistema no lineal.
El primer caso nos da dos facilidades adicionales. Una de ellas es que se dispone del punto
que es la solución a nuestro problema y por tanto es posible realizar comprobaciones de calidad
ALGORITMOS DE MODELACIÓN GEOMÉTRICA 53

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.

Dado un punto P cercano a la superficie, el sistema a resolver es:

minimizar f (u, v) = P − S(u,


 v) (3.22)

que es equivalente a minimizar:

 v)2
f (u, v) = P − S(u, (3.23)

si igualamos las derivadas parciales a 0 obtendremos:

 
δ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:

J · [∆x] = [R] (3.29)


Si no se usa line search

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].

La matriz J en (3.29), es el jacobiano de la transformación y su expresión es:


  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 = x0 + ν · ∆x (3.35)


 = −A · x
R (3.36)


φ = ∆x · R (3.37)
ALGORITMOS DE MODELACIÓN GEOMÉTRICA 55
 
φ
 < se acaba. (3.38)
 φ0 

se actualiza ν

φ0
ν=ν (3.39)
φ0 − φ

Y se itera volviendo a (3.35). Tı́picamente se realizan 3 ó 4 iteraciones que mejoran el acer-


camiento a la solución.
Los valores iniciales pueden venir del proceso de cálculo que llama a esta función. Un
ejemplo de ello serı́a que cuando se realiza la generación de malla por el método de avance
frontal en el espacio y se debe reposicionar el punto, se pueden aproximar los valores de u y v
a partir de los ui , vi de los puntos del frente usados.
Generalmente es imprescindible realizar un acercamiento a la solución mediante algún
método simple. En el caso de superficies, el método usado, dada una granularidad N que
puede ser del orden de 7, consiste en:

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.

3.10.4 Intersecciones de lı́neas y lı́neas-superficies

La intersección de lı́neas en el espacio es, en realidad, la búsqueda de P1 ∈ L


 1 (t) y P2 ∈ L
 2 (t),

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

puntos ya conectados cuando se aplica el algoritmo de aproximación de la solución.

Punto buscado

✕ L1


M
L2

Zona no válida Zona válida para la aproximación

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.

3.10.5 Intersección de superficies

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.

2. Calcular la expresión matemática de estas lı́neas como aproximación a las reales.

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)

Figura 3-21: En la figura (A), la búsqueda de la lı́nea de intersección se realiza mediante


la contraposición de cuadrı́culas de puntos. En la (B), se parte de una intersección lı́nea de
contorno-superficie.

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

debe encontrar P1 tal que:

P1 ∈ S1 (u, v) (3.45)

P1 ∈ S2 (u, v) (3.46)

P1 − P0  = δ (3.47)


58 Tratamiento y modelización geométrica

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.

3.10.6 Visualización de superficies

Para realizar una visualización foto-realı́stica de un modelo geométrico, existen diversas técnicas:

1. Iluminación plana. Se suministra al algoritmo de dibujo una normal por triángulo y


éste pinta un color constante para cada elemento.

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.

En todos los casos, además de algunas propiedades de luces y materiales, es necesario


suministrar una descripción geométrica del modelo. Las librerı́as gráficas admiten superficies
NURBS directamente pero no siempre da los resultados deseados. La solución óptima consiste
en suministrar a la librerı́a una descomposición en triángulos de la geometrı́a original juntamente
con sus normales.
Esta descomposición tiene muchos puntos en común con la generación de malla pero con la
adición de algunas particularidades:
ALGORITMOS DE MODELACIÓN GEOMÉTRICA 59

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.

1. La conformidad de elementos entre diferentes superficies no es necesaria, ya que en la ilu-


minación de Gouroud se promedian normales y se disimula el escalonado de los elementos.

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.

3. La cantidad de elementos a generar se deduce de un criterio de aproximación geométrica al


modelo real. Para ello puede usarse el criterio de error cordal descrito en el Apartado 4.7.1.

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.

3.10.7 Las superficies-malla

Este tipo de entidades pueden definirse de la siguiente manera:


60 Tratamiento y modelización geométrica

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.

Superficie-malla: Es una entidad geométrica, similar a cualquier otra entidad de


superficie en cuanto a su funcionalidad, cuya información geométrica viene deter-
minada por una malla de triángulos o cuadriláteros espaciales y por unas lı́neas
de contorno y otras interiores. Tı́picamente, este tipo de superficies al mallarse,
proveerán una nueva malla que será muy distinta a la que les sirve de origen.

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.

3. Identificación de los contornos externos.

4. Identificación de las lı́neas internas, que se calculan con un criterio de ángulo máximo.

5. Subdivisión de la malla original en varias entidades de este tipo.


ALGORITMOS DE MODELACIÓN GEOMÉTRICA 61

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.

3.10.8 Creación de volúmenes

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

Orientación de las superficies

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

Entonces si definimos f respectivamente como x1 , x2 y x3 se obtiene:

 
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.

• Para superficies planas como la normal es constante i de módulo igual al área de la


superficie, se obtiene:


 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

superficies Coon y las NURBS, se calcuları́a de la siguiente manera:

   
1 1  
 dΩ = ∂S ∂S
x · N x · × dudv (3.54)
∂V 0 0 ∂u ∂v

 v) es la superficie paramétrica. La integral se resuelve numéricamente con una


Donde S(u,
cuadratura de Gauss-Legendre (ver[Oña95]) en el espacio paramétrico [0, 1] , [0, 1]. En caso de
disponer de una tabla calculada para el espacio paramétrico [−1, 1] , [−1, 1], se mantienen los
mismos pesos ωi y se realiza una translación de los puntos de evaluación de la integral tal que:

ξ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.

Cálculo del centro del volumen

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

donde r 2 = x21 + x22 + x23 y se ha aplicado 3.49. Entonces:

 
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

La integración se realiza de manera similar a lo explicado en el Apartado 3.10.8.

3.11 APORTACIONES EN LA MODELIZACIÓN GEOMÉTRICA

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:

• Contactos de diversa ı́ndole.

• Creación de juntas.

• Condiciones de contorno periódicas.

• Lı́neas o superficies duplicadas.

• Multi-volúmenes. O sea, diversos volúmenes que ocupan posiciones superpuestas en el


espacio.

Importación y corrección de modelos geométricos

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.

Movimiento de puntos con deformaciones

El algoritmo de movimiento de puntos arrastrando a las entidades cercanas, resuelve la prob-


lemática de mover un conjunto de entidades de manera coherente entre ellas y tal que, después
del movimiento, se continúen respetando las relaciones topológicas que existı́an entre ellos.
66 Tratamiento y modelización geométrica

Ası́, si una entidad es contorno de otra, después del movimiento debe continuar situada ge-
ométricamente sobre dicho contorno.

Reposicionamiento de puntos sobre una superficie

Este es uno de los algoritmos fundamentales en la modelación geométrica y también se usa


ampliamente en la generación de la malla. Puede entenderse, en su descripción básica, como el
problema inverso de la obtención de un punto dadas sus coordenadas paramétricas, o también
como un problema de minimización de distancias. La dificultad del algoritmo desarrollado
estriba en que las superficies pueden presentar un muy alto grado de distorsión que dificulta o
impida la resolución del sistema no lineal. Por tanto, una parte muy importante del método
propuesto y descrito en el Apartado 3.10.3 en la página 52, está centrada en la búsqueda eficiente
de unos buenos valores iniciales.

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

La técnica más ampliamente utilizada para visualizar una iluminación foto-realı́stica de un


conjunto de superficies NURBS, consiste en aprovechar las primitivas NURBS de las librerı́as
gráficas estándares. Éstas contienen algoritmos basados en la descomposición de polı́gonos en
triángulos y aplicados al espacio paramétrico.
En este trabajo se ha preferido aprovechar toda la tecnologı́a implementada en generación
de malla, en aproximación geométrica y en uso de superficies no conformes para cumplir este
cometido. De hecho, una malla que requiera criterios de aproximación geométrica y no necesite
criterios de calidad para simulación es muy similar a la malla que se necesita para visualización
gráfica.
CONCLUSIONES A LA MODELACIÓN GEOMÉTRICA 67

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.

Orientación y cálculo de volúmenes

El aprovechamiento del teorema de Gauss y de la integración numérica de superficies con


cuadraturas de Gauss-Legendre para el cálculo del volumen orientado de un sólido, representa
una técnica novedosa que evita la intervención humana en las decisiones relativas a la orientación
de entidades.

3.12 CONCLUSIONES A LA MODELACIÓN GEOMÉTRICA

La modelación geométrica mediante lı́neas y superficies NURBS se ha convertido en un estándar


dentro de los programas de tratamiento geométrico. Sin embargo, la aportación de la mod-
elación jerárquica con conexión geometrı́a-malla, aporta nuevas opciones para la simulaciones
de efectos complejos tales como el tratado de contactos, juntas, volúmenes superpuestos y otros.
La parte de los desarrollos de este capı́tulo que introduce más novedad es, sin embargo,
toda la metodologı́a de mejora y adaptación de la geometrı́a para la generación de malla. No
se debe olvidar que el modelo geométrico no es más que un medio para la obtención de una
malla que describa fielmente lo que se desea calcular. A tal fin se encaminan todas la técnicas
destinadas a que el mallado sea posible, en primer lugar, y a que la malla resultante cumpla
con los criterios de calidad necesarios para el análisis y simulación numérica.
68 Tratamiento y modelización geométrica
Capı́tulo 4

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:

• Tipos de elementos a generar. Unidimensionales, triángulos, cuadriláteros, tetraedros,


hexaedros. De grado lineal, cuadrático, serendı́pitos o lagrangianos, etc.

• Selección de las entidades geométricas que deben ser malladas. Puede interesar en algunos
casos obtener también la malla de contorno.

• Malla estructurada o no estructurada.

• Tamaño del elemento en cada zona.

• Transición del tamaño del elemento entre zonas.

• Comprobación de la calidad final de los elementos generados.


70 Generación de malla

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.

4.2 TIPOS DE ELEMENTOS

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

Figura 4-1: Elementos de lı́nea y triangulares

• Elementos de barra de 2 nodos (Figura 4-1).

• Elementos de superficie triángulos de 3 nodos o cuadriláteros de 4 (Figuras 4-1 y 4-2).

• Elementos de volumen tetraedros de 4 nodos o hexaedros de 8 (Figuras 4-2 y 4-3).

• Para contactos y elementos de junta se puede usar elementos de barra de 2 nodos,


cuadriláteros de 4, hexaedros de 8 y prismas de base triangular de 6 nodos (Figura 4-
3).
TIPOS DE ELEMENTOS 71

Cuadriláteros

Lineal Serindı́pito de 8 nodos Lagrantiano de 9 nodos

Tetraedros

4 nodos 10 nodos

Figura 4-2: Elementos cuadriláteros y tetraedros

Si se desean elementos de mayor grado se pueden generar:

• Elementos de barra de 3 nodos.

• Elementos de superficie triángulos de 6 nodos o cuadriláteros de 8 ó de 9.

• Elementos de volumen tetraedros de 10 nodos.

• Elementos de volumen hexaedros de 20 ó de 27.

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

8 nodos 20 nodos 27 nodos

Prisma de base triangular

6 nodos

Figura 4-3: Elementos hexaédricos y prismas de base triangular.

cuadrático9 )3 tiene que ser el mismo para todo el modelo.

4.3 ENTIDADES GEOMÉTRICAS QUE DEBEN SER MAL-


LADAS

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.

4.4 MALLA ESTRUCTURADA VERSUS NO ESTRUCTURA-


DA

Definición:Una malla es estructurada si todos sus nodos interiores tienen el mismo


número de elementos que lo contienen. O sea que el número de elementos que
contienen ese nodo como una de sus conectividades es constante para todos los
nodos del interior del dominio.

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.

4.5 MALLA CONFORME Y MALLA NO CONFORME

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.

4.6 TAMAÑO DEL ELEMENTO PARA MALLA NO ESTRUC-


TURADA

Definición: Se entiende por tamaño del elemento la longitud de un elemento lineal


o la longitud media de una arista de un elemento de otro tipo.
TAMAÑO DEL ELEMENTO PARA MALLA NO ESTRUCTURADA 75

z x

Figura 4-5: Comparación entre una malla conforme (izquierda) y no conforme (derecha).

En la Figura 4-6 en la página siguiente, se puede ver gráficamente el significado de este


tamaño de elemento.
Para poder generar la malla, se debe conocer el tamaño deseado de elemento en cada zona
de la malla. En general, el proceso es que toda entidad geométrica puede tener información
del tamaño deseado cerca de ella. Ası́, si se asigna un tamaño a un punto de la geometrı́a,
los elementos cercanos a ese punto tenderán a tener ese tamaño. De la misma manera, un
tamaño asignado en una lı́nea, superficie o volumen provoca que los elementos cercanos o en
el interior de dicha entidad, tiendan a tener ese tamaño. Esta información puede provenir de
varias fuentes:

• En el momento de generar la malla, el usuario define un tamaño medio que se asignará a


todas las entidades que no tengan ningún tamaño predefinido.

• El usuario puede asignar manualmente tamaños a cualquier entidad geométrica.

• 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

L: tamaño del elemento

Figura 4-6: Tamaño del elemento para cada tipologı́a.

cordal6 entre el modelo y la malla resultante.

• 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.

Es interesante aplicar de manera automática el criterio de tamaños máximos por forma


y el de corrección de tamaños cercanos para posibilitar de manera sencilla la consecución de
una malla. En general, aumentan el número final de elementos pero generan elementos de
mayor corrección. En algunos casos particulares (si se necesita máximo ahorro en el número de
elementos), pueden desactivarse estas funciones.

4.7 TRANSICIÓN DEL TAMAÑO DEL ELEMENTO ENTRE


ZONAS

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.

4.7.1 Asignación de tamaños por error cordal

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.

Definición: Se llama error cordal a la distancia entre la geometrı́a original y los


elementos de la malla generada. En la Figura 4-8, se define gráficamente dicha
magnitud.

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

Figura 4-8: Definición de error cordal.

Donde r es el radio de curvatura y T es el tamaño óptimo a generar en ( 4.1 en la página


anterior). Para el caso de las superficies es conveniente proyectar la derivada segunda en la
dirección de la normal. La razón de ello estriba en que nos interesa calcular la curvatura en la
dirección perpendicular a la curva y despreciar la curvatura en las direcciones laterales. Con este
criterio, una superficie plana con un lado curvo en su mismo plano, tendrá elementos grandes
en su interior y éstos se harán sólo pequeños al acercarse a dicha curva. El cálculo quedará de
la siguiente manera:
 
∂ 2 S(u,
 v)
u =
D u
·N N  (4.2)
∂u2
 
 ∂u S(u,v) 3
 ∂u 
ru =  
 ∂u S(u,v) 
 ∂u × Du 

Tu = 2 2ru c − 2c

 la normal a la superficie en ( 4.2). El resto de términos son la extensión de las


Siendo N
ecuaciones para el caso unidimensional. El cálculo del tamaño óptimo en v se realiza de manera
similar.
TRANSICIÓN DEL TAMAÑO DEL ELEMENTO ENTRE ZONAS 79

Si la superficie se va a mallar de manera no estructurada, se escoge T = min(Tu , Tv ). De


esta manera nos aseguramos que se cumple siempre el criterio.
En caso de generación de malla estructurada, se escoge para cada una de las dos direcciones
el tamaño calculado. Este forma de mallado permite generar elementos altamente distorsionados
en una dirección para superficies con alta curvatura en una sola de sus direcciones principales.
Este caso se da tı́picamente en radios de acuerdo entre superficies. La generación mediante este
criterio es especialmente útil para superficies no conformes entre sı́, pues, en caso contrario,
aparecen los problemas de compatibilización de elementos entre superficies vecinas. Puede
comprobarse en el Apartado 4.8.2 cómo aparecen los criterios de incompatibilidad.
En la Figura 4-9, se puede apreciar el gran ahorro de elementos que se produce en la
generación de malla estructurada no conforme de una superficie a otra.

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.

4.7.2 Corrección de tamaños

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.

Tamaño mayor Tamaño mayor

Tamaño menor Tamaño menor

(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.

La operación de corrección de tamaños se realiza antes de iniciar la generación de malla y


consiste en cambiar internamente los tamaños asignados a las entidades por el usuario.
Un primer paso se produce superficie a superficie, donde cada lı́nea origina un tamaño
máximo en función de su longitud. Este tamaño debe traspasarse, adecuadamente incrementado
a las lı́neas vecinas en las superficies a las que pertenecen.
En un segundo paso, para cada entidad que tenga un tamaño menor que el de generación,
deben buscarse las entidades suficientemente cercanas y corregir su tamaño asignado. Para
ello se escoge un punto definidor de cada entidad, que puede ser su centro, y a partir de él se
calculan distancias con el resto de entidades. Dado que es una búsqueda de todos contra todos,
es necesario aplicar un método eficiente de búsqueda espacial. El método escogido es el de la
búsqueda por Octtree, que será definido en detalle en el Apartado 4.12.1.
El criterio de crecimiento de tamaños con la distancia se basa en una progresión aritmética
creciente tomando como base la separación entre centros definidores. Ası́, si d es la distancia
entre las dos entidades y S0 es el tamaño en la entidad base, el tamaño para la nueva entidad
se calculará como:

(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.

4.8 GENERACIÓN DE MALLA ESTRUCTURADA

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.

• Los volúmenes estructurados deben tener seis caras o superficies de contorno.

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.

Cuando se seleccionan algunas superficies o volúmenes, automáticamente se seleccionan


todas las lı́neas que son contorno de estas entidades y el usuario puede asignar número de
elementos en cada lı́nea. Cuando ese número queda asignado para una lı́nea, se traspasa a
todas las otras lı́neas que requieran compatibilidad con la primera. Para el caso especial de
polilı́neas con superficies múltiples, es necesario un algoritmo posterior de comprobación de
compatibilidad.

4.8.1 Malla estructurada con polilı́neas de superficie múltiple

El caso de polilı́neas de superficie múltiple se trata de manera especial y utilizando un algoritmo


posterior al de la asignación de datos de malla estructurada. Como en una polilı́nea de este
tipo habrá un número distinto de superficies por un lado que por el otro, no se puede conseguir
a priori asegurar que el número de elementos para un lado y para el otro de la lı́nea vaya
a ser el mismo. Para solventar este problema es necesario comparar en cada una de estas
polilı́neas el número de elementos por un lado y por otro. En caso de ser diferentes, deben
compatibilizarse y extender el cambio. El algoritmo desarrollado va actuando iterativamente
hasta que compatibiliza todas las superficies estructuradas o comprueba que es imposible (ver
la Figura 4-12). En este último caso dará un mensaje al usuario con indicaciones de que
determinada conexión en una polilı́nea debe arreglarse manualmente.
GENERACIÓN DE MALLA ESTRUCTURADA 83

4.8.2 Malla estructurada en superficies NURBS de más de 4 lados

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.

Figura 4-12: Ejemplo de configuración de superficies en el que no puede conseguirse la coherencia


en el número de particiones en lados.

Para superficies de este tipo, en el momento de asignar el número de particiones a las


lı́neas no puede calcularse automáticamente el número de particiones para las lı́neas asociadas.
La solución desarrollada consiste en aplicar un algoritmo de comprobación a posteriori de la
coherencia en los tamaños. Pueden darse casos, como el de la Figura 4-12, en el que no puede
conseguirse la disposición correcta de particiones.
84 Generación de malla

4.8.3 Generación de los nodos interiores en una superficie estructurada

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:

1. El cálculo de uij se realiza a partir de la interpolación Coon explicada en el Apartado A.8.2.


Obtenemos tras ello un vector perteneciente al espacio paramétrico.

 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.

Figura 4-13: Generación de malla estructurada en una superficie trimada.

4.8.4 Generación de los nodos interiores en un volumen estructurado

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)

ui con i = 1, . . . , M , vj con j = 1, . . . , N y wk con k = 1, . . . , O (4.7)

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)

 el interpolador Coon definido en el Apartado A.8.2. De manera equivalente se pueden


Siendo S
2 y V
definir V 3 sin más que cambiar el plano de interpolación de w fijado a u ó v fijado.

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

El la Figura 4-14, se describe gráficamente la técnica anterior.

Volumen
P8 P1 , . . . , P8
P7

P6 Vi
P5

P4 s
P3

Si
P1
P2

Interpolación volumétrica Interpolación Coon

Figura 4-14: El cálculo de la interpolación volumétrica se realiza mediante la interpolación


Coon en algunas de sus secciones transversales.

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]).

4.8.5 Concentración de elementos en mallas estructuradas

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

4.9 GENERACIÓN DE MALLA EN LÍNEAS

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.

4.9.1 Cálculo de los parámetros de espaciamiento de nodos

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

0 0.1 0.2 0.3 0.4 0.5

Figura 4-16: Cambio del tamaño óptimo entre t = 0 y t = 0.5 para diferentes factores de
transición.

Finalmente se corrigen los parámetros con un factor

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

tamaño en t = 0.5 y SF es el factor de transición definido en [0, 1] entonces:



 Tmin = min (T1 , T2 )
Ttg = Tmin + SF · (Tmax − Tmin ) con (4.14)
 T
max = max (T1 , T2 )

S (t) = T1 (1 − 2t)2 + 2(2t)(1 − 2t)Ttg + T2 (2t)2 con t ∈ [0, 0.5] (4.15)

Un ejemplo de esta parábola puede verse en la Figura 4-16 en la página anterior.


La parábola en t ∈ [0.5, 1] es la misma que la anterior, adecuadamente trasladada.

4.9.2 Corrección para lı́neas NURBS

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

Como el lı́mite superior de la integral no se conoce, se va iterando a partir del incremento


de partida y se calcula la integral con una cuadratura de Gauss-Legendre de número de puntos
GENERACIÓN DE MALLA EN LÍNEAS 91

Arco de circunferencia

Lı́nea recta ✼


✍ ✗

0 t 1

Lı́nea NURBS mal parametrizada

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ı́.

dependiente de la iteración. Conocido ti−1 y ∆t0 , se calcula ti = ti−1 + ∆t0 y:

 
 ti 
np 
 dL  dL 
∆L =  
  dt = ωi
dt tGL
(4.19)
ti−1 dt i=1

si |∆L − ∆ti Ltot | < ε se para. Si no (4.20)

∆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

como por zonas de derivada grande. Una mejor corrección es:

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

4.9.3 Generación para polilı́neas

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 GENERACIÓN DE MALLA NO ESTRUCTURADA EN


SUPERFICIES

4.10.1 Introducción

En general, al hablar de generación de malla en superficies, nos referimos a superficies en el


espacio. Las superficies en el plano z = 0, o usualmente consideradas como 2D, serán tratadas
como un caso particular de las anteriores.
Existen varias posibilidades para realizar esta generación:

• Transformar la superficie a una superficie equivalente en un plano y realizar una generación


2D en él.

• Generar la malla directamente en el espacio.

• Generar la malla en el espacio paramétrico con la métrica del espacio real.

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.

4.11 GENERACIÓN DE MALLA EN EL PLANO

Seguidamente se describirán las técnicas de generación de malla no estructurada en el caso de


transformación previa al plano. De esta manera se consigue reducir un problema tridimensional
a uno bidimensional10 .

4.11.1 Transformación del espacio paramétrico al espacio equivalente

El paso previo en este método a la generación de la malla propiamente dicha es la transformación


de los elementos de contorno o malla sobre lı́nea, a un espacio equivalente que esté contenido
en un plano y que tenga la forma adecuada para minimizar la distorsión.

10
Algunas veces también llamado 2 12 D por ser superficies en el espacio 3D.
94 Generación de malla

En el caso de superficies planas, la transformación consiste simplemente en una rotación tal


que la normal al plano se convierta en ortogonal al plano z = 0. Se desprecia la coordenada z,
se genera la malla y se aplica la operación inversa.

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.

• Un modelo mixto entre ambos.

El esquema escogido ha sido el de convertir el espacio paramétrico a una forma geométrica


más adecuada. La ventaja radica en que se evitan en el generador las dificultades adicionales de
tratar con estos operadores de transformación. Se separa ası́ la problemática de la generación
con la de la transformación. Con esta técnica se consigue muy poca distorsión de los elementos
para formas muy variadas de las superficies. Otra alternativa de posible consideración en el
futuro serı́a una solución mixta entre ambas posibilidades.

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.

definición del cuadrilátero será:


 
0.0 1.0 1.0 − ¯l2 cos (α1 ) ¯l4 cos (α4 )
G=  (4.25)
0.0 0.0 ¯l2 sin (α1 ) ¯l4 sin (α4 )

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.

4.12 ALGUNAS ESTRUCTURAS DE DATOS USADAS EN


LOS ALGORITMOS DE GENERACIÓN

Previamente a la descripción de la generación de malla 2D y 3D, se explicarán algunas estruc-


turas de datos usadas en este proceso. Al hablar de estructuras de datos, se entiende que llevan
asociados un conjunto de algoritmos para su uso.

4.12.1 Algoritmos de búsqueda de puntos cercanos: Quadtree y Octtree

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.

2. Se van introduciendo puntos en la región definida. Estos puntos se almacenan en esta


región hasta llegar a un máximo permitido por región (este máximo es arbitrario y pueden
usarse 4 puntos por región en los Quadtree y 8 en los Octtree).

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.

La forma tı́pica de un Quadtree puede observarse en la Figura 4-19. El funcionamiento del


Octtree es equivalente al descrito, cambiando los rectángulos por hexaedros en el espacio. Un
ejemplo de una estructura de este tipo puede observarse en la Figura 4-20.
98 Generación de malla

Figura 4-20: Esquema de la forma geométrica tı́pica de un Octtree.

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.

Puntos cercanos al punto dado según un radio máximo

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.

Numero fijo de puntos más cercanos a uno dado

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.

Número aproximado de puntos cercanos a uno dado

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.

El proceso de búsqueda de este número óptimo de puntos es el siguiente: dado un radio


 y el coeficiente D del
máximo Rmax , un número óptimo de puntos N , la normal al elemento N
plano del elemento, definido tal que un punto P estará en el semiespacio de búsqueda si:

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:

Pj + Rmax < Hi,j,min (4.29)

Pj − Rmax > Hi,j,max

j = x, y, z

Dado un octante padre Hp , se pueden dar tres casos:



 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.

Incremento del tamaño del Octtree

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

En otros casos, como por ejemplo en la generación de malla de superficie en el espacio, el


contorno no define esa región convexa contenedora. Entonces es necesario usar un mecanismo
de incremento de tamaño del Octtree. El mecanismo es el siguiente: dado un punto P que
no pertenece a la región mayor del Octtree, se comprueba a que lado de la estructura reside.
Entonces se crea un contenedor tal que uno de sus octantes sea la región actual. El resto de las
regiones se escogen de manera que la estructura crezca hacia el lado en que está el punto. Si la
nueva estructura aún no contiene al punto, se procede recursivamente hasta obtener una que si
lo contenga. En la Figura 4-22, se puede ver un caso tı́pico de recrecimiento en el que sólo es
necesario un nivel de aumento.

Nuevo quadtree


Quadtree existente
Punto insertado

Figura 4-22: Recrecimiento de un Quadtree al insertar un punto que no pertenece al interior


de la estructura existente.

Control de puntos coincidentes

La estructura anteriormente definida funcionará perfectamente si todos los puntos introducidos


son distintos entre si. En el caso de que haya varios puntos coincidentes o casi coincidentes13 ,
pueden aparecer problemas. Concretamente, si el número de puntos coincidentes es superior al

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.

4.12.2 Estructura de árbol binario

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

que consisten en una alternativa al Octtree tridimensional.

4.12.3 Estructuras de nodos, elementos y caras

Para conseguir eficiencia de computación, la búsqueda de entidades debe ser eficiente. El


problema de la búsqueda de puntos queda resuelto mediante la utilización de los Octtree ya
descritos. Es conveniente, pues, encontrar técnicas de localización de elementos y de caras.
Una primera posibilidad serı́a la creación de estructuras similares a las ya descritas para la
búsqueda de puntos. En este caso, habrı́a que triplicar el coste de búsquedas por tres.
Otra opción más conveniente, que es la que se ha usado, consiste en sacrificar una cierta
cantidad de memoria a cambio de disminuir el tiempo de computación. En concreto, mantener
apuntadores en algunas de las estructuras que den acceso inmediato a las estructuras próximas.
Las conexiones entre entidades serán las de la Tabla 4.1.

Nodos Elementos Caras


Nodos Cada nodo apunta a Cada nodo mantiene to-
- uno de sus elementos. das sus caras activas del
frente.
Elementos Los elementos Mantiene puntero a to- Apunta a las caras ac-
mantienen una lista de dos los elementos que tivas del frente que
sus conectividades. comparten una cara con parten de él.
él.
Caras Las caras mantienen Se apunta al elemento
una lista de sus conec- ya generado. -
tividades.

Tabla 4.1: Relaciones de conexión entre las entidades.

Algunos de los algoritmos donde se usará esta información son:

• 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.

• Al usar la técnica de intercambio de diagonales en el alisado (ver el Apartado 4.16.3), se


obtiene el elemento contiguo mediante el puntero a los elementos vecinos.
MÉTODOS DE GENERACIÓN DE MALLA TRIANGULAR EN 2D Y
TETRAÉDRICA EN 3D 105
• Uno de los algoritmos del alisado consiste en el movimiento de nodos. Para poderlo
realizar se necesitan los elementos y nodos que tiene alrededor. Éstos se consiguen de la
siguiente manera:

1. A partir de un nodo obtenemos uno de los elementos que lo contienen.

2. Los otros elementos provienen de una búsqueda aprovechando la información de


elementos contiguos14 .

3. Los nodos se obtienen directamente de las conectividades de los elementos.

4.12.4 Cubos MinMax

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.

4.13 MÉTODOS DE GENERACIÓN DE MALLA TRIANGU-


LAR EN 2D Y TETRAÉDRICA EN 3D

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:

• Generación frontal (advancing front).

• Delaunay (o Boronoi).

• Generación por particiones, por octtree u otros.

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].

4.14 GENERACIÓN FRONTAL

El método de la generación frontal apareció para solventar la necesidad de analizar problemas


cuyas geometrı́as eran lo suficientemente complejas como para no poder discretizarse con malla
estructurada. Los primeros estudios para el desarrollo y mejora de esta metodologı́a han sido
llevados a cabo por Lohner, Peraire y Peiró (ver [LP88] y [PPLFZ88]).
La generación frontal (advancing front) se basa en un algoritmo que va creando los elementos
uno a uno hasta que cubren todo el interior del objeto a mallar. Este proceso de creación puede
esquematizarse en los siguientes pasos:

1. El punto de partida es una malla de contorno. En el caso de generación de malla en el


plano, esta malla de contorno está formada por elementos lineales de dos nodos. Para
mallas tridimensionales, el contorno está formado por una malla triangular. En el inicio, a
esta malla se la llama frente activo. Un ejemplo de este frente puede verse en la Figura 4-
GENERACIÓN FRONTAL 107

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.

7. Mientras queden caras en el frente, se repite el proceso desde el paso 2o .

A lo largo de este proceso se va desarrollando una problemática que se va a describir en lo


sucesivo. También se describirán las distintas técnicas usadas para resolver estos problemas.

4.14.1 Incremento del tamaño de los elementos

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)
α

α = 0.66 · Fs2 − 0.19 · Fs + 1.03 (4.33)

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

4.14.2 Elección del punto para la creación del nuevo elemento

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.

4.14.3 Borrado de elementos

En algunos casos, especialmente en la generación de malla de tetraedros, es posible llegar a una


configuración del frente que no permita continuar en el avance. La razón de esta inestabilidad
en el método proviene del hecho que la decisión de crear nuevos elementos proviene de la suma
de un conjunto de tolerancias no directamente relacionadas entre ellas. Dada la construcción
de un nuevo punto a una distancia determinada de una cara existente, aceptable según las
tolerancias predefinidas, puede suceder que, más tarde, al proceder en el avance, la inserción de
un nuevo elemento en el espacio dejado entre ese punto y la cara no cumpla con los requisitos
establecidos. Hablando con más generalidad, puede producirse una acumulación de estado
distorsionado mediante la adición de varias tolerancias mı́nimas que conlleve una situación de
no solución. En la Figura 4-26 en la página siguiente, podemos ver dos tetraedros que no
permiten la inserción de un nuevo elemento entre ellos.
Cuando se llega a una situación de este tipo, se puede proceder de dos maneras, o bajando
las exigencias de calidad de los elementos, posibilidad que se describirá en el Apartado 4.14.4,
o borrando algunos elementos ya generados y reanudando la generación con un nuevo frente.
El proceso de borrado se realiza en dos fases:

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

Figura 4-26: Configuración sin posibilidad de continuar la generación de malla.

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.

4.14.4 Disminución de tolerancias

Otra técnica para solventar situaciones degeneradas consiste en la disminución de tolerancias.


La idea es que en el avance normal, se requiere una calidad alta de elemento creado. Además
también se requiere que la distancia a otras entidades, como a una cara ya existente en el frente,
sea suficientemente grande.
En concreto, un nuevo punto debe cumplir que:

 · (P − C
N  c ) > r · h

 es la normal al elemento, P es el punto que se está comprobando, C


donde N  c es el centro de

la cara y h es una magnitud caracterı́stica del nuevo elemento como su altura.


112 Generación de malla

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:

P1 = (1 − N (t))PL1 + N (t)PL2 (4.34)


3

P2 = Ni PT i (4.35)
i=1

coinciden. Esta serı́a la intersección exacta.

Para el cálculo de estas intersecciones en el interior del algoritmo de generación frontal, se


usa la intersección extendida, que consiste en:

3

(1 − N (t))PL1 + N (t)PL2 = Ni (α, β)PT i (4.36)
i=1

se considera intersección extendida si:

α, β, 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.

4.14.5 Ordenación de intentos

En el esquema de la Figura 4-27, se esquematiza el proceso de disminución de tolerancias y de


borrado de elementos según el orden en que se van aplicando.
MÉTODO DE DELAUNAY 113

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

Fracaso Nueva Borrado de región ✲ Nueva Varias veces


✲ cara Se para la
cara generación
activa activa

Figura 4-27: Orden de aplicación de los algoritmos de recuperación de errores.

4.15 MÉTODO DE DELAUNAY

El método de Delaunay es una técnica alternativa para la generación de malla no estructurada


triangular o tetraédrica en un dominio. En [GB98] se describen detalladamente todos los
algoritmos asociados con este método. Siguiendo el método constructivo que se describirá en
siguientes apartados, se obtiene una malla de Delaunay que debe cumplir la siguiente definición:

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:

1. Se calcula una región rectangular que contenga al dominio.

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

Elemento no aceptado Elemento aceptado

Figura 4-28: Criterio de aceptación de un elemento según el esquema de Delaunay.

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.

4. Cuando todo el rectángulo exterior está completamente cubierto de triángulos, es nece-


sario recuperar los elementos que están en el interior del contorno. Para ello se empieza
a buscar elementos a partir de un segmento de contorno cualquiera y se va avanzado
mediante la búsqueda de elementos vecinos. Para ello debe mantenerse información de
elementos vecinos, ası́ como de los contornos.

5. Se aplican técnicas de alisado similares a las de los otros métodos.

4.15.1 Ventajas e inconvenientes del Método de Delaunay

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

• Gran velocidad por el menor número de operaciones. El número de operaciones por


elemento es menor debido a que en la creación del elemento por este método sólo se
ALISADO 115

compara cı́rculos con puntos, en contraposición al avance frontal donde se realiza el cálculo
de gran número de intersecciones.

• Siempre se obtiene una malla. Independientemente de la calidad de los elementos, siempre


se llega al final con este método, en contraposición al avance frontal donde puede llegarse
a situaciones de no avance.

• Especialmente útil en el caso de que ya se disponga a priori de los nodos de la futura


malla y únicamente quieran crearse los elementos.

Inconvenientes

• Control limitado en las transiciones de tamaños de elementos. Dificultad, en general, de


crear unos puntos que cumplan con unos requerimientos de separación determinados. En
el método de avance frontal, este requerimiento se impone de manera natural al crear los
elementos.

• Mala calidad de los elementos resultantes. Esto se da especialmente en 3D para tetraedros.


Es habitual obtener elementos de volumen nulo o negativo que es necesario corregir con
el alisado.

• 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

Se denomina alisado a las técnicas de mejora de calidad de la malla. Habitualmente estos


algoritmos se aplican automáticamente sobre la malla recién generada. Puede considerarse, por
tanto, como parte integrante del proceso de generación de malla.

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

4.16.1 Indicador de calidad Ic

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:

1. Relación de tamaños cara máxima/mı́nima-volumen.

2. Criterios de ángulos mı́nimos/máximos.

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

Figura 4-29: Indicador de calidad Ic para triángulos y para tetraedros.

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 

entonces debe cumplirse que:

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.

4.16.2 Proceso de mejora de la malla

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

tipo de análisis posterior con esta malla.


El proceso será calcular el ı́ndice Ic para todos los elementos de la malla y escoger los peores
en un porcentaje prefijado. Seguidamente se aplicará uno de los algoritmos de mejora y se
volverá a rehacer la lista de los peores. Se aplicará un nuevo algoritmo y se procederá de igual
manera. Es conveniente iterar dos o tres veces sobre el conjunto de los algoritmos para obtener
una buena relación mejora de calidad-tiempo de computación.

4.16.3 Algoritmos de mejora de la malla

Se van a presentar dos algoritmos de mejora de la calidad de la malla desarrollados en la tesis.


Uno de ellos se puede aplicar únicamente a triángulos y el otro tanto a triángulos como a
tetraedros. Los algoritmos son:

• Intercambio de diagonales.

• Movimiento de nodos en el macro-elemento asociado.

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

Figura 4-30: Algoritmo de intercambio de diagonales.

Movimiento de nodos en el macro-elemento asociado

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.

Puede observarse que, al igual que en el algoritmo de intercambio de diagonales, es preferible


mantener el Ic del mı́nimo que aumentar la media de calidad del conjunto.

Las dos técnicas de movimiento de nodos desarrolladas son:

1. Movimiento hacia el centroide del conjunto de elementos.

2. Movimiento de factor según las diagonales del conjunto.

Dichas técnicas se describen a continuación.


120 Generación de malla

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.

Movimiento hacia el centroide del conjunto de elementos

El movimiento queda definido por:




i=1 nPi
Pcn =
n

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.

Movimiento de factor según las diagonales del conjunto

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.

La magnitud del movimiento αL se define de manera relativa a la longitud de la diagonal


L, y se va probando de manera iterativa para diferentes valores predefinidos del factor α. La
posición final vendrá dada por:

Pcn = αPi + (1 − α)Pcv

siendo Pi uno de los nodos que rodean al nodo de estudio.


122 Generación de malla

4.17 GENERACIÓN DE MALLA DE SUPERFICIE EN EL


ESPACIO

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.

4. La comprobación de intersecciones debe realizarse mediante la comparación de caras en


el espacio.

5. La comprobación de la calidad y aceptabilidad de un elemento debe hacerse siempre en


relación a la normal de la superficie en ese punto.

6. Al realizar el movimiento de nodos en el proceso de mejora de la malla debe siempre


resituarse los nodos sobre la superficie original.

A continuación se describirán estas etapas con mayor detalle.

4.17.1 Cálculo del punto óptimo

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

Punto proyectado sobre la superficie

Figura 4-33: Cálculo del punto óptimo del nuevo elemento a generar.

4.17.2 Intersecciones entre caras

Al referirnos a generación de malla espacial no es posible hablar propiamente de intersección


de caras, pues éstas no intersectarán directamente en multitud de casos. Más bien, debemos
referirnos al concepto de intersección de caras proyectadas. En la Figura 4-34, se aprecia un
caso de este tipo.
Para considerar que dos caras en el espacio intersectan, debemos referirnos de nuevo al plano
tangente. Se realiza una transformación de los nodos que forman las caras a un nuevo sistema
124 Generación de malla

de coordenadas tal que su eje z coincide con la normal a la superficie.

Pi,L = T t Pi

∆z = I1,z,L − I2,z,L  (4.42)

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.

4.17.3 Control de calidad de los elementos

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

En el espacio es necesaria una referencia adicional a la orientación de la superficie. Al


indicador Ic definido en el Apartado 4.16.1, hay que añadir un criterio adicional de comparación
de normales. En concreto, para un triángulo P1 , P2 , P3 se puede expresar:

 t = (P2 − P1 ) × (P3 − P1 )


N
t · N
Ia = N s (4.43)

 s la normal a la superficie. Si Ia es menor que 0 debe considerarse el elemento mal


con N
orientado y por tanto inaceptable.

4.17.4 Comparación de la generación en el plano versus en el espacio

La operación básica que distingue la generación en el plano en relación a la generación en el


espacio es la de reposicionamiento de un punto sobre la superficie.

Esta operación es altamente costosa en tiempo de computación y puede llegar a no obtener


un resultado correcto para superficies muy distorsionadas. Aunque también es necesario rea-
lı́zarla en la generación de malla plana para los contornos, en la generación de malla espacial
se usa mucho más extensamente. Por otro lado, esta operación puede especializarse en los
contornos de tal manera que tenga resultados más precisos.

Existen otros condicionantes en la generación espacial que dificultan la obtención de una


malla. Entre ellos se puede mencionar la dificultad de atravesar zonas de alta curvatura con
elementos grandes o la confusión que provocan los contornos cerrados.

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.

4.17.5 Tiempos relativos de computación

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:

• El porcentaje de tiempo dedicado a la mejora de la malla o alisado es del 10 al 14%. Este


número se consigue mantener en esa magnitud debido a que la mejora sólo se realiza en
los elementos de peor calidad. Debido a este criterio, la mayorı́a de elementos no son
modificados. Ası́ conseguimos el objetivo de mejorar la calidad mı́nima de la malla en
lugar de mejorar la calidad media.

• Dentro de los algoritmos de mejora, el que más tiempo consume es el de movimiento de


nodos.

• Los algoritmos de borrado de elementos en la generación de tetraedros ocupan, para este


ejemplo, un tiempo despreciable. En otros modelos más complejos, este tiempo puede
GENERACIÓN DE MALLA EN LAS SUPERFICIE-MALLA 127

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.

aumentar pero siempre será pequeño en relación al tiempo total.

• 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.

4.18 GENERACIÓN DE MALLA EN LAS SUPERFICIE-MALLA

En el Apartado 3.10.7, llamamos Superficie-malla a un nuevo tipo de entidad geométrica defini-


da mediante una malla de superficie. Para poder generar sobre dicha superficie, se usa el algo-
ritmo de generación de malla en el espacio con algunas variaciones. Los datos que la entidad
geométrica debı́a proporcionar al algoritmo de generación eran:

• Dado un punto en la superficie, calcular la normal a la superficie en ese punto.


128 Generación de malla

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.

• Dado un punto en el espacio, en una posición cercana a la superficie, encontrar el punto


perteneciente a dicha entidad que cumpla el criterio de mı́nima distancia. O sea, hacer el
reposicionamiento de dicho punto.

El proceso general para calcular estos datos consiste en encontrar al elemento en la malla
de soporte al cual pertenece el punto21 .

4.18.1 Búsqueda del elemento activo

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

Time Table: ............... cputime[s] (percent[%]) Uses -- Elems/min

.............................. 18.72000[s] (100.00000[%]) 1 -- 165946


. beginadvancingfront ........... 12.87000[s] (68.75000[%]) 1 -- 241375
. . Advancing front ............... 11.17000[s] (86.79099[%]) 1 -- 278111
. . Smoothing ..................... 1.44000[s] (11.18881[%]) 1 -- 2157292
. . . Calc Quality .................. 1.03000[s] (71.52778[%]) 4 -- 3016019
. . . Swap Diagonals ................ 0.06000[s] (4.16667[%]) 1 -- 51775000
. . . Move Points To Center ......... 0.35000[s] (24.30556[%]) 2 -- 8875714
. . Other operations .............. 0.26000[s] (2.02020[%]) -- 11948077
. Other operations .............. 5.85000[s] (31.25000[%]) -- 531026

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.

naturales más la altura de ese punto respecto al elemento.


 y se
El proceso es el siguiente: Dado un triángulo o cuadrilátero, se calcula su normal N
define una matriz de transformación T tal que el eje z  de los ejes locales que definen dicha
rotación coincida con la normal N . Los nodos que definen el triángulo y el punto de referencia
pueden convertirse a ese sistema local mediante:

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:

Pr,x = L1 P1,x + L2 P2,x + L3 P3,x

Pr,y = L1 P1,y + L2 P2,y + L3 P3,y

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

Time Table: ................. cputime[s] (percent[%]) Uses -- Elems/min

Absolute total................ 49.02[s] (100.00000[%]) 1 -- 18181


+ Advancing front total ......... 47.21[s] ( 96.30763[%]) 7 -- 18878
| + Advancing front ............. 40.36[s] ( 85.49036[%]) 7 -- 220826
| | + CalcBestPosition ............ 0.10[s] ( 0.24777[%]) 14857 -- 8912400
| | + FindClosePoints3D ........... 9.86[s] ( 24.43013[%]) 14857 -- 90389
| | + CalcCloseFaces3D ............ 5.42[s] ( 13.42914[%]) 14857 -- 164435
| | + CalcCloseAristes3D .......... 10.12[s] ( 25.07433[%]) 14857 -- 88067
| | + FindBest3D .................. 12.28[s] ( 30.42616[%]) 15182 -- 72576
| | + EnterFace ................... 0.19[s] ( 0.47076[%]) 28835 -- 4690736
| | + TakeFaceOut ................. 0.20[s] ( 0.49554[%]) 30589 -- 4456200
| | + DeleteClosedElemsShort ...... 0.02[s] ( 0.04955[%]) 1 -- 44562000
| | | + EnterFace ................... 0.00[s] ( 0.00000[%]) 3
| | | + TakeFaceOut ................. 0.00[s] ( 0.00000[%]) 5
| | + Other operations ............ 2.17[s] ( 5.37661[%]) -- 410709
| + Smoothing ................... 6.77[s] ( 14.34018[%]) 7 -- 131645
| | + Calc Quality ................ 0.50[s] ( 7.38552[%]) 27 -- 1782480
| | + Swap Diagonals .............. 0.02[s] ( 0.29542[%]) 6 -- 44562000
| | + Move Points To Center ....... 6.25[s] ( 92.31905[%]) 14 -- 142598
| + EnterFace ................... 0.01[s] ( 0.02118[%]) 1756 -- 89124000
+ Other operations ............ 1.81[s] ( 3.69237[%]) -- 492397

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.

En algunos casos, no es posible llegar al elemento buscado mediante este procedimiento.


Entonces, se recurre al método de buscar la arista más cercana al punto y escoger, de entre los
dos elementos que contienen a la arista, al que tenga unas coordenadas naturales mejores.
GENERACIÓN DE MALLA EN LAS SUPERFICIE-MALLA 131

(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.

4.18.2 Cálculo de la nueva normal

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

Figura 4-40: Elección de la normal correcta para puntos situados en aristas.

4.18.3 Reposicionamiento del punto

Cuando se ha obtenido el elemento óptimo y sus coordenadas naturales locales mediante la


técnica descrita anteriormente, se considera al punto reposicionado como la transformación al
espacio global del punto de coordenadas naturales equivalentes.

3

Pn = Li Pi
i=1

Pn = T · Pn

4.19 APORTACIONES EN LA GENERACIÓN DE MALLA

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

modelos geométricos arbitrariamente complejos.


En las siguiente lı́neas se van a repasar algunos de los conceptos descritos a lo largo del
capı́tulo y se van a comentar desde este punto de vista.

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.

Superficies NURBS estructuradas

Tradicionalmente, los programas de generación de malla estructurada permiten la generación en


superficies de 3 ó 4 lados ya que estos son los que forman la estructura óptima para este proceso.
En los desarrollos de esta tesis se ha incluido la posibilidad de que la superficie tenga más de 4
lados siempre que éstos se puedan describir topológicamente mediante una forma cuadrilátera
en el espacio. El proceso consiste en hacer abstracción de las lı́neas externas y convertirlas
interiormente en 4 lı́neas para proceder a la generación. Este proceso tiene la gran ventaja que
permite que los tamaños en lados no se transfieran a través de todas las superficies del modelo,
pudiendo de esta manera poner más o menos elementos según zonas. El inconveniente es que
ha sido necesaria la creación de algoritmos de compatibilización de tamaños entre superficies
que pueden llevar, en un caso extremo, a imposibilitar una malla conforme a lo largo de todo
el dominio.

Generación de malla estructurada

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.

Corrección NURBS para lı́neas

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:

1. Corrección y modificación de las entidades geométricas como paso previo a la generación


de malla.

2. Corrección iterativa en el cálculo del incremento del parámetro en el momento de calcular


los nodos sobre las lı́neas NURBS.

La primera opción se describe en el capı́tulo sobre modelización geométrica. La segunda opción,


descrita en el Apartado 4.9.2, consiste en una mejora importante para poder obtener una
separación óptima entre los nodos de una lı́nea. Ambas opciones son aportaciones de la tesis a
la generación de malla sobre NURBS.

Concentraciones de elementos en lı́neas

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.

Transformación al espacio equivalente en generación de malla de superficie

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

La definición de un espacio equivalente mediante las funciones de forma del cuadrilátero


serendı́pito de 8 nodos desarrollada en la tesis, constituye un nuevo enfoque para esta técnica.
Debe tenerse en cuenta que el cálculo de este cuadrilátero debe poderse realizar sobre superficies
extremadamente distorsionadas, lo cual implica una alta sofisticación en la algoritmia.

Uso de Octtrees modificados

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:

• Se le ha dado capacidad de incrementar su tamaño dinámicamente respecto al Octtree


inicial para poder tratar los casos en que no se conoce a priori el tamaño total del dominio.

• Cuando entran en la estructura un número de puntos coincidentes mayor que el número


máximo de puntos que caben en un octante, se produce desbordamiento a no ser que
se tomen medidas especiales para evitarlo. Las medidas desarrolladas consisten en que
al disminuir el tamaño de un octante por debajo de una tolerancia dada, se cambia el
proceso de inserción, convirtiéndolo a uno nuevo de orden cuadrático.

• El criterio de extracción de puntos cercanos cumpliendo los requisitos de obtención de una


cantidad aproximadamente fija y de eficiencia computacional, han propiciado el desarrollo
de un nuevo algoritmo complejo pero rápido para conseguir esos puntos óptimos.

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 .

Generación frontal tridimensional

Los algoritmos de generación de tetraedros en el espacio han sido materia de investigación


abundante en los últimos años. Ejemplos de literatura sobre el tema pueden encontrarse en
136 Generación de malla

[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 borrado de elementos, que ya ha sido descrito en la literatura (ver [LP88]), es una


técnica eficiente cuando se llega a situaciones que impiden avanzar en el frente. En
apartados anteriores se ha descrito la técnica desarrollada que consiste en combinar el
borrado según zona de influencia de la cara activa con el borrado de una sub-zona mayor
y intento de avance según diversas caras.

• 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.

• La combinación de los dos algoritmos anteriores ha obligado a definir un esquema en la


ordenación de intentos para poder proseguir en el caso de quedar un frente imposibilitado.

Mejora de la malla o alisado

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.

Generación de malla de superficie en el espacio

La generación directamente en el espacio, con las dificultades del reposicionamiento de nodos


sobre la superficie y las del cálculo de las pseudo-intersecciones de caras planas en el espacio
CONCLUSIONES A LA GENERACIÓN DE MALLA 137

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.

La aportación en las superficies-malla, ha consistido en la implementación eficiente de los algo-


ritmos descritos.

4.20 CONCLUSIONES A LA GENERACIÓN DE MALLA

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

Adaptación a un tipo de análisis

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.

3. Se considera la adaptación como un proceso externo al sistema en sı́ que se le añade a


posteriori. En cada adaptación con cada tipo de análisis se definen totalmente los datos
a usar.

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.

5.2 CONCEPTO DE TIPO DE PROBLEMA

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

Tipo de prob- Programa de


✛ ✲ ✲
lema C análisis B

... ...

Tipo de prob- Programa de


✛ ✲ ✲
lema B análisis C

Interacción con el
usuario

Figura 5-1: Esquema de interacción entre preproceso, proceso y tipo de problema.

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.

5.3 ABSTRACCIÓN DE DATOS

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.

5.4 APLICACIÓN A LOS DATOS DEL 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

NUMBER: 1 CONDITION: Point-Constraints


CONDTYPE: over points
QUESTION: X-Constraint#CB#(0,1)
VALUE: 1
QUESTION: X-Value
VALUE: 0.0
QUESTION: Y-Constraint#CB#(0,1)
VALUE: 1
QUESTION: Y-Value
VALUE: 0.0
QUESTION: Z-Constraint#CB#(0,1)
VALUE: 1
QUESTION: Z-Value
VALUE: 0.0
END CONDITION

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.

Datos generales de problema y de intervalo

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.

5.5 CONEXIÓN PREPROCESO-PROCESO

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

de entrada de datos para el cálculo. Se parte de la hipótesis de que el programa de análisis


recibe la información de entrada mediante un conjunto de ficheros en los que se incluye toda la
información de malla, condiciones de contorno y otros datos.
La manera de hacerlo ha consistido en la creación de un lenguaje de programación o de
macros, especializado en esta tarea y que permite describir la forma exacta en que deben
escribirse estos datos en el fichero. Los criterios con los que opera este lenguaje se describirán
en el siguiente apartado.

5.6 LENGUAJE BAS DE DESCRIPCIÓN DEL FICHERO DE


ENTRADA DEL 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.

$DIMENSIONES DEL PROBLEMA $DIMENSIONES DEL PROBLEMA


DIMENSIONES: NPNOD= *npoin , NELEM= *nelem , \ DIMENSIONES: NPNOD= 30 , NELEM= 36 , \
NMATS= *nmats , \ NMATS= 0 , \
NNODE= *nnode , NDIME= *ndime , \ NNODE= 3 , NDIME= 2 , \
NCARG= *GenData(Número_de_cargas) , \ NCARG= 1 , \
NGDLN= *GenData(Grados_de_libertad) NGDLN= 3
$ $

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.

5.7 EXTENSIONES MEDIANTE LENGUAJES DE SCRIPT

Al tener incluido un lenguaje de script en su interior, el sistema permite la creación de ventanas


especializadas y la implementación de funcionalidades nuevas al creador del tipo de problema.
Con ello se consigue una alta personalización del sistema que, en su extremo, puede llevar a
dar una nueva apariencia al programa.

5.8 APORTACIONES EN LA ADAPTACIÓN AL ANÁLISIS

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.

5.9 CONCLUSIONES A LA ADAPTACIÓN

La capacidad de adaptar el sistema de preproceso a virtualmente cualquier clase de análisis


representa una importante aportación para todo el colectivo de investigadores que requieren
una herramienta de este tipo. Debe tenerse en cuenta que son pocos los programas de cálculo,
que por su generalidad y por su uso ampliamente difundido, pueden tener un sistema de pre y
postproceso propio de alta calidad. La progresiva especialización de los programas de cálculo
exige el disponer de un sistema general de pre y postproceso que pueda adaptarse a sus necesi-
dades. La metodologı́a desarrollada en la tesis y explicada en este capı́tulo permite llevar a
cabo tal cometido con una cantidad de esfuerzo totalmente aceptable.
Capı́tulo 6

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.

Avión caza F16

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

superficies al principio a 300-400 actualmente. Los modelos de fundición completos para la


fabricación de estos dientes, como los de las Figuras 6-3 y 6-4, pueden llegar a tener varios
miles de superficies. Al principio de la tesis, estos modelos representaban un trabajo manual
tedioso de preparación de la geometrı́a y de asignación de tamaños de malla. En la actualidad,
la importación de la geometrı́a y la generación de malla de tetraedros sobre uno de estos dientes
con el sistema GiD, es una operación directa en la que ha desaparecido el trabajo manual. Los
análisis realizados sobre estos dientes han sido tanto de fundición con un modelo termo-mecánico
acoplado, como de sólido con contactos entre piezas.

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

El modelo geométrico tridimensional de la catedral de Tarazona se realizó ı́ntegramente en el


interior del sistema GiD. Ello puso a prueba las capacidades de modelación para una geometrı́a
no sencilla. La malla final se generó con unos 40000 tetraedros. Un requerimiento de este
análisis era la minimización del número de elementos con una distribución óptima en las zonas
de mayor interés estructural. El cálculo consistió en un análisis estructural con un modelo de
daño [CdSC99]. En las Figuras 6-7 y 6-8, puede verse el modelo geométrico y la malla obtenida.

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

y mayores. Además, con estos modelos se profundizó en la generación de mallas no conexas


entre superficies, con malla estructurada automática, con criterios de error cordal y con altas
distorsiones con el objetivo último de describir bien la geometrı́a con el mı́nimo número de
elementos.
Los modelos tı́picos de esta metodologı́a contienen de varios cientos a varios miles de su-
perficies y las mallas obtenidas se sitúan entre 40000 y 400000 elementos triangulares. En la
Figura 6-9, puede verse un ejemplo de tales modelos.

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].

Gran Telescopio de Canarias

El Gran Telescopio de Canarias es un edificio abierto, en el que interesaba modelizar el movimien-


to del aire en su interior. Para ello se necesitaba la descripción geométrica del edificio más la
descripción topográfica del terreno circundante. Mediante la importación y mejora posterior
de la geometrı́a del edificio, más la importación de la topografı́a del terreno se creó el dominio
de análisis. La topografı́a se incorporó mediante cuadrı́culas de puntos. Se requirió para ello
desarrollar la lectura de ficheros de batch y mejorar la generación automática de superficies.
La malla de tetraedros del dominio, del orden de 700000 tetraedros, requirió un incremento
de nivel de calidad de la generación volumétrica para poder generar malla en las ventanas de
unión interior-exterior, alrededor del telescopio en sı́, y realizar transiciones de tamaño hacia
el contorno exterior. En las Figuras 6-11 y 6-12, puede apreciarse parte de la geometrı́a del
modelo.

Análisis de velas de barco

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

se ha visto facilitada por el criterio de asimilar topologı́a geométrica a topologı́a de malla. De


todas maneras, es necesario subdividir el volumen en varios subvolúmenes para evitar la prob-
lemática de elementos cruzados sobre las velas, ya que estas últimas son, en el fondo, unos
agujeros colapsados en el interior del dominio.
En las Figuras 6-13 y 6-14, puede verse el modelo y el contorno de la malla generada.

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.

Importación de la geometrı́a de una fragata

A nivel de comprobación de la calidad de la importación de geometrı́a externa, ası́ como de su


tratamiento y visualización en el interior del sistema, se presenta este ejemplo de una fragata con
altı́simo nivel de detalle (Figura 6-19), cuya forma queda descrita con más de 10000 superficies.
151

Figura 6-1: Malla de un avión caza F16.


152 Ejemplos de aplicación
153

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-3: Geometrı́a de un conjunto de piezas de diente de excavación. Ésta es la forma en


que se construyen, por fundición.

Figura 6-4: Visualización foto-realı́stica de la geometrı́a anterior.


156 Ejemplos de aplicación
157

Figura 6-5: Geometrı́a de una presa de bóveda.

Figura 6-6: Malla de la presa anterior generada como malla estructurada de elementos
hexaédricos.
158 Ejemplos de aplicación
159

Figura 6-7: Geometrı́a de la catedral de Tarazona.

Figura 6-8: Malla de la catedral.


160 Ejemplos de aplicación
161

Figura 6-9: Análisis de procesos de estampación de chapa.


162 Ejemplos de aplicación
163

Figura 6-10: Transbordador espacial entrando en el mar.


164 Ejemplos de aplicación
165

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.

Figura 6-14: Malla de la vela anterior.


168 Ejemplos de aplicación
169

Figura 6-15: Geometrı́a de un barco deportivo más el dominio de análisis.

Figura 6-16: Malla del barco anterior.


170 Ejemplos de aplicación
171

Figura 6-17: Malla de una pieza creada para la fundición de aluminio.

Figura 6-18: Detalle de la malla anterior.


172 Ejemplos de aplicación
173

Figura 6-19: Representación geométrica de un barco importado desde IGES.


174 Ejemplos de aplicación
Capı́tulo 7

Conclusiones y lı́neas futuras de


investigación

7.1 PRINCIPALES APORTACIONES DE LA TESIS

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.

En el Capı́tulo 2 se han introducido un conjunto de criterios de diseño del sistema y se


han organizado los datos que se requieren para suministrarlos a los códigos de análisis, con
el propósito de acercarse al óptimo de facilidad y eficiencia de uso (ver Apartado 2.7 en la
página 20).

En el Capı́tulo 3 se presenta el esquema de estructura jerárquica y las implicaciones que conll-


eva para generar una malla con los condicionantes que requiere el modelo de análisis. Asimismo,
se describen un conjunto de algoritmos destinados a mejorar la calidad de la geometrı́a en cuan-
to a las necesidades del mallado posterior. También se incluyen otros algoritmos desarrollados
para poder actuar sobre la geometrı́a, tanto para crear modelos como para prepararlos para la
generación de malla (ver Apartado 3.11 en la página 64).

En el Capı́tulo 4 se describen un conjunto de algoritmos de generación de malla donde se


introducen las aportaciones mediante una necesaria descripción de los métodos generales de
mallado. En el Apartado 4.19 en la página 132 se distingue de manera detallada lo que se
considera aportación en el conjunto de toda la metodologı́a.

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

sistema a un código particular de análisis. En concreto, se considera aportación el hecho de


suministrar una subdivisión de los datos en unos subconjuntos precisos ası́ como de permi-
tir la configuración desde el exterior mediante un conjunto de macros y de un lenguaje de
programación especializado (ver Apartado 5.8 en la página 145).

7.2 CONCLUSIONES GENERALES

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:

• Es posible generar malla estructurada y no estructurada con diversas tipologı́as de ele-


CONCLUSIONES GENERALES 177

mentos. las velocidades de generación de malla no estructurada de triángulos están en


el orden de magnitud de 150000 elementos por minuto en un ordenador pentium medio.
Las de tetraedros en unos 30000 elementos por minuto para mallas de tamaños tı́picos.

• Es posible generar malla de superficie sobre piezas industriales, como componentes de


automóviles, que mantengan criterios de calidad geométricos y que minimicen el número
de elementos finales. El número de elementos generados tı́pico para esas mallas oscila
entre 50000-200000 elementos.

• La generación de malla de tetraedros se realiza en problemas de fluidodinámica para


análisis de barcos, velas, telescopios y en modelos termomecánicos para estudios de piezas
industriales de fundición. Los tamaños tı́picos de malla oscilan entre 200000-1000000
elementos.

• Existe la posibilidad de creación de malla especializada para contactos, juntas, simetrı́as


rotacionales, multi-volúmenes superpuestos, etc.

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].

• Programas de estampación industrial y de impacto. Stampack [RGO95], Simpack [COG+ 94].

• Programas termo-mecánicos de fundición. COMET [CdSC99].

• Programas térmicos. CALTEP [ZO93].

• Análisis magnetoestáticos. EMANT [JM98].

• Programas de CFD. FLASH [Gar99], PHANTOM [Cod93].

• Programas de análisis de rádar mediante técnicas de ray tracing modificado. GRECO.


178 Conclusiones y lı́neas futuras de investigación

• Análisis acoplado fluido-térmico. PHANTOM [Cod93].

• Programas de diseño de velas por métodos numéricos. PRO-SAILS.

• Programas de mecánica del suelo. CODE-BRIGHT.

• Otros.

7.3 LÍNEAS FUTURAS DE INVESTIGACIÓN

A continuación se incluye una lista de posibles temas de interés para investigación futura dentro
del ámbito de trabajo planteado:

1. Desarrollar nuevas técnicas de mejora automática de la geometrı́a con el objetivo de


generar una malla sobre ella. Estos algoritmos deben ser, en su mayor parte, de ejecución
sin la intervención del usuario.

2. Algunas técnicas de modelación geométrica, como la intersección de superficies o la


creación de radios de acuerdo espaciales, por su propia complejidad, pueden consider-
arse como un tema aún no completamente resuelto. Esta lı́nea de trabajo profundizarı́a
en el tratamiento de entidades con grados elevados de distorsión.

3. La generación de malla no estructurada de hexaedros es un tema no resuelto que serı́a


altamente necesario para algunos tipos de modelos que no pueden operar correctamente
con tetraedros.

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.

5. El uso de superficies-malla debe extenderse para mallas no conformes y para conjuntos


de puntos en el espacio. En concreto, a partir de una nube de puntos puede interpolarse
un conjunto de superficies NURBS o una malla de triángulos que puede usarse más tarde
para mallar sobre ella. Esta capacidad facilitarı́a el modelado de objetos descritos por
puntos a partir de herramientas de reconocimiento de formas tridimensionales.
LÍNEAS FUTURAS DE INVESTIGACIÓN 179

6. La creación de geometrı́a a partir de tomografı́as médicas facilitarı́a la entrada de la


ingenierı́a en el mundo de la medicina.

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:

• Permitir la ayuda interactiva para las propiedades a asignar.

• Criterios lógicos de interacción de campos. Unos campos pueden forzar valores de-
terminados a otros.

• La claridad se consigue con la separación de un problema complejo en varios más


sencillos. Deben darse opciones de subdivisión de los campos en diversos compo-
nentes.
180 Conclusiones y lı́neas futuras de investigación
Apéndice A

Descripción matemática de las


NURBS

En los siguientes apartados se va a describir de manera general la formulación matemática


de las lı́neas y superficies NURBS1 . Se pretende dar una idea general de los principales algorit-
mos y formulaciones necesarios para modelar con estas entidades y generar malla sobre ellas,
sin acompañarlos con extensas demostraciones teóricas o explicaciones detalladas. Para una
descripción más profunda del tema ver [Far93]. Muchas de las ideas de este apéndice se han
obtenido a partir de la referencia anterior.
Previamente, se definirán algunas propiedades básicas del espacio euclı́deo que servirán de
introducción a la nomenclatura y propiedades de las curvas.

A.1 ESPACIO EUCLÍDEO

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 .

v = P0 − P1 P0 , P1 ∈ E 3 , v ∈ 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

un coeficiente o peso. La suma de los pesos debe ser igual a la unidad.



  
n
 Pi ∈ E 3
P = αi Pi 
 n
i=0  i=0 αi = 1

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

Figura A-1: Polı́gono convexo del conjunto de puntos.

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

A.2 DIFERENTES TIPOS DE LÍNEAS

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.

A.3 CURVAS DE BÉZIER

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

Lineal Cuadrática Cúbica

Figura A-2: Curvas de Bézier de diversos grados.

Dados los puntos P0 y P1 , todos los puntos P pertenecientes a E 3 de la forma

P = P (t) = (1 − t)P0 + tP1 t∈R

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:

P01 (t) = (1 − t)P0 + tP1

P11 (t) = (1 − t)P1 + tP2

Insertamos ambas funciones en una nueva combinación baricéntrica,

P02 (t) = (1 − t)P01 + tP11


CURVAS DE BÉZIER 185

y desarrollamos, obteniendo la parábola:

P02 (t) = (1 − t)2 P0 + 2t(1 − t)P1 + t2 P2

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:

1. La curva pasa por el punto inicial y por el final.

2. La tangente de la curva en el punto inicial y en el final pasan por el punto central.

3. La curva es continua y derivable, de grado C 1 en todo el dominio.

4. La curva es plana y está incluida en el polı́gono convexo que forman sus puntos.

Si generamos la construcción anterior para grado n, obtendremos:




 r=1, . . . , n
Pir (t) = (1 − t)Pir−1 (t) + tPi+1
r−1
(t) con:  (A.1)

 i=0, . . . , n − r

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:

1. La curva pasa por el punto inicial y por el final.

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.

3. La curva es continua y derivable, de grado C n−1 en todo el dominio.

4. La curva está incluida en el polı́gono convexo que forma su polı́gono de control.

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.

A.3.1 Curvas de Bézier expresadas en términos de los polinomios de Bern-


stein

Se definen los polinomios de Bernstein Bin (t) como:


 
n i
Bin (t) = t (1 − t)n−i
i

Donde se recuerda que:


  
n
n!
i!(n−i)! si 0 ≤ i ≤ n
=
i  0 en caso contrario.

Los polinomios de Bernstein cumplen las siguientes propiedades:

• 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]

• El conjunto forma una partición de la unidad.


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

A.3.2 Diversas propiedades de las curvas de Bézier

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

A partir de (A.2) y (A.3) se deduce que la derivada de grado r de P n (t) es:

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:

Pi = P0i (s1 ) (A.5)

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.

En la Figura A-3 en la página siguiente, se observa el nuevo polı́gono de control calculado


a partir del inicial y del parámetro s1 .
188 Descripción matemática de las NURBS

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

donde los coeficientes mij valen:

  
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.

Incremento del grado de la curva



Dada una curva de Bézier P n (t) de grado n, queremos obtener otra curva P n+1 (t) de grado

n + 1 tal que P n (t) ≡ P n+1 (t). Mediante interpolación lineal a trozos y operando se obtiene el
nuevo polı́gono de control P0 , . . . , Pn+1
 que debe cumplir:

i  i
Pi = Pi−1 + (1 − )Pi para i = 0, . . . , n + 1 (A.6)
n+1 n+1

Si generalizamos la ecuación anterior para un incremento de grado r, se deduce fácilmente que:


n   r 
 (r) n i−j
Pi = Pj   (A.7)
j n+r
i
j=0

La demostración detallada de este proceso puede encontrarse en [Far93].

Integrales de los polinomios de Bernstein y de las curvas de Bézier

Se puede comprobar que:

 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

Si llamamos u0 , . . . , uL a a0 , a1 , . . . , aL−1 , bL−1 , La curva PG (t) quedará perfectamente


definida con los ui y con el conjunto de los polı́gonos de control de las curvas de Bézier:

P00 , . . . , P0n , . . . , PL−1,0 , . . . , PL−1,n para L curvas de grado n.


SPLINES 191

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.

Nota: El tamaño de cada intervalo [ai , bi ] en relación al tamaño total, es una


elección arbitraria que cambiará la parametrización de la curva. Los efectos de esta
elección se comentarán más adelante.

En general, además de la continuidad C 0 de las curvas, se deseará que tengan continuidad en


las derivadas. Más concretamente, nos interesará que el punto de unión entre dos segmentos de
curva tenga el mismo grado de continuidad que las curvas mismas.

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

∆1 ∆Pn−1 = ∆0 ∆Pn (A.8)

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.

Continuidad C2 Suponiendo la curva PG (t) continua C 1 , la condición de continuidad C 2 en


el punto Pn implica que debe existir un punto PS que cumpla:

Pn−1 = (1 − α)Pn−2 + αPS (A.9)

Pn+1 = (1 − α)PS + αPn+2 (A.10)


192 Descripción matemática de las NURBS

Con α = ∆0 /(t2 − t0 ). En la Figura A-5, puede verse el criterio de continuidad C 2 . La


deducción de estas fórmulas se obtiene fácilmente a partir de la imposición de igualdad de
derivasdas segundas.

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 partir de la aplicación de estos conceptos, se puede comprobar que la forma geométrica


de la curva queda perfectamente definida con los polı́gonos de control de los segmentos de
Bézier. Por otro lado, la continuidad de la curva variará en función de la parametrización
escogida. Por tanto, con una misma forma geométrica se pueden obtener curvas con diferentes
grados de continuidad en función del tipo de parametrización escogida. Debe notarse que una
transformación del tipo t = α + βt para toda la secuencia de knots, no cambia ni la forma de
la curva ni su grado de continuidad.

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

A.5.1 Construcción de la B-spline cuadrática (C1 )

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

A.5.2 Construcción de la B-spline cúbica (C2 )

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.

A.5.3 Definición de las curvas 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.

Definición: El orden de una curva es el grado más uno.


B-SPLINES 195

Figura A-7: Relación del polı́gono de control de una B-spline cúbica con las curvas de Bézier
asociadas.

El polı́gono de control es un conjunto de puntos en el espacio donde algunos de ellos pueden


estar repetidos. La curva pasará por el primer y por el último punto y se acercará, de manera
suave, a todos los otros puntos.
La secuencia de knots, es un conjunto de números reales en forma de lista no decreciente.
Normalmente se definen en el intervalo [0, 1] y, por tanto, el primero valdrá 0 y el último 1. Si
un mismo valor está repetido r veces, se dice que tiene una multiplicidad r. Diferentes multi-
plicidades implicarán diferentes propiedades en relación al punto de control que corresponde al
knot. En concreto, una multiplicidad igual al orden supondrá que la curva interpole al punto
correspondiente. El primer knot de la lista y el último tendrán multiplicidad igual al orden
para asegurar la interpolación de los puntos extremos.
El número de puntos y el de knots deben cumplir que:


 Nk =Número de knots


Nk = Np + o con:  Np =Número de puntos


 o=orden

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

que encontrar uI tal que: u ∈ [uI , uI+1 ]. El valor de la curva en u será:




 k = 1, . . . , n − r
− − 
u i+n−k u u ui−1 
Pik (u) = Pi−1
k−1
(u) + Pik−1 (u) para:  i = I − n + k + 1, . . . , I + 1
ui+n−k − ui−1 ui+n−k − ui−1 

 Pi0 (u) = Pi
(A.15)

entonces:

s(u) = PI+1
n−r
(u)

Donde r es la multiplicidad del knot uI = u. Si no existe ese knot, entonces r = 0. Se deduce


de esta ecuación que la evaluación de la curva pasa por calcular recursivamente una serie de
interpolaciones lineales.

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.

A.5.4 Ejemplo de evaluación de una lı́nea B-spline cuadrática

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

Figura A-8: Ejemplo de B-spline cuadrático con 4 puntos de control y evaluada en u.

que los puntos de control que afectan al resultado son:

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.

El problema se enuncia como: Dado el polı́gono de control de la curva P1 , . . . , PL y su


grado n, calcular una posible secuencia de knots, u0 , . . . , uL+n tal que la curva resultante sea la
198 Descripción matemática de las NURBS

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.

Ejemplo: 0, 0, 0, 0, 0.2, 0.4, 0.6, 0.8, 1, 1, 1, 1 para n = 3 y L = 8.

Parametrización chord length El incremento relativo del parámetro es igual a la relación


 
 
de la distancia entre puntos de control5 . Ası́, u0 = 0,∆ui = ∆Pi  /uL+n . Esta
parametrización introduce información geométrica dentro de la lista y da, en general, mu-
cho mejores resultados. En particular, el avance en la curva al incrementar el parámetro
es mucho más constante.

Ejemplo: para n = 3 y L = 6 se tendrı́a 0, 0, 0, 0, d1 /d3 , d2 /d3 , 1, 1, 1, 1 con d1 =


     
     
P3 − P1 , d2 = d1 + P4 − P3  y d3 = d2 + P6 − P4 .

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.

A.5.6 La base B-spline

De manera similar a como definı́amos los polinomios de Bernstein en la sección A.3.1 en la


página 186, también se puede definir una base de polinomios para el espacio de las B-spline.
Esta base nos permite encontrar otra forma de evaluar las curvas. Si consideramos a las NIn (u)
como funciones recursivas definidas de la siguiente manera:

 1 si ui−1 ≤ u < ui
Ni0 (u) =
 0 en caso contrario.
u − ui−1 ui+n − u n−1
Nin (u) = Nin−1 (u) + N (u)
ui−n−1 − ui−1 ui+n − ui i+1

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.

A.5.7 Derivada de una curva B-spline

La derivada de una curva B-spline puede deducirse a partir de la expresión de la curva y su


valor es:

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

Para calcular la derivada expresada en función de los polinomios de la base B-spline, se


usará la expresión:

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

A.5.8 Efectos de la multiplicidad de knots y puntos sobre la continuidad de


la curva

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.

A.5.9 Representación gráfica de una B-spline

Cuando se desea dibujar en una pantalla gráfica o en un fichero un conjunto de entidades


geométricas, la primitiva de dibujo de que se dispone en la librerı́a gráfica es la de pintado de
200 Descripción matemática de las NURBS

Multiplicidad Puntos de control múltiples knots múltiples

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.

4 C 2 ,G0 Hay discontinuidad en la curva. La


La curva interpola el punto de control curva acaba en un punto de control y
cuádruple. continúa en el siguiente.
Los segmentos en cada lado del pun- Se puede controlar la forma de los seg-
to son lı́neas rectas y interpolan a los mentos a cada lado del punto.
otros puntos de control.

Tabla A.1: Efectos de la multiplicidad para una B-spline cúbica.

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:

• Evaluar la curva a pequeños intervalos del parámetro t.

• Insertar un conjunto de knots mediante la ecuación ( A.15 en la página 196), y dibujar


el polı́gono de control resultante. El nuevo polı́gono de control representará a la curva
con mayor precisión a medida que se vayan insertando más knots. El número de knots
insertados en cada zona puede depender de la curvatura de la curva en esa misma zona.

El segundo método permite dibujar la curva con menos operaciones para igual precisión.

A.5.10 Interpolación mediante B-splines

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

P1 = x1 PL+2 = xL

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.

A.6 CURVAS RACIONALES. LAS CÓNICAS

Existen varias maneras de definir una cónica. Una de las posibles definiciones es:

Definición Una cónica en el espacio E 2 es la proyección de una parábola en E 3 sobre un plano.

Si proyectamos en el plano z = 1 con centro de proyección el origen de coordenadas, a partir


!T !T
de un punto x y z , se obtiene la proyección x/z y/z 1 . De esta manera se
comprueba que una cónica, expresada como una curva de Bézier cuadrática, tiene la forma:

ω0 P0 B02 (t) + ω1 P1 B12 (t) + ω2 P2 B22 (t)


s(t) =
ω0 B02 (t) + ω1 B12 (t) + ω2 B22 (t)

donde los ωi se llaman los pesos de los puntos de la curva.


!T
Otra forma de expresar el mismo problema es considerar que el punto x y z , tiene
!T
como coordenadas homogéneas al punto ωx ωy ωz ω , que representa a todos los pun-
LÍNEAS NURBS 203

z ✻

✒y

# $
ωP
ω

P

ω=1


x

Figura A-10: Proyección de una curva polinómica cuadrática en el espacio E 3 al plano z = ω =


1. La curva resultante es una cónica en E 2 .

tos del hiperespacio E 4 que proyectan en él. En este caso:

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.

A.7 LÍNEAS NURBS

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

A.7.1 Evaluación recursiva

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)

A.7.2 Evaluación mediante la base B-spline

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

A.7.3 Derivada de una lı́nea NURBS

La derivada de una lı́nea NURBS puede expresarse como:

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

A.7.4 Definición de la circunferencia como lı́nea NURBS

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.

A.7.5 Influencia de los pesos en la curva

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

Nueva curva Movimiento del punto Nueva curva


✻ ✙ Incremento del peso

Vieja curva Vieja curva

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.

A.8 SUPERFICIES NURBS

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.

Las superficies quedarán perfectamente definidas mediante mediante el grado y la lista de


knots en cada una de las direcciones u y v. Tanto el grado como el número de knots, no tienen
que coincidir para u y v. Los puntos de control serán una cuadrı́cula en el espacio que en general
tendrá diferente número de puntos según cada una de las direcciones.
SUPERFICIES NURBS 207

Figura A-13: En esta figura se puede observar una superficie NURBS con su polı́gono de control.

La expresión general para evaluar una superficie NURBS será:

   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.

Ejemplo de evaluación: Dada una superficie con m puntos en dirección u y n


puntos en dirección v, que deseamos evaluarla en (ua , va ), tenemos que evaluar las m
curvas formadas con los puntos de la cuadrı́cula de control tomados como columnas
y evaluarlas en v = va . El resultado será un conjunto de m puntos que formarán
una curva que hay que evaluar para u = ua .
208 Descripción matemática de las NURBS


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.

A.8.1 Cálculo de la normal

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

A.8.2 Interpolación a partir del contorno

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.

Superficie Coon bilineal

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.

Nota: Los ui , vi referenciados, se usan únicamente para el cálculo de los puntos


interiores del polı́gono de control y, por tanto, no tienen relación alguna con la lista
de knots.
210 Descripción matemática de las NURBS

Superficie Coon parcialmente bicúbica

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:

H03 (t) = B03 (t) + B13 (t)


1
H03 (t) = B13 (t)
3
1
H0 (t) = − B23 (t)
3
3
H03 (t) = B23 (t) + B33 (t)

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

de esta superficie será:


   
! x(0, v) ! H03
x(u, v) = H03 H33   + x(u, 0) x(u, 1)  
x(1, v) H33
  
! x(0, 0) x(0, 1) H03
− H03 H33   
x(1, 0) x(1, 1) H33

A.9 SUPERFICIES NURBS TRIMADAS

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.

Figura A-16: La figura de la izquierda es una superficie NURBS. La de la derecha es otra


superficie NURBS con la misma superficie de base y con unas lı́neas de recorte formadas por
la intersección con el prisma dibujado.

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

Adaptación Borrado, elementos, 110


análisis, 139
C++, 8
Advancing front, 106
Cónicas
Alisado, 115
Curvas, 202
Análisis
CAD, 23, 24, 35
adaptación, 139
CADG, 29
Arcos, 29
CAE, 23, 38
B-splines Calidad
Base, 198 Malla, 116
Cúbica, 194 Calidad, de malla, 116
Cuadrática, 193 CAM, 23
Curvas, 192 Centroide, del nodo, 119
Definición, 194 Chord length, 197
Derivada, 199 Circunferencia, 204
Interpolación, 200 Colapso
Multiplicidad, 199 ángulos, 49
Parametrizaciones, 197 Coon, superficie, 209
Representación gráfica, 199 Cordal error, 77
Bézier Cubos MinMax, 105
Curvas de, 183
Delaunay, 113
Búsqueda de puntos, 96
Derivada, B-spline, 199
BAS, lenguaje, 144
Derivada, NURBS, 204
batch, 12
DXF, 36
Bernstein
Polinomios de, 186 Entidad geométrica, 23
Bicúbica, Coon, 210 Error cordal, 77
Boronoi, 113 Espacio euclı́deo, 181
214 ÍNDICE DE MATERIAS

Estructuras de datos, 96 intersecciones, 55


Lenguaje BAS, 144
Ficheros de intercambio, 36
Malla, 13
Generación
Definición, 24
malla, 69
estructurada, 69, 81
Generación frontal, 106
no estructurada, 69
Geometrı́a booleana de sólidos, 23
Suavizado, 115
Gettext
Malla de superficie, 122
Internacionalización, 8
Mapping de superficies, 52
Hermite, 210 MinMax, cubos, 105
Modelos geométricos, 24
IGES, 36
Movimiento nodos, 119
Importación geométrica, 35
MS-Windows, 9
tilde no, 107
Multiplicidad de knots, 199
Inserción de knots, 195
Intercambio geométrico, 36 Normal, NURBS, 208
Interfaz de usuario, 7 NURBS, 181
Interpolación con B-splines, 200 Circunferencia, 204
Interpolación, NURBS, 209 Derivada, 204
Intersección extendida, 112 Interpolación, 209
Intersecciones Lı́neas, 183, 203
lı́neas, 55 Normal, 208
lı́neas-superficies, 55 Pesos, 205
Superficies, 206
Knots
corrección, 40 Octtree, 96
OpenGL, 8
Lı́neas
intersecciones, 55 Pesos, NURBS, 205
subdivisión, 47 Polilı́neas, 29
unión, 45 Polinomios de Hermite, 210
Lı́neas NURBS, 29 Problem type, 140
Lı́neas rectas, 29 Punto, 29
Lı́neas-superficies Puntos cercanos, búsqueda, 96
ÍNDICE DE MATERIAS 215

Puntos coincidentes, Octtree, 102

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

[adoS00] Femap a division of SDRC. http://www.femap.com, 2000.

[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.

[CdSC99] M. Chiumenti, C. Agelet de Saracibar, and M. Cervera. Constitutive modeling and


thermo-mechanical phase-change systems. Technical report, CIMNE, 1999.

[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.

[D.N73] D.N.Knuth. The art of computer programming, Vol. 3. Addison-Wesley, 1973.

[Eng91] PDA Engineering. PATRAN Plus Users Manual. PATRAN division, Costa Mesa,
California, USA, 1991.

[Eng00] ICEM CFD Engineering. http://www.icemcfd.com, 2000.

[Far93] Gerald Farin. Curves and surfaces for CADG. ACADEMIC PRESS, INC., third
edition, 1993.

[Fem00] Femsys Femgen/Femview. http://www.femsys.co.uk, 2000.


218 BIBLIOGRAFÍA

[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.

[GBM95] J M Le Gouez, M A Boheas, and C J Miles. Data requirements for analysis


modelling. Technical report, NAFEMS, 1995.

[Geo91] P. L. George. Automatic Mesh Generation. Application to Finite Element Methods.


Wiley, 1991.

[HL93] Josef Hoschek and Dieter Lasser. Fundamentals of computer aided geometric design.
Addison-Wesley, 1993.

[Hyp00] Altair HyperMesh. http://www.altair.com, 2000.

[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.

[JM98] J. Miquel Canet y E. Oñate J. Mora. Cálculo de campos electrostáticos por el


método de elementos finitos. Technical report, CIMNE, 1998.

[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

[Löh96] R. Löhner. Regridding surface triangulations. Journal of Computational physics,


(126):1–10, 1996.

[Löh97] R. Löhner. Automatic unstructured grid generators. Finite Elements in Analysis


and Design, (25):111–134, 1997.

[LP88] R. Löhner and P. Parikh. Generation of three-dimensional unstructured grids by


the advancing front method. Int. j. numer. methods fluids., (8):1135–1149, 1988.

[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.

[NAF96] NAFEMS. Integrate cad and analysis, 1996.

[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.

[SL95] A. Shostko and R. Löhner. Three-dimensional parallel unstructured grid genera-


tion. Int.J.Num.Meth.Eng., (38):905–925, 1995.
220 BIBLIOGRAFÍA

[ZO93] F. Zarate and E. Oñate. Caltep: Programa para el cálculo transitorio de la ecuación
de poisson. Technical report, CIMNE, 1993.

[ZT93] O. C. Zienkiewicz and R. Taylor. El Método de los Elementos Finitos. Formulación


Básica y Problemas Lineales, volume I. McGraw-Hill, 4a edition, 1993.

[ZT94] O. C. Zienkiewicz and R. Taylor. El Método de los Elementos Finitos. Mecánica de


Sólidos y Fluidos. Dinámica y no Linealidad, volume II. McGraw-Hill, 4a edition,
1994.

Das könnte Ihnen auch gefallen