Sobre las propiedades del método de elementos espectrales ...

90
Universidad de los Andes Proyecto de Grado Sobre las propiedades del m´ etodo de elementos espectrales aplicado a la din´ amica de fluidos Autor: Hayden Liu Weng Asesor: Mauricio Junca, Ph. D. Proyecto de grado presentado para obtener el t´ ıtulo de Matem´ atico en el Departamento de Matem´aticas Enero 2015

Transcript of Sobre las propiedades del método de elementos espectrales ...

Page 1: Sobre las propiedades del método de elementos espectrales ...

Universidad de los Andes

Proyecto de Grado

Sobre las propiedades del metodo deelementos espectrales aplicado a la

dinamica de fluidos

Autor:

Hayden Liu Weng

Asesor:

Mauricio Junca, Ph. D.

Proyecto de grado presentado para obtener

el tıtulo de Matematico en el

Departamento de Matematicas

Enero 2015

Page 2: Sobre las propiedades del método de elementos espectrales ...

Declaracion de propiedad

Yo, Hayden Liu Weng, declaro que este proyecto de grado, titulado ’Sobre las propiedades

del metodo de elementos espectrales aplicado a la dinamica de fluidos’, y el trabajo pre-

sentado en el mismo son mıos. Ademas confirmo que:

� En caso de haber consultado el trabajo de otras personas, este sera referenciado

adecuadamente.

� Se hara una mencion agradeciendo a todas las personas que colaboraron en este

proyecto.

� En caso que parte del trabajo haya sido desarrollada en conjunto con otras per-

sonas, se presentara cual fue el aporte de esas personas.

Firma:

Fecha:

i

22/01/2015

Page 3: Sobre las propiedades del método de elementos espectrales ...

”En todas las actividades es saludable, de vez en cuando, poner un signo de interrogacion

sobre aquellas cosas que por mucho tiempo se han dado como seguras.”

Bertrand Russell

Page 4: Sobre las propiedades del método de elementos espectrales ...

UNIVERSIDAD DE LOS ANDES

Resumen

Facultad de Ciencias

Departamento de Matematicas

Matematico

Sobre las propiedades del metodo de elementos espectrales aplicado a la

dinamica de fluidos

por Hayden Liu Weng

Al momento de trabajar con ecuaciones diferenciales no lineales como la de Navier-

Stokes, usualmente no es posible obtener una solucion analıtica para el campo de ve-

locidades del sistema subyacente. Por este motivo, tradicionalmente se ha usado una

amplia gama de metodos computacionales para obtener soluciones aproximadas. Sin

embargo, muchas veces el algoritmo de solucion tentativo no es aplicable debido a la

falta de informacion, a las geometrıas complejas o simplemente porque su ejecucion re-

sulta bastante lenta. Es por esto que, a medida que aumenta la capacidad de computo

de los ordenadores, ası mismo lo hacen las exigencias de los algoritmos de solucion y la

complejidad de los problemas a resolver.

Particularmente, son de especial interes las familias de metodos espectrales y de ele-

mentos finitos. Por un lado, la primer familia presenta soluciones bastante rapidas (con

convergencia espectral – o mas rapida que cualquier potencia de 1/N), pero que solo son

aplicables a geometrıas sencillas. Por otro lado, la segunda familia permite la solucion

de sistemas con geometrıas esencialmente arbitrarias, a costa de un tiempo mayor de

ejecucion. Tratando de combinar ambas familias de metodos para poder trabajar con

tasas de convergencia altas en geometrıas mas generales, nacen los metodos de elementos

espectrales.

Estos metodos de elementos espectrales buscan dividir el dominio de trabajo en elemen-

tos de geometrıas mas sencillas y aplicar esquemas de solucion por metodos espectrales

en cada elemento, lo cual explica su rapida convergencia y su mayor flexibilidad (en

cuanto al dominio de solucion). Sin embargo, resulta mucho mas complicado generar

una implementacion de este metodo porque es necesario generar todo un nuevo esquema

de analisis geometrico tanto al nivel de cada elemento, como al del dominio completo.

Esto ultimo incluye, ademas, la construccion de los elementos de orden elevado, ası como

la seleccion de una familia de funciones base ortogonales que sea apropiada.

Page 5: Sobre las propiedades del método de elementos espectrales ...

En este proyecto se estudia la teorıa detras del metodo de elementos espectrales, de

manera que sea posible desarrollar la infraestructura para una implementacion particular

del metodo en el lenguaje Python. De esta manera, se busca promover el entendimiento

sobre las caracterısticas mas relevantes en el desarrollo del metodo y hacer mas viable

su aplicacion practica en situaciones reales. Por una parte, se verifican las bondades del

metodo mediante un analisis de convergencia y de la numeracion de los nodos, trayendo

a luz algunas de las ventajas y desventajas del mismo. Por otra, se verifica el codigo

resultante mediante problemas clasicos 1D y 2D. Con estos problemas se compara su

rendimiento con respecto a los resultados reportados en la literatura, ası como contra

alternativas de solucion mas tradicionales. Estas aplicaciones son, en particular, el flujo

de Couette para el caso 1D y el flujo con una cavidad rectangular en el caso 2D. Con

todo esto se prepara un repositorio con las funciones necesarias para implementar el

metodo de elementos espectrales en aplicaciones particulares, el cual se encuentra en:

https://github.com/

Page 6: Sobre las propiedades del método de elementos espectrales ...

Agradecimientos

Agradezco en primer lugar a mi asesor de esta tesis, Mauricio Junca, y a mi asesor del

correspondiente proyecto de grado en Ingenieria Mecanica, Andres Gonzalez, quienes me

orientaron y apoyaron incondicionalmente a lo largo de esta investigacion. Sus aportes,

criticas, comentarios y sugerencias fueron fundamentales para que el proyecto se llevara

a cabo exitosamente.

Agradezco de igual manera a mis jurados de evaluacion, Ahmed Ould y Omar Lopez,

ya que fue la retroalimentacion que recibı de ustedes la que me permitio identificar y

atacar mis puntos debiles y, ası, mejorar la calidad de mi trabajo.

Agradezco a mis profesores de Ingenieria Mecanica y Matematicas, quienes no solo me

formaron academicamente, sino que tambien me ensenaron a ser una persona ıntegra.

Unicamente a traves de las habilidades desarrolladas a lo largo de cada uno de los cursos

fue que se hizo posible llegar hasta donde estoy.

Agradezco a Sergio Bacca y a mis demas companeros del grupo Robocol, pues mas

que un equipo han sido una familia para mı, exigiendome, comprendiendome y estando

permanentemente dispuestos a escucharme.

Agradezco a mi gran amigo Carlos Carvajal, ası como a todas aquellas personas que han

estado conmigo en las buenas y en las malas, pues ha sido con su apoyo que he podido

superar todos los retos a los que me he enfrentado.

Agradezco finalmente a mi familia, quienes me impulsaron a sonar y a llegar mas alla de

lo que alguna vez creı posible. Nada de esto podria haber sido posible sin sus palabras

de aliento, sin sus grandes exigencias y expectativas.

v

Page 7: Sobre las propiedades del método de elementos espectrales ...

Contenidos

Declaracion de propiedad i

Resumen iii

Agradecimientos v

Contenidos vi

Lista de Figuras viii

Lista de Tablas ix

Sımbolos x

1 Introduccion 1

1.1 Motivacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.2 Contexto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.3 Sobre el metodo de elementos espectrales . . . . . . . . . . . . . . . . . . 3

1.4 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2 Las bondades de los Metodos Espectrales 5

2.1 Antecedentes: Metodos Espectrales . . . . . . . . . . . . . . . . . . . . . . 5

2.2 Fundamentos Teoricos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2.2.1 Las ecuaciones de Navier-Stokes . . . . . . . . . . . . . . . . . . . 6

2.2.2 Proyeccion de Galerkin . . . . . . . . . . . . . . . . . . . . . . . . 8

2.2.3 Funciones ortogonales y bases nodales . . . . . . . . . . . . . . . . 9

2.2.4 Familias de Funciones Ortogonales . . . . . . . . . . . . . . . . . . 11

2.2.4.1 Familias de Funciones 1D . . . . . . . . . . . . . . . . . . 11

2.2.4.2 Familias de Funciones 2D . . . . . . . . . . . . . . . . . . 16

2.3 Interpolacion, el termino de error y la convergencia espectral . . . . . . . 18

2.3.1 Las funciones de interpolacion . . . . . . . . . . . . . . . . . . . . 18

2.3.1.1 Interpolacion en 1D . . . . . . . . . . . . . . . . . . . . . 18

2.3.1.2 Interpolacion en 2D . . . . . . . . . . . . . . . . . . . . . 19

2.3.2 El termino de error . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.3.3 Convergencia y la constante de Lebesgue . . . . . . . . . . . . . . 22

vi

Page 8: Sobre las propiedades del método de elementos espectrales ...

Contenidos vii

2.3.4 Convergencia Espectral . . . . . . . . . . . . . . . . . . . . . . . . 24

3 Metodos de elementos finitos y espectrales 29

3.1 Antecedentes: Metodos de Elementos Finitos . . . . . . . . . . . . . . . . 29

3.2 Generacion de la malla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

3.2.1 Generacion de los elementos . . . . . . . . . . . . . . . . . . . . . . 30

3.2.2 Generacion de nodos de interpolacion . . . . . . . . . . . . . . . . 32

3.2.3 Matriz de conectividad . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.3 Construccion de la matriz global y el vector del lado derecho . . . . . . . 33

3.3.1 Matrices por elemento . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.3.2 Matriz de difusion global . . . . . . . . . . . . . . . . . . . . . . . 35

3.3.3 Vector derecho y condiciones de frontera . . . . . . . . . . . . . . . 36

3.4 Diferencias en el sistema resultante: Caso 2D . . . . . . . . . . . . . . . . 37

3.4.1 Elementos quadrilaterales con numeracion XY . . . . . . . . . . . 37

3.4.2 Elementos quadrilaterales con numeracion YX . . . . . . . . . . . 38

3.4.3 Elementos triangulares con numeracion cıclica . . . . . . . . . . . . 39

3.4.4 Comparacion de los resultados . . . . . . . . . . . . . . . . . . . . 41

4 Implementacion en 1D 43

4.1 Flujo de Couette . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

4.2 Solucion por elementos espectrales . . . . . . . . . . . . . . . . . . . . . . 44

4.3 Comparacion de resultados . . . . . . . . . . . . . . . . . . . . . . . . . . 46

5 Implementacion en 2D 48

5.1 Flujo con una cavidad rectangular . . . . . . . . . . . . . . . . . . . . . . 48

5.2 Solucion por elementos espectrales . . . . . . . . . . . . . . . . . . . . . . 49

5.3 Comparacion de resultados . . . . . . . . . . . . . . . . . . . . . . . . . . 54

6 Conclusiones 58

6.1 Comentarios finales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

A Funciones Utilizadas 59

A.1 Implementacion 1D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

A.2 Implementacion 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

Bibliografıa 77

Page 9: Sobre las propiedades del método de elementos espectrales ...

Lista de Figuras

2.1 Aproximacion a la funcion de Runge para distintos ordenes . . . . . . . . 11

2.2 Constantes de Lebesgue calculadas para distintos numeros de nodos y suscotas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.1 Malla ancestral de elementos triangulares con un paso de refinamiento . . 31

3.2 Malla definida por medio de subdivision directa del dominio de solucion . 31

3.3 Diagrama de esparcidad para la matriz de difusion en 1D . . . . . . . . . 36

3.4 Numeracion en el orden XY . . . . . . . . . . . . . . . . . . . . . . . . . . 38

3.5 Patron de esparcidad en el orden XY . . . . . . . . . . . . . . . . . . . . . 39

3.6 Numeracion en el orden YX . . . . . . . . . . . . . . . . . . . . . . . . . . 39

3.7 Patron de esparcidad en el orden YX . . . . . . . . . . . . . . . . . . . . . 40

3.8 Numeracion en el orden cıclico . . . . . . . . . . . . . . . . . . . . . . . . 40

3.9 Patron de esparcidad en la numeracion cıclica . . . . . . . . . . . . . . . . 41

4.1 Diagrama representativo del flujo de Couette generalizado . . . . . . . . . 43

4.2 Distribucion de los elementos y los nodos de interpolacion correspondi-entes a la malla (2,4,6,5,3,1) . . . . . . . . . . . . . . . . . . . . . . . . . . 45

4.3 Diagrama de esparcidad en la matriz del problema . . . . . . . . . . . . . 46

4.4 Soluciones obtenidas para el flujo bajo distintos gradientes de presion . . 47

5.1 Diagrama representativo del flujo en la cavidad . . . . . . . . . . . . . . . 48

5.2 Distribucion de los elementos y los nodos de interpolacion correspondi-entes a la malla con 8 elementos en cada direccion y orden 2 en cadacoordenada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

5.3 Diagrama de esparcidad en la matriz del sistema . . . . . . . . . . . . . . 52

5.4 Solucion obtenida para el flujo en la cavidad con la malla construida . . . 53

5.5 Solucion obtenida para el campo de presiones en la cavidad con la mallaconstruida . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

5.6 Diagrama de esparcidad en la matriz del sistema para el caso YX . . . . . 54

5.7 Malla usada en el sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

5.8 Diagrama de esparcidad en la matriz del sistema triangular . . . . . . . . 55

5.9 Solucion obtenida para el flujo en la cavidad con la malla triangular . . . 56

5.10 Solucion obtenida para el campo de presiones en la cavidad con la mallatriangular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

5.11 Visualizacion reologica para el flujo en la cavidad . . . . . . . . . . . . . . 57

5.12 Solucion obtenida para el flujo en la cavidad en elementos finitos . . . . . 57

viii

Page 10: Sobre las propiedades del método de elementos espectrales ...

Lista de Tablas

2.1 Familias de funciones conocidas en 1D . . . . . . . . . . . . . . . . . . . . 10

2.2 Miembros de la familia de polinomios de Legendre . . . . . . . . . . . . . 12

2.3 Miembros de la familia de polinomios de Lobatto . . . . . . . . . . . . . . 14

2.4 Miembros de la familia de polinomios de Chevyshev . . . . . . . . . . . . 14

2.5 Miembros de la familia de polinomios de Chevyshev del segundo tipo . . . 15

2.6 Miembros de la familia de polinomios de Jacobi . . . . . . . . . . . . . . . 15

2.7 Miembros de la familia de polinomios de Appell . . . . . . . . . . . . . . . 17

2.8 Miembros de la familia de polinomios de Proriol . . . . . . . . . . . . . . 17

2.9 Constantes de Lebesgue para nodos de interpolacion de Lobatto . . . . . 27

3.1 Tiempos medidos para la numeracion XY . . . . . . . . . . . . . . . . . . 38

3.2 Tiempos medidos para la numeracion YX . . . . . . . . . . . . . . . . . . 38

3.3 Tiempos medidos para la numeracion triangular . . . . . . . . . . . . . . . 41

4.1 Errores medidos para distintas mallas . . . . . . . . . . . . . . . . . . . . 47

ix

Page 11: Sobre las propiedades del método de elementos espectrales ...

Sımbolos

Sımbolo Nombre Unidades

C Matriz de conectividad -

Dij Matriz de difusion (o rigidez) -

cp Capacidad termica J/(kg ·K)

f Vector de fuerzas externas N

Gi Autoproducto interno de funciones ortogonales -

k Conductividad termica W/(m ·K)

Mij Matriz de masa -

Nij Matriz de adveccion -

NE Numero de elementos -

NG Numero de nodos globales -

s Termino de entrada o generacion -

t Tiempo s

~u Vector de velocidad m/s

u, v, w Componentes de velocidad en las direcciones x, y, z m/s

w(~x) Funcion de pesos -

δij Delta de Kroenecker -

ξ, η, ζ Coordenadas elementales estandar -

θ Temperatura K

κ Difusividad termica m2/s

ΛN Constante de Lebesgue -

µ Viscosidad Dinamica Pa · sρ Densidad kg/m3

φ Funcion perteneciente a una base ortogonal -

ψ Funcion de interpolacion estandar -

x

Page 12: Sobre las propiedades del método de elementos espectrales ...

Este trabajo es dedicado a todos aquellos que me acompanarondurante este arduo proceso.

xi

Page 13: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 1

Introduccion

Este primer capıtulo busca introducir la motivacion que conduce al trabajo de investi-

gacion presentado, asi como un breve contexto acerca del mismo. De igual manera se

introducen los objetivos del proyecto.

1.1 Motivacion

En la actualidad, uno de los grandes retos de la humanidad es el de entender a cabal-

idad el comportamiento de los fluidos. Lo anterior radica en que solo a partir de este

conocimiento es posible realizar disenos y generar productos que se adapten a las necesi-

dades presentes en toda clase de aplicaciones. Desde la aerodinamica vehicular hasta

la mecanica de biofluidos, entender las propiedades del flujo permite comprender cuales

son los problemas de disenos actuales y como solucionarlos. Ejemplos ilustrativos de

esta necesidad son el diseno de helices de aerogeneradores y la produccion de injertos

vasculares para capilares sanguıneos. En estos casos, conocer como se comporta el flu-

ido con respecto al producto resulta importante porque permitirıa aprovechar mejor las

corrientes de aire y promoverıa la compatibilidad de los dispositivos con los pacientes

respectivamente.

Sin embargo, debido a las geometrıas complejas que se presentan en la practica, rara

vez existen soluciones analıticas y, por lo tanto, se hace necesario el uso de herramientas

computacionales. Estas permiten obtener soluciones aproximadas mediante el uso de

diversos metodos numericos, cada uno con sus ventajas y desventajas. Algunos de los

mas reconocidos son los metodos de diferencias finitas, los de elementos finitos, y los es-

pectrales. Unos son mas faciles de implementar, otros permiten trabajar con geometrıas

mas complejas, y los ultimos buscan ser especialmente rapidos. En particular, uno de

1

Page 14: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 1. Introduccion 2

los grandes requerimientos que se deben satisfacer es el de brindar una respuesta con

poco error en una cantidad de tiempo razonable. Es por ello que los metodos utilizados

evolucionan permamentemente, siendo uno de los grandes retos la minimizacion de este

tiempo de ejecucion.

1.2 Contexto

En general, existen dos maneras que se utilizan para mejorar la operacion de un metodo:

reducir el numero de calculos que requiere, o aumentar la precision del mismo. Para re-

ducir el numero de calculos necesarios es posible preparar y almacenar los resultados que

se utilizaran reiteradamente, de manera que este tiempo no se perciba constantemente a

lo largo de la solucion si no una unica vez durante la aplicacion del metodo. Por el otro

lado, mejorar la precision del metodo implica realizar un refinamiento, a costa de tener

mas operaciones, o alterar el esquema de solucion por uno de convergencia mas rapida.

En todo caso, no hay que olvidar que se requiere que el metodo sea compatible con la

geometrıa con la que se trabaja. Tomando esto en cuenta, actualmente los metodos mas

populares en la practica son los metodos espectrales y los metodos de elementos finitos,

ya que cada uno ataca a uno de estos dos problemas.

Los metodos espectrales se caracterizan por su rapida convergencia en geometrıas sen-

cillas. Para lograr esto, los metodos utilizan distintas familias de funciones ortogonales

para definir tanto los modos como los nodos de la solucion [1]. Esto es, el metodo

permite trabajar con cada funcion de la familia (descripcion modal), o con los nodos

que genera la misma (descripcion nodal). Como el numero de funciones utilizadas en la

solucion final es bastante reducido, el resultado es una solucion bastante rapida [2]. No

obstante, antes de aplicar el metodo es necesario definir la familia de funciones a utilizar,

ya que cada una presenta ventajas segun el tipo de problema. Esto se traduce en una

gran cantidad de procesamiento que se debe realizar antes de entrar a la solucion. Mas

aun, la mayorıa de las familias unicamente estan definidas para trabajar con geometrıas

bastante sencillas.

Por el otro lado, los metodos de elementos finitos se caracterizan por su versatilidad

incluso en geometrıas bastante complejas. Para lograr este resultado, el metodo comienza

por subdividir el dominio de solucion en una serie de elementos de geometrıa sencilla.

Esto hace que la solucion en cada uno de los elementos sea sencilla y que el problema

radique en acoplar la informacion de nodos comunes [3]. Una vez se organizan los nodos

y sus interacciones, el resto de la solucion es bastante sencilla, por lo que no se requiere

mayor procesamiento antes de entrar a solucionar el sistema completo. En contraste,

Page 15: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 1. Introduccion 3

como la solucion en cada elemento usualmente no es particularmente precisa, el metodo

acaba por presentar tasas de convergencia mas lentas.

1.3 Sobre el metodo de elementos espectrales

En vista de lo anterior, un metodo que combina las ventajas de ambos es el metodo

de elementos espectrales. De manera sencilla, este metodo consiste en la discretizacion

del dominio en elementos y la solucion por metodos espectrales en cada uno [1]. De

esta manera, el enmallado permite conservar la versatilidad de los metodos de elementos

finitos, mientras que la solucion por metodos espectrales en cada elemento preserva la

convergencia espectral. Es por estas virtudes que, para un mismo numero de elementos,

el resultado final presenta errores mucho menores que en metodos tradicionales. De

hecho, este error cae exponencialmente [3], por lo que la complejidad computacional, ası

como la cantidad de procesos y la velocidad de los mismos, son mucho menores que en

metodos comparables. Estos metodos son estudiados ampliamente en [4, 5].

Ahora bien, es importante notar que este metodo no trae unicamente ventajas. La

implementacion de este tipo de metodo requiere la utilizacion de elementos de orden

elevado, lo cual significa que es necesario definir las funciones a partir de las cuales se

definen los nodos intermedios. En particular, como se indico para los metodos espec-

trales, estas funciones deben formar una familia ortogonal que ademas sea apropiada

para el esquema de solucion planteado [3], ya que solo ası se asegura la convergencia

del metodo. Por otra parte, el metodo de elementos espectrales requiere que el acople

entre los distintos elementos se realice de una manera sencilla para que el sistema global

resultante sea facil de solucionar, algo que depende fuertemente de la manera en que se

realice el proceso de enmallado.

1.4 Objetivos

Objetivo General:

Estudio de los fundamentos detras de la implementacion del metodo de elementos es-

pectrales que permita desarrollar un codigo en el lenguaje Python capaz de operar sobre

problemas basicos en dinamica de fluidos.

Objetivo Especıficos:

• Descripcion detallada de los fundamentos teoricos del metodo de elementos espec-

trales que permita identificar los retos existentes en la implementacion del mismo.

Page 16: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 1. Introduccion 4

• Analisis de la convergencia del metodo bajo distintas condiciones de operacion que

demuestren sus ventajas y desventajas.

• Generacion de aplicaciones del metodo en 1D y 2D que sean consistentes con

soluciones analıticas clasicas como el flujo de Couette generalizado (1D) o el flujo

en una cavidad cuadrada (2D).

• Analisis del efecto sobre la solucion de distintos esquemas de numeracion de los

nodos que permita identificar formas de mejorar la operacion del metodo (tiempos

de ejecucion y solucion).

• Creacion y documentacion de un repositorio Git publico que permita a otros usuar-

ios utilizar las funciones desarrolladas en sus propias implementaciones.

Page 17: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 2

Las bondades de los Metodos

Espectrales

Para comenzar a trabajar sobre el metodo de elementos espectrales es fundamental

considerar primero los antecedentes que condujeron al mismo. De acuerdo con lo que se

menciono anteriormente, tradicionalmente se han usado (en la practica) los metodos de

diferencias finitas, de volumenes finitos, de elementos finitos o los metodos espectrales

entre otros. Sin embargo, si bien cada uno de ellos trae sus ventajas y desventajas

particulares, se estudian mas detalladamente los metodos espectrales y los de elementos

finitos. Esto radica en que justamente son estas dos familias las que dan a lugar al

metodo a desarrollar.

En este capıtulo se discuten particularmente los metodos espectrales y las caracterısticas

que son relevantes para los metodos de elementos espectrales. En particular se mencio-

nan los componentes y fundamentos teoricos principales de los metodos, culminando

en una comprobacion de su caracter estable de convergencia espectral. El Capıtulo 3

aplica estos conceptos en la optica de los elementos finitos para comenzar a desarrollar

formalmente la implementacion de los metodos de elementos espectrales.

2.1 Antecedentes: Metodos Espectrales

Los metodos espectrales reciben su nombre debido a las altas tasas de convergencia que

tiene el error de truncado (la tasa es espectral, o mas rapida que cualquier potencia de

1/N). En este tipo de metodo la idea fundamental corresponde a la aproximacion de las

soluciones a las ecuaciones diferenciales por series finitas de funciones ortogonales, las

cuales provienen de distintos contextos. En particular, este tipo de funcion incluye las

5

Page 18: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 2. Las bondades de los Metodos Espectrales 6

exponenciales complejas (en las series de Fourier) para casos periodicos, o los polinomios

de Chebyshev o Legendre para los casos no periodicos. Debido a esto, las tres elecciones

crıticas a la hora de definir un metodo espectral son las siguientes: la escogencia de

la familia de funciones base sobre las que se van a expandir la solucion, la manera

de describir la expansion (i.e. descripcion nodal y modal) y el proceso con el que se

determinan las incognitas del problema (e.g. colocacion o proyeccion de Galerkin como

parte de una metodologia de residuos ponderados) [1].

Esta familia de metodos ha sido ampliamente estudiada en [1, 2] y ha permanecido rele-

vante por su gran velocidad de solucion. Sin embargo, su mayor limitacion corresponde

a la necesidad de tener una geometria sencilla sobre la cual operar, dado que al tener

dominios con geometrias mas complejas de hace mas dificil mantener las propiedades de

ortogonalidad y suavidad de las funciones en el dominio.

De acuerdo con la primera decision, y como se menciono en la descripcion previa, es

imperativo que las funciones seleccionadas cumplan con un criterio de ortogonalidad (o

por lo menos semi-ortogonalidad) ya que esto es lo que garantiza el caracter espectral

del metodo como se vera a continuacion en la seccion correspondiente. Asi mismo, la

descripcion de la expansion define el tipo de solucionador obtenido y la determinacion

de incognitas define cuan complejo es el problema a resolver finalmente.

2.2 Fundamentos Teoricos

Teniendo una idea gruesa del funcionamiento de estos metodos, es posible entrar a tra-

bajar sobre los fundamentos teoricos de interes para el desarrollo de la implementacion.

Para guiar este proceso, se estudia paralelamente la ecuacion de Navier-Stokes como el

caso de referencia por excelencia. En particular, se profundiza sobre la proyeccion de

Galerkin como forma de obtener una version debil del problema, y en la utilizacion de

familias de funciones ortogonales como bases nodales. Cabe anotar que, si bien una

descripcion modal es tambien posible, no se hara mayor enfasis en la misma.

2.2.1 Las ecuaciones de Navier-Stokes

Las ecuaciones de Navier-Stokes son un conjunto de ecuaciones diferenciales parciales

no lineales de segundo orden que describen el movimientos de un fluido newtoniano (con

viscosidad constante en el tiempo). Dada la alta complejidad del problema en su forma

mas general, en esta ocasion se considera unicamente el caso de densidad constante (i.e.

fluido incompresible) y uniforme [3]. De acuerdo con lo anterior, la formulacion vectorial

Page 19: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 2. Las bondades de los Metodos Espectrales 7

de estas ecuaciones sobre un dominio predeterminado D corresponde a:∂ρ∂t +∇ · (ρ~u) = 0 → ∇ · ~u = 0

ρ(∂~u∂t + ~u · ∇~u

)= ρ~f −∇p+ µ∇2~u

(2.1)

donde ∇· ~u = 0 representa la ecuacion de continuidad que se debe satisfacer en el fluido

para que el problema tenga un sentido fısico. Cabe anotar que esta ecuacion debe estar

sujeta a unas condiciones de fronteras especificas para que la solucion sea efectivamente

unica. Adicionalmente, ∇~u, ∇ · ~u y ∇2~u representan el gradiente, la divergencia y el

laplaciano del vector de velocidad respectivamente. En este sentido, las ecuaciones se

parecen bastante a otro problema de trabajo clasico que se ha estudiado ampliamente:

la ecuacion de conveccion-difusion, que se describe por

∂θ

∂t+ ~u · ∇θ = κ∇2θ +

s

ρcp. (2.2)

Dado que aun en esta formulacion el problema no es facil de solucionar, existen una serie

de consideraciones que se pueden hacer para simplificar esta formulacion [6]. Segun el

problema a trabajar, es posible:

• Eliminar los terminos no lineales (~u · ∇~u ≈ 0) cuando los efectos inerciales son

despreciables, es decir, cuando el numero de Reynolds es significativamente bajo

(Re� 1). Este tipo de flujo tambien se conoce como flujo de Stokes.

• Eliminar los terminos dependientes del tiempo(∂·∂t = 0

)cuando el fluido se en-

cuentra en estado estacionario.

• Asumir que el gradiente de presion es constante (∇p = cte) en flujos completa-

mente desarrollados.

• Despreciar los efectos de las fuerzas externas(ρ~f = 0

)como la gravedad o los

efectos de borde debido a su caracter local-uniforme sobre el dominio completo

(este termino se puede combinar con el gradiente de presion para dar lugar a una

presion modificada).

Para efecto de los casos estudiados, se omite el termino de fuerzas externas al incorpo-

rarlo como un modificador en la presion. Adicionalmente, se indicaran cuales fueron los

supuestos utilizados en cada situacion en la seccion correspondiente. Cabe anotar que se

trabajo inicialmente con la version lineal (omitiendo los efectos inerciales) de los proble-

mas para obtener soluciones menos caoticas y, por lo tanto, mejor caracterizadas. Esto

es, formalmente se presentan aplicaciones correspondientes al flujo de Stokes estable [7],

Page 20: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 2. Las bondades de los Metodos Espectrales 8

descrito por ∇ · ~u = 0

0 = −∇p+ µ∇2~u(2.3)

sobre el mismo dominio D y sujeto a las condiciones de frontera correspondientes.

2.2.2 Proyeccion de Galerkin

De acuerdo con los pasos requeridos para la aplicacion de cualquier metodo numerico,

debe existir algun metodo que permita realizar la transicion del dominio continuo al

dominio discreto. Una de las posibilidades para hacer esto corresponde al metodo de

residuales ponderados (o weighted residuals). En estos casos se analiza el residual re-

sultante de la aproximacion de la funcion objetivo original por su version interpolada

y, de acuerdo con las ecuaciones resultantes, es necesario definir los pesos correspondi-

entes a cada punto de interes. La proyeccion de Galerkin es una de las versiones mas

populares de estos metodos, ya que los pesos se definen justamente con las funciones de

interpolacion correspondientes a los nodos de interes.

Para el caso especıfico de las ecuaciones de Navier-Stokes es importante notar que las

incognitas no corresponden unicamente a las velocidades: tambien es necesario determi-

nar los valores de las presiones. De acuerdo con esto, se definen nodos de interpolacion

de velocidad y de presion, con sus respectivas funciones de interpolacion φui y φpj . Se

usan entonces las funciones de interpolacion de velocidad con la ecuacion de Navier-

Stokes, mientras que las de presion se asignan a la ecuacion de continuidad. El resultado

obtenido son las ecuaciones ∫Dφpi∇ · ~u dV = 0 (2.4)

y ∫Dφui ρ

(∂~u

∂t+ ~u · ∇~u

)dV =

∫Dφui(−∇p+ µ∇2~u

)dV , (2.5)

sobre el dominio del flujo D. Con ayuda de la definicion del operador ∇2 y el teo-

rema de divergencia de Gauss es posible reexpresar el segundo termino de la integral en

Ecuacion 2.5 para obtener en su lugar:∫Dφui (∇2~u) dV =

∫Dφui (∇ · ∇~u) dV

=

∫D∇ · (φui∇~u) dV −

∫D∇φui · ∇~u dV (2.6)

= −∮∂D

φui ~n · ∇~u dS −∫D∇φui · ∇~u dV .

Page 21: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 2. Las bondades de los Metodos Espectrales 9

Similarmente, para el termino de presion de la misma integral en Ecuacion 2.5, se obtiene

que: ∫Dφui∇p dV =

∫D∇(φui p) dV −

∫D∇φui p dV

= −∮∂D

φui p~n dS −∫D∇φui p dV . (2.7)

De esta manera, es posible reescribir finalmente la Ecuacion 2.5, usando los resultados

de Ecuacion 2.6 y Ecuacion 2.7, como:∫Dφui ρ

(∂~u

∂t+ ~u · ∇~u

)dV =

∮∂D

φui p~n dS−µ∮∂D

φui ~n·∇~u dS+

∫D∇φui p dV−µ

∫D∇φui ·∇~u dV .

(2.8)

Esta es una forma general de la ecuacion que se puede aplicar directamente a los casos

particulares estudiados, lo cual arroja como resultado un sistema de ecuaciones a re-

solver. De manera puntual, cuando se trabaja con el flujo de Stokes (despreciando los

terminos no lineales), la ecuacion resultante es:

0 =

∮∂D

φui p~n dS − µ∮∂D

φui ~n · ∇~u dS +

∫D∇φui p dS − µ

∫D∇φui · ∇~u dV . (2.9)

2.2.3 Funciones ortogonales y bases nodales

Finalmente, es necesario mencionar la ultima eleccion importante en los metodos es-

pectrales: la seleccion de la familia ortogonal a usar. Para este efecto se introduce el

producto interno < ·, · >w estandar con pesos en el espacio de funciones integrables.

Definicion 2.1. Dadas dos funciones f1, f2 integrables en el intervalo [c, d] y una funcion

de pesos positiva w(x), se dice que las funciones son ortogonales (con respecto a w(x))

si:

< f1, f2 >w:=

∫ d

cf1(x)f2(x)w(x) dx =

Gi si i = j

0 si i 6= j

donde Gi 6= 0.

De acuerdo con esta definicion, dada cualquier base del espacio de funciones integrables

en un intervalo [c, d] fijo, es posible construir una familia de funciones ortogonales me-

diante el proceso de Gram-Schmidt. De este modo, existe una infinidad de posibles

familias, aunque no todas son particularmente utiles para los metodos espectrales. La

Tabla 2.1 presenta las familias ortogonales mas conocidas para el caso unidimensional, y

Page 22: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 2. Las bondades de los Metodos Espectrales 10

Familia Sımbolo [c, d] w(t) GiChevyshev Ti(t) [−1, 1] 1√

1−t2 G0 = π,Gi = π2

Chevyshev segundo tipo Ti(t) [−1, 1]√

1− t2 π2

Hermite Hi(t) (−∞,∞) exp(−t2)√π2ii!

Jacobi J(α,β)i (t) [−1, 1] (1− t)α(1− t)β (*)

Laguerre Li(t) [0,∞) exp(−t) (i!)2

Legendre Li(t) [−1, 1] 1 22i+1

Lobatto Loi(t) [−1, 1] 1− t2 2(i+1)(i+2)2i+3

Radau Ri(t) [−1, 1] 1 + t 2i+1

(*) Gi = 2α+β+1

i!Γ(i+1+α)Γ(i+1+β)

(2i+1+α+β)Γ(i+1+α+β)

Tabla 2.1: Familias de funciones conocidas en 1D (Adaptado de [3])

el Capıtulo 2.2.4 las descripciones formales de las mismas. Para los metodos a desarrol-

lar, las familias mas relevantes son las de polinomios de Lobatto (Tabla 2.3) y Chevyshev

de segundo tipo (Tabla 2.5). Por su parte, en el caso bidimensional hay dos situaciones.

Para dominios cuadrilaterales, los polinomios usados son productos tensoriales de los

polinomios unidimensionales, de manera que no vale la pena mencionarlos nuevamente.

Mientras tanto, para dominios triangulares, las familias mas conocidas son las de Appell

y Proriol [8].

El gran interes de usar estas familias radica en que, al satisfacer la propiedad de ortogo-

nalidad sobre todo el dominio, esencialmente se tiene una base del espacio, permitiendo

asi describir exactamente cualquier funcion, particularmente las funciones de interpo-

lacion. Sin embargo, dado que los recursos de calculo que se tienen son limitados, no es

posible considerar a todos los miembros de la familia (o modos), si no unicamente a los

primeros miembros. Es por eso que se buscan familias donde la magnitud de los modos

subsguientes tienda a 0 para cualquier funcion de interes [1].

Mas aun, si los nodos de interpolacion coninciden con los ceros de estas familias, se

obtiene una ubicacion estrategica de los mismos que hace que el sistema se comporte

bien y no sufra de efectos como las oscilaciones de Runge. Este efecto se representa en la

Figura 2.1, donde un mayor orden de interpolacion no se corresponde una mejor aprox-

imacion a la funcion debido a los picos hacia los extremos (para nodos de interpolacion

uniformemente espaciados).

Puntualmente, los casos ideales corresponden a las familias que buscan minimizar la

norma del error o de la constante de Lebesgue (definida a continuacion). Para el caso uni-

dimensional estas corresponden justamente a los puntos de Chevyshev y Fekete (equiv-

alentes a los nodos de Lobatto) respectivamente. Estas tienen la propiedad, como se

Page 23: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 2. Las bondades de los Metodos Espectrales 11

Figura 2.1: Aproximacion a la funcion de Runge para distintos ordenes

demostrara mas adelante, de que

‖ψi(ξ)‖ ≤ 1 y ‖ψi(ξ, η)‖ ≤ 1 ∀ξ, η (2.10)

en 1D y 2D respectivamente, con igualdad unicamente en el caso ξ = ξi, η = ηi (donde

ξi o (ξi, ηi) corresponden a las coordenadas del i-esimo nodo de interpolacion). Esto se

traduce en que el crecimiento de la funcion de interpolacion se ve acotado, y por lo tanto

se asegura una rapida convergencia en la interpolacion con respecto al orden polinomial

de la misma, como se vera en la seccion siguiente.

2.2.4 Familias de Funciones Ortogonales

De acuerdo con lo anterior, esta subseccion presenta una breve descripcion de las famil-

ias de polinomios mas usadas tanto en 1D como en 2D (para dominios triangulares).

Adicional a esto, se presentan los primeros miembros y las formulas generales para estos

polinomios.

2.2.4.1 Familias de Funciones 1D

En el caso de funciones 1D se mencionan especıficamente las familias de polinomios de

Legendre, Lobatto, Chevyshev (primer y segundo tipo) y Jacobi.

Page 24: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 2. Las bondades de los Metodos Espectrales 12

Polinomios de Legendre

Los polinomios de Legendre se definen naturalmente como las soluciones de las ecua-

ciones diferenciales

d

[(1− ξ2) d

dξLn(ξ)

]+ n(n+ 1)Ln(ξ) = 0, (2.11)

con n ∈ N y son comunes en el contexto de la ecuacion de Laplace. La ortogonalidad de

estos polinomios viene dada por el hecho de que tambien son el resultado de aplicar el

proceso de Gram-Schmidt sobre la base canonica 1, x, x2, . . . con una funcion de pesos

w(ξ) = 1 [18]. De acuerdo con lo anterior,∫ 1

−1Li(t)Lj(t) dt =

2

2i+ 1δij . (2.12)

Esta propiedad implica en particular que∫ 1−1 Li(t) dt = 0 (usando j = 0). Asi mismo,

dada la procedencia de estas funciones se tiene que |Li(t)| ≤ 1 ∀t ∈ [−1, 1].

Polinomios de Legendre

L0(ξ) = 1L1(ξ) = ξL2(ξ) = 1

2(3ξ2 − 1)L3(ξ) = 1

2(5ξ2 − 3)ξL4(ξ) = 1

8(35ξ4 − 30ξ2 + 3)L5(ξ) = 1

8(63ξ4 − 70ξ2 + 15)ξL6(ξ) = 1

16(231ξ6 − 315ξ4 + 105ξ2 − 5)L7(ξ) = 1

16(429ξ6 − 693ξ4 + 315ξ2 − 35)ξ. . .

Li(ξ) = 12ii!

di

dξi(ξ2 − 1)i

Tabla 2.2: Primeros miembros de la familia de polinomios de Legendre (Adaptado de[3])

Para el calculo de los polinomios de interpolacion en 2D, particularmente de los miembros

de grado 3 de la familia de Proriol, son de interes los polinomios de Legendre de la forma

Lk

(2ξ1−η − 1

).

Page 25: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 2. Las bondades de los Metodos Espectrales 13

A continuacion se presentan los polinomios usados:

L0

(2ξ

1− η− 1

)= 1

L1

(2ξ

1− η− 1

)=

1− η− 1 =

2ξ + η − 1

1− η

L2

(2ξ

1− η− 1

)=

1

2(3

(2ξ

1− η− 1

)2

− 1) =6ξ2 + 6ξη + η2 − 6ξ − 2η + 1

(1− η)2

L3

(2ξ

1− η− 1

)=

1

2(5

(2ξ

1− η− 1

)2

− 3)

(2ξ

1− η− 1

)=

(2ξ + η − 1)(10ξ2 + 10ξη + η2 − 10ξ − 2η + 1)

(1− η)3(2.13)

Polinomios de Lobatto

Estos polinomios se pueden obtener a partir de los de Legendre mediante la relacion

Loi(ξ) = L′i+1(ξ). Es por esto que muchas de las propiedades que presentan los poli-

nomios de Legendre son heredadas por los polinomios de Lobatto. Sin embargo, en este

caso la funcion de pesos deja de ser la funcion unitaria y pasa a ser w(ξ) = 1 − ξ2. La

ortogonalidad se sigue entonces mediante la integracion por partes, la definicion dada

por la Ecuacion 2.11, y la ortogonalidad de los polinomios de Legendre:

< Loi, Loj >w =

∫ 1

−1Loi(t)Loj(t)(1− t2) dt

=

∫ 1

−1L′i+1(t)L

′j+1(t)(1− t2) dt

=[L′i+1(t)(1− t2)Lj+1(t)

]1−1 −

∫ 1

−1Lj+1(t)

(L′i+1(t)(1− t2)

)′dt

= 0 + (i+ 1)(i+ 2)

∫ 1

−1Li+1(t)Lj+1(t)(1− t2) dt

=2(i+ 1)(i+ 2)

2i+ 3δij . (2.14)

Particularmente, se observa nuevamente que∫ 1−1 Loi(t)(1− t

2)dt = 0 (usando j = 0).

Polinomios de Chevyshev

Los polinomios de Chevyshev (del primer tipo) surgen a partir de la solucion de las

ecuaciones diferenciales

(1− ξ2) d2

dξ2Tn(ξ)− ξ d

dξTn(ξ) + n2Tn(ξ) = 0, (2.15)

Page 26: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 2. Las bondades de los Metodos Espectrales 14

Polinomios de Lobatto

Lo0(ξ) = 1Lo1(ξ) = 3ξLo2(ξ) = 3

2(5ξ2 − 1)Lo3(ξ) = 5

2(7ξ2 − 3)ξLo4(ξ) = 15

8 (21ξ4 − 14ξ2 + 1)Lo5(ξ) = 1

8(693ξ4 − 630ξ2 + 105)ξLo6(ξ) = 1

16(3003ξ6 − 3465ξ4 + 945ξ2 − 35). . .

Loi(ξ) = 12i+1(i+1)!

di+2

dξi+2 (ξ2 − 1)i+1

Tabla 2.3: Primeros miembros de la familia de polinomios de Lobatto (Adaptado de[3])

con n ∈ N y son especialmente valiosos en la interpolacion de funciones al minimizar el

error de interpolacion en funciones continuas (bajo la norma del supremo, o ‖·‖∞). Esto

es, aun con funciones como las de Runge no son susceptibles al fenomeno de oscilacion

y acaban por converger uniformemente a la funcion a interpolar [3]. En particular, se

observa que los polinomios 2−(n−1)Tn(t) tienen la mınima norma posible entre todos

los posibles polinomios de su mismo orden en el intervalo [−1, 1] [18]. En este caso, la

funcion de pesos corresponde a w(ξ) = 1√1−ξ2

de acuerdo con su relacion a las funciones

trigonometricas.

Polinomios de Chevyshev

T0(ξ) = 1T1(ξ) = ξT2(ξ) = 2ξ2 − 1T3(ξ) = 4ξ3 − 3ξT4(ξ) = 8ξ4 − 8ξ2 + 1T5(ξ) = 16ξ5 − 20ξ3 + 5ξ. . .Ti(ξ) = cos(i arccos ξ) = 2i−1ξi − i2i−3ξi−2 + . . .

Tabla 2.4: Primeros miembros de la familia de polinomios de Chevyshev (Adaptadode [3])

Polinomios de Chevyshev del segundo tipo

Para los polinomios del segundo tipo la situacion es similar. Los polinomios son la

solucion de la ecuacion diferencial

(1− ξ2) d2

dξ2Tn(ξ)− 3ξ

d

dξTn(ξ) + n(n+ 2)Tn(ξ) = 0, (2.16)

con n ∈ N, y pesos w(ξ) =√

1− ξ2.

Page 27: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 2. Las bondades de los Metodos Espectrales 15

Polinomios de Chevyshev del segundo tipo

T0(ξ) = 1T1(ξ) = 2ξT2(ξ) = 4ξ2 − 1T3(ξ) = 8ξ3 − 4ξT4(ξ) = 16ξ4 − 12ξ2 + 1T5(ξ) = 32ξ5 − 32ξ3 + 6ξ. . .

Ti(ξ) = sin((i+1) arccos ξ)sin(arccos ξ)

Tabla 2.5: Primeros miembros de la familia de polinomios de Chevyshev del segundotipo

Polinomios de Jacobi

Estos polinomios, tambien conocidos como polinomios hipergeometricos, se construyen

como las soluciones de la ecuacion diferencial de Jacobi [18]. Al depender de dos

parametros adicionales α, β > −1, dan a lugar a familias mucho mas variadas. De hecho,

las anteriores familias son casos particulares de los polinomios de Jacobi mediante las

relaciones [3]:

Li(ξ) = J(0,0)i (ξ) (2.17)

Loi(ξ) =i+ 2

2J(1,1)i (ξ) (2.18)

Ti(ξ) =i!√π

Γ(i+ 1/2)J(−1/2,−1/2)i (ξ) (2.19)

Ti(ξ) =i!√π

2Γ(i+ 3/2)J(1/2,1/2)i (ξ) (2.20)

Polinomios de Jacobi

J(α,β)0 (ξ) = 1

J(α,β)1 (ξ) = 1

2(α+ β + 2)ξ + 12(α− β)

J(α,β)2 (ξ) = 1

8(α+ β + 3)(α+ β + 4)ξ2 + 14(α− β)(α+ β + 3)ξ

+18 [(α− β)2 − (α+ β + 4)]

J(α,β)3 (ξ) = 1

48(α+ β + 4)(α+ β + 5)(α+ β + 6)ξ3 + 116(α− β)(α+ β + 4)(α+ β + 5)ξ2

+ 116(α+ β + 4)[(α− β)2 − (α+ β + 6)]ξ + 1

48(α− β)[(α− β)2 − (3α+ 3β + 16)]. . .

J(α,β)i (ξ) = (−1)i

2ii!(1− t)−α(1 + t)−β di

dξi((1− t)i+α(1 + t)i+β)

Tabla 2.6: Primeros miembros de la familia de polinomios de Jacobi (Adaptado de[3])

Page 28: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 2. Las bondades de los Metodos Espectrales 16

Para el calculo de los polinomios de Proriol de orden 3 son de interes los polinomios de

Jacobi de la forma J(2k+1,0)l (2η−1). A continuacion se presentan los polinomios usados:

J(7,0)0 (2η − 1) = 1

J(5,0)1 (2η − 1) =

7

2(2η − 1) +

5

2= 7η − 1

J(3,0)2 (2η − 1) =

21

4(2η − 1)2 +

9

2(2η − 1) +

1

4= 21η2 − 12η + 1

J(1,0)3 (2η − 1) =

35

8(2η − 1)3 +

15

8(2η − 1)2 − 15

8(2η − 1)− 3

8= 35η3 − 45η2 + 15η − 1

(2.21)

2.2.4.2 Familias de Funciones 2D

Para el caso bidimensional triangular el numero de familias especialmente conocidas y

relevantes son mucho mas reducidas. En este caso se menciona unicamente las familias

de Appell y Proriol. Por simplicidad en la notacion, se introduce la tercer coordenada

baricentrica ζ := 1− ξ − η.

Polinomios de Appell

Estos polinomios se conciben como una generalizacion simetrica con respecto a ξ y η

de los polinomios de Jacobi a dos dimensiones [8]. Si bien estos polinomios no son

formalmente ortogonales segun la Definicion 2.1, sı satisfacen la siguiente propiedad de

ortogonalidad parcial/incompleta (respecto a la funcion de pesos unitaria (w(ξ, η) = 1):∫∫Tξpηq Akl(ξ, η) dξdη = 0, ∀p, q : p+ q < k + l. (2.22)

(En este caso T representa el triangulo estandar definido entre los vertices (0, 0), (1, 0)

y (0, 1)). Esta propiedad se puede demostrar por integracion directa, como se observa

en [3]. Esto es, el polinomio Akl(ξ, η) es ortogonal a cualquier polinomio de orden

estrictamente menor que k+ l, ya que es ortogonal a cualquier monomio ξpηq, p+ q <

k + l que se presente. En particular, es ortogonal a Apq(ξ, η). Reversando los roles de

los ındices k, l y p, q, se concluye entonces que los polinomios Akl(ξ, η) son ortogonales

a todo otro polinomio Aij(ξ, η) excepto cuando k + l = i+ j.

Aunque se pueden generalizar a un conjunto de polinomios completamente ortogonales

acordes a la definicion dada, estos nuevos polinomios pierden varias de las propiedades

que originalmente los hacen utiles en el calculo de funciones de interpolacion.

Page 29: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 2. Las bondades de los Metodos Espectrales 17

Polinomios de Appell

A00(ξ, η) = 1A10(ξ, η) = ζ − ξ = 1− 2ξ − ηA01(ξ, η) = ζ − η = 1− ξ − 2ηA20(ξ, η) = 2ζ(ζ − 4ξ) + 2ξ2

A11(ξ, η) = ζ(ζ − 2ξ − 2η) + 2ξηA02(ξ, η) = 2ζ(ζ − 4η) + 2η2

. . .

Akl(ξ, η) = ∂k+l

∂ξk∂ηl

(ξkηlζk+l

)Tabla 2.7: Primeros miembros de la familia de polinomios de Appell (Adaptado de

[3])

Polinomios de Proriol

Por su parte, los polinomios de Proriol son ortogonales en su totalidad, haciendolos

especialmente atractivos para construir las funciones de interpolacion requeridas para

las soluciones por metodos espectrales. De manera concreta, para la implementacion

del caso m = 3 con un dominio triangular (i.e. con polinomios de orden hasta 3, o con

10 nodos de interpolacion) se calculan manualmente de manera explıcita los terminos

de orden hasta 3 de acuerdo con los polinomios calculados anteriormente para Legendre

(en la Ecuacion 2.13) y Jacobi (en la Ecuacion 2.21).

Polinomios de Proriol

P00(ξ, η) = 1P10(ξ, η) = ξ − ζ = 2ξ + η − 1P01(ξ, η) = 3η − 1P20(ξ, η) = 6ξ2 + 6ξη + η2 − 6ξ − 2η + 1P11(ξ, η) = (2ξ + η − 1)(5η − 1)P02(ξ, η) = 10η2 − 8η + 1P30(ξ, η) = (2ξ + η − 1)(10ξ2 + 10ξη + η2 − 10ξ − 2η + 1)P21(ξ, η) = (6ξ2 + 6ξη + η2 − 6ξ − 2η + 1)(7η − 1)P12(ξ, η) = (2ξ + η − 1)(21η2 − 12η + 1)P03(ξ, η) = 35η3 − 45η2 + 15η − 1. . .

Pkl(ξ, η) = Lk

(2ξ1−η − 1

)(1− η)kJ

(2k+1,0)l (2η − 1)

Tabla 2.8: Primeros miembros de la familia de polinomios de Proriol

Page 30: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 2. Las bondades de los Metodos Espectrales 18

2.3 Interpolacion, el termino de error y la convergencia

espectral

Teniendo claras la forma que se va a trabajar de la ecuacion de Navier-Stokes y que

familias de funciones se usaran tanto para los casos 1D y 2D, es necesario entrar a con-

siderar formalmente la manera de construir y manipular las funciones de interpolacion.

Esto comprende tambien tener mas claras algunas de las familias mas prominentes. Una

vez es claro lo anterior, es posible entrar a tratar con termino de error. Ya con esto,

finalmente se puede analizar la convergencia resultante.

2.3.1 Las funciones de interpolacion

Si bien existen distintos tipos de funciones de interpolacion, las mas comunes son las poli-

nomiales debido a su mayor facilidad para ser operadas (e.g. derivacion o integracion).

Particularmente, es tambien importante notar que los polinomios de interpolacion es-

tandar (i.e. definidos sobre los dominios estandar) de un orden determinado son unicos

para un conjunto de nodos apropiado. Es por esto que se puede asegurar una alta consis-

tencia y repetibilidad independientemente de la forma de caracterizarlos y construirlos.

Sin embargo, de acuerdo con la necesidad que exista, la manera de aproximarse puede

llegar a facilitar o dificultar su procesamiento.

2.3.1.1 Interpolacion en 1D

Para el caso unidimensional, tıpicamente existen dos maneras de construir las funciones

de interpolacion. Estas son las diferencias divididas de Newton y los polinomios de

interpolacion de Lagrange. La primera es especialmente util en contextos de exploracion

o cuando se requiere un procesamiento recursivo de los datos, de manera que es posible

estimar facilmente el error en funcion de los puntos que no se hayan incluido todavia.

Sin embargo, esto mismo hace que la implementacion sea ligeramente mas complicada

y que no sea tan facil de operar. De manera general, si la funcion a interpolar es f(x),

su formulacion se puede expresar a partir de

ψn(x) = b0 + b1(x− x0) + · · ·+ bn(x− x0)(x− x1) · · · (x− xn−1), (2.23)

Page 31: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 2. Las bondades de los Metodos Espectrales 19

donde bi = f [xi, xi−1, . . . , x1, x0] y se definen recursivamente

f [xj ] = f(xj)

f [xj+1, xj ] =f [xj+1]−f [xj ]xj+1−xj

· · ·

f [xj+k, xj+k−1, . . . , xj ] =f [xj+k,xj+k−1,...,xj+1]−f [xj+k−1,xj+k−2,...,xj ]

xj+k−xj

.

Esta definicion hace evidente su naturaleza recursiva y la necesidad que construir las

funciones de interpolacion de ordenes menores.

Por su parte, la interpolacion de Lagrange permite obtener de una manera rapida y

directa la funcion resultante dados los nodos y sus valores respectivos. Esto significa un

numero menor de calculos requeridos y, por lo tanto una mayor velocidad de calculo.

En este caso, se observa que

ψn(x) =

n∑i=0

f(xi)`ni (x) =

n∑i=0

f(xi)

n∏j=0j 6=i

ξ − ξjξi − ξj

. (2.24)

En este caso `ni (x) :=∏nj=0j 6=i

ξ−ξjξi−ξj corresponde al polinomio de Lagrange, que satisface

`i(xj) = δij . Esta forma no solo permite un calculo mucho mas directo de los polinomios,

si no que permite operarlos de una manera mucho mas facil (usando reglas de derivacion

de productos o, inclusive, derivacion logarıtmica), como se refleja en el Capıtulo 4 y en

el Capıtulo 5.

2.3.1.2 Interpolacion en 2D

Para el caso bidimensional, la situacion no siempre resulta tan sencilla. Unicamente para

distribuciones especiales es posible factorizar la funcion de interpolacion de manera que

cada factor dependa exclusivamente de una de las coordenadas. En estos casos, cada uno

de los factores se acaba comportando como una funcion de interpolacion unidimensional

y, por lo tanto, se puede tratar como se describio en el apartado anterior. Ejemplos de

esto son distribuciones en mallas para dominios cuadrados (u otros cuadrilateros) y la

distribucion uniforme en el triangulo.

Para el caso del cuadrado, si la funcion a interpolar es f(ξ, η) y los nodos de interpolacion

son (ξi, ηj) ∀i ∈ {0, 1, . . . ,m}, j ∈ {0, 1, . . . , n} (para un total de (m + 1)(n + 1) nodos

Page 32: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 2. Las bondades de los Metodos Espectrales 20

de interpolacion), el resultado se puede describir como:

ψ(ξ, η) =m∑i=0

n∑j=0

f(ξi, ηj)`mi (ξ)`nj (η) =

m∑i=0

n∑j=0

f(ξi, ηj)

m∏k=0k 6=i

ξ − ξkξi − ξk

n∏l=0l 6=j

η − ηkηj − ηk

.

(2.25)

Por el contrario, para los casos mas generales es necesario utilizar una estrategia difer-

ente. En estos casos se tienen nodos de interpolacion (ξ1, η1), (ξ2, η2), . . . , (ξN , ηN ) y se

busca construir primero las funciones para cada nodo tales que ψ∗i (ξj , ηj) = δij y, por lo

tanto ψ(ξ, η) =∑N

i=1 f(ξi, ηi)ψ∗i (ξ, η). Estas funciones se ven de la forma

ψ∗i (ξ, η) = cNφ1(ξ, η) + cN−1φ2(ξ, η) + · · ·+ c1φN (ξ, η) (2.26)

donde N es el numero de nodos, y los φj son miembros de una base polinomial apropi-

ada. Para describir este problema mas facilmente, se utiliza la matriz de Vander-

monde generalizada (Vφij = φi(ξj , ηj)) de manera que, si ~c = (cN , cN−1, . . . , c1)T , ~ei =

(0, 0, . . . , 1, . . . , 0)T el i-esimo vector canonico, φ(ξ, η) = (φ1(ξ, η), φ2(ξ, η), . . . , φN (ξ, η))

y ψ∗(ξ, η) = (ψ∗1(ξ, η), ψ∗2(ξ, η), . . . , ψ∗N (ξ, η)), entonces:

V Tφ · ~c = ~ei ⇔ ~c = V T

φ−1 · ~ei

⇔ ψ∗i (ξ, η) = φ(ξ, η) · V Tφ−1 · ~ei

⇔ ψ∗(ξ, η) = Vφ−1 · φ(ξ, η)

⇔ Vφ · ψ∗(ξ, η) = φ(ξ, η) (2.27)

de acuerdo con [3]. Esta ultima, la Ecuacion 2.27, representa un sistema lineal que

permite describir a ψ∗i mediante la regla de Cramer por:

ψ∗i (ξ, η) =Det [Vφ(ξ1, η1, ξ2, η2, · · · , ξi−1, ηi−1, ξ, η, ξi+1, ηi+1, · · · , ξN , ηN )]

Det [Vφ(ξ1, η1, ξ2, η2, · · · , ξN , ηN )]. (2.28)

En este caso la matriz del numerador corresponde a sustituir la i-esima columna por las

mismas funciones pero evaluadas en (ξ, η) en lugar de (ξi, ηi).

2.3.2 El termino de error

Se observa que, en general, el error del metodo viene dado en su mayor parte por el error

en la interpolacion. Esto sucede por que el error de calculo es cuantificable y dependi-

ente de la tecnologıa usada y, adicionalmente, es posible realizar una integracion exacta

(con respecto a la funcion interpolada) bajo una cuadratura adecuada. Es por ello que

Page 33: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 2. Las bondades de los Metodos Espectrales 21

en esta seccion se trabaja sobre el termino de error correspondiente especıficamente a la

interpolacion, y sobre la constante de Lebesgue. Estos dos valores caracterizan el com-

portamiento y, en particular, la convergencia del metodo. Por su mayor facilidad para

ser descrito, se trabaja exclusivamente con el caso unidimensional, pero los resultados

se pueden extender al caso bidimensional naturalmente.

Si la funcion a interpolar es f(x) ∈ CN+1([c, d]) y el polinomio resultante de la inter-

polacion es PN (x) al usar los nodos x0, x1, . . . , xN , se observa que el termino de error,

definido por

e(x) = PN (x)− f(x), (2.29)

pertenece a CN+1([c, d]) y se puede reescribir como:

e(x) = −f(N+1)(ξ)

(N + 1)!ΦN+1(x) (2.30)

donde ΦN+1(x) =∏Ni=0(x− xi) con ξ ∈ (c, d).

Esta nueva descripcion de la funcion de error proviene de considerar la funcion

Q(z) = ΦN+1(z)e(x)− ΦN+1(x)e(z), (2.31)

donde x es el punto de interes sobre el que se calcula el error (diferente a los nodos

de interpolacion, donde el error es 0). Esta funcion tiene al menos N + 2 raices corre-

sponientes a z = x, x0, x1, . . . , xN , de manera que Q(N+1)(z), la (N + 1)-esima derivada,

tiene al menos una raiz, que se denota por ξ. Escrito explicitamente, esto quiere decir

que

0 = Q(N+1)(ξ) = Φ(N+1)N+1 (ξ)e(x)− ΦN+1(x)e(N+1)(ξ). (2.32)

Ahora, si se deriva N+1 veces la definicion del error mediante la Ecuacion 2.29, el

resultado, notando que P(N+1)N (x) = 0, es

e(N+1)(x) = −f (N+1)(x). (2.33)

Usando la Ecuacion 2.33 y recordando que Φ(N+1)N+1 (ξ) = (N + 1)!, la Ecuacion 2.32 se

vuelve

0 = (N + 1)!e(x)− ΦN+1(x)(−f (N+1)(x))⇒ e(x) = −f(N+1)(ξ)

(N + 1)!ΦN+1(x), (2.34)

como se queria.

Page 34: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 2. Las bondades de los Metodos Espectrales 22

2.3.3 Convergencia y la constante de Lebesgue

Teniendo clara la manera en que se puede tratar el termino de error, es necesario dotar

al espacio de funciones continuas con una norma para entrar a discutir sobre la nocion

de convergencia. En este caso, se usara la norma del maximo ‖f‖ = maxx∈[c,d] |f(x)|.Al considerar esta norma, es sabido [3] que entre los polinomios de orden N existe

un polinomio POptN (x) (no necesariamente de interpolacion para los nodos dados) que

minimiza el error ‖e(x)‖ = ‖POptN (x) − f(x)‖. A este error se le conoce como error

minimax y se denota tambien por ρN [f(x)].

Trabajando sobre las funciones f(x) tales que ‖f‖ = 1, se obtiene entonces que:

‖e(x)‖ = ‖PN (x)− f(x)‖

= ‖(PN (x)− POptN (x)) + (POptN (x)− f(x))‖

≤ ‖(PN (x)− POptN (x))‖+ ‖(POptN (x)− f(x))‖

= ‖(PN (x)− POptN (x))‖+ ρN [f(x)]

≤ ‖PN‖ · ‖f(x)− POptN (x))‖+ ρN [f(x)]

= (1 + ‖PN‖)ρN [f(x)], (2.35)

con ‖PN‖ := max‖f‖=1 (‖PN (x)‖). Este resultado se puede obtener tambien mediante

una aplicacion particular del Lema de Lebesgue, dando como resultado:

‖PN (x)− f(x)‖ ≤ (1 + ‖PN‖) infQN∈PN

‖QN (x)− f(x)‖ = (1 + ‖PN‖)ρN [f(x)], (2.36)

siendo PN el espacio de polinomios de orden menor o igual a N [9]. Para caracterizar

el termino ‖PN‖, se introduce lo que se conoce como la constante de Lebesgue.

Lema 2.2. (de Lebesgue en la Teorıa de la Aproximacion [3]) Dado un espacio vectorial

normado (V, ‖ · ‖), un subespacio U ⊆ V y P una proyeccion lineal en U . Para cada

v ∈ V se satisface:

‖v −Pv‖ ≤ (1 + ‖P‖) infu∈U‖v − u‖.

Si se consideran los polinomios de Lagrange de orden N (i.e. con N + 1 nodos de

interpolacion) correspondientes a los nodos xi (denotados por `Ni (x) como antes), se

puede definir la funcion de Lebesgue por

LN (x) :=N∑i=0

|`Ni (x)|, (2.37)

Page 35: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 2. Las bondades de los Metodos Espectrales 23

y el maximo valor que alcanza como

ΛN := max(LN (x)), (2.38)

conocido como la constante de Lebesgue. Esta constante depende unicamente de las

posiciones de los nodos de interpolacion y se relaciona con el termino anterior, ‖PN‖, de

acuerdo con:

‖PN‖ = max‖f‖=1,x

(‖PN (x)‖)

= max‖f‖=1,x

(∣∣∣∣∣N∑i=0

f(xi)`Ni (x)

∣∣∣∣∣)

≤ max‖f‖=1,x

(N∑i=0

|f(xi)||`Ni (x)|

)

≤ maxx

(N∑i=0

|`Ni (x)|

)= max

x(LN )

= ΛN (2.39)

Combinando la Ecuacion 2.35 con la Ecuacion 2.39, el resultado final es

‖e(x)‖ ≤ (1 + ΛN )ρN [f(x)]. (2.40)

Con respecto a esta formulacion, los teoremas de Jackson y Erdos presentan cotas para

el error minimax y para la constante de Lebesgue respectivamente [3]. Particularmente,

el primer teorema de Jackson indica que:

Teorema 2.3. (Primer Teorema de Jackson [3]) Dada una funcion f(x) ∈ C([c, d]) tal

que ‖f‖ = 1, el error minimax se puede acotar por:

ρN [f(x)] ≤(

1 +π2

2

)max

|x−y|≤1/N|f(x)− f(y)|. (2.41)

De esta manera, si la funcion resulta ser de Holder con exponente α (i.e. |f(x)−f(y)| ≤A|x − y|α para constantes A,α > 0), el error minimax decrece a una tasa de al menos

1/Nα. Por otra parte, la cota inferior propuesta por Erdos corresponde a:

Teorema 2.4. (Teorema de Erdos [9]) Dada una funcion f(x) ∈ C([c, d]) tal que ‖f‖ =

1, su constante de Lebesgue asociada esta acotada por:

ΛN >2

πln(N + 1)− c, (2.42)

Page 36: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 2. Las bondades de los Metodos Espectrales 24

siendo c > 0 una constante.

Esto ultimo indica que la misma tendera a crecer inevitablemente a tasas por lo menos

logarıtmicas. De acuerdo con esto, el error convergera (uniformemente) en la medida en

que el crecimiento de la constante de Lebesgue sea menor a la tasa de decrecimiento del

error minimax.

2.3.4 Convergencia Espectral

Teniendo ya claros los conceptos de error y de la constante de Lebesgue, es posible entrar

a considerar las maneras de minimizar el error (a partir de la seleccion de los nodos de

interpolacion). Si bien definir los nodos de interpolacion como los ceros de los polinomios

de Chevyshev permite minimizar la norma (como se observa en el Capıtulo 2.2.4), estos

ceros no incluyen los extremos del intervalo. Ahora, aunque en metodos espectrales esto

no genera inconvenientes, al hablar de metodos de elementos espectrales es necesario que

existan nodos compartidos en las fronteras, garantizando la continuidad de las soluciones

entre dominios adjacentes (i.e. elementos adjacentes) [3]. Es por esto que al justificar la

utilizacion de los metodos espectrales en la practica se habla tambien de los puntos de

Fekete (que en el caso unidimensional coinciden con los nodos de interpolacion ubicados

en los ceros de Lobatto completados).

Teorema 2.5. Para una funcion f(x) definida sobre un intervalo [a, b] Holder con ex-

ponente α > 12 , los polinomios de interpolacion PN (x) definidos por los nodos correspon-

dientes a los ceros de los polinomios de Lobatto completados con (x0 = −1 y xN = 1)

convergen (i) uniforme y (ii) exponencialmente a f .

Para comprobar este resultado en su totalidad, se requiere obtener una cota bastante

refinada, la cual es dificil de construir. Sin embargo, para observar la convergencia

uniforme basta con construir una cota mas sencilla, por lo que se tratara primero solo

esta parte.

Prueba. (i) (Adaptada de [3]) Para comenzar, si el dominio de trabajo [c, d] no corre-

sponde al dominio de los polinomios de Lobatto, se utiliza el cambio de coordenadas

x =d+ c

2+ t

d− c2

, (2.43)

de manera que x ∈ [c, d] para t ∈ [−1, 1]. Particularmente, los nodos de interpolacion

x0 = c y xN = d se ven asignados a los valores t0 = −1 y tN = 1. Ahora bien, para

Page 37: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 2. Las bondades de los Metodos Espectrales 25

estos nodos t0, t1, . . . , tN es posible definir las funciones de Lagrange `Ni (t). Con esta

definicion se puede observar que las funciones satisfacen la propiedad adicional

`Ni′(ti) = 0 ∀i ∈ {1, 2, . . . , N − 1}, (2.44)

solo si los puntos intermedios corresponden a los ceros de los polinomios de Lobatto.

Como se tiene que

`Ni′(ti) =

Φ′′N+1(ti)

2Φ′N+1(ti)⇒ Φ′′N+1(ti) = 0, (2.45)

donde Φ′′N+1 representa un polinomio de orden N − 1 que satisface

(t− 1)(t+ 1)Φ′′N+1(t) = N(N + 1)ΦN+1(t)⇒ Φ′′N+1(t) = −N(N + 1)ΦN+1(t)

1− t2. (2.46)

La Ecuacion 2.46 se puede reescribir como la ecuacion diferencial

(1− t2)Φ′′N+1(t) +N(N + 1)ΦN+1(t) = 0 (2.47)

cuyas soluciones, comparado con las definiciones del Capıtulo 2.2.4, son justamente los

polinomios de la forma

ΦN+1(t) = cN+1(t2 − 1)L′N (t) = cN+1(t

2 − 1)LoN−1(t). (2.48)

para cN+1 una constante, de manera que los ceros corresponden justamente a los de

Lobatto.

Ahora bien, procedieron realmente a la convergencia, se define el polinomio de orden 2N

G2N (t) := `N02(t) + `N1

2(t) + · · ·+ `NN

2(t)− 1. (2.49)

Esta funcion satisface que G2N (ti) = 0, lo que a su vez implica que se puede factorizar

en

G2N (t) = ΦN+1(t)ΨN−1(t) (2.50)

con ΨN−1(t) un polinomio de orden N −1. Al derivar la funcion se obtiene tambien que

G′2N (t) = 2

N∑i=0

`Ni (t)`Ni′(t), (2.51)

de modo que se tiene que G′2N (ti) = 0 para los nodos intermedios (de t2 hasta tN−1).

Esto quiere decir que estos valores son raices dobles, o que el polinomio desconocido

Page 38: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 2. Las bondades de los Metodos Espectrales 26

ΨN−1(t) se puede expresar como

ΨN−1(t) = dΦN+1(t)

(t+ 1)(t− 1)= −dΦN+1(t)

1− t2, (2.52)

con d una constante. Esto a su vez significa que la funcion original corresponde a,

reemplazando la Ecuacion 2.52 en la Ecuacion 2.50:

G2N (t) = ΦN+1(t)

(−dΨN+1(t)

1− t2

)= −d

Ψ2N+1(t)

1− t2= −e(1− t2)Lo2N−1(t), (2.53)

con e una nueva constante. Si se deriva la ecuacion anterior el resultado es, evaluando

en tN = 1:

G′2N (tN ) = 2eLo2N−1(t) = 2e

(1

2N(N + 1)

)=

1

2N2(N + 1)2. (2.54)

Para calcular el valor exacto de la constante se evalua entonces la derivada G′2N (t)

(descrita por Ecuacion 2.51) en tN = 1.

G′2N (tN ) = 2`NN′(tN ) =

Φ′′N+1(tN )

Φ′N+1(tN )=

([(t2 − 1)LoN−1(t)]

′′

[(t2 − 1)LoN−1(t)]′

)t=tN

=L′N (tN )

LN (tN ), (2.55)

donde los ultimos pasos corresponden a la Ecuacion 2.48 y la ecuacion diferencial que

satisfacen los polinomios de Legendre (Capıtulo 2.2.4). De acuerdo con la construccion

de estos polinomios, se tiene finalmente que

L′N (tN )

LN (tN )=LoN−1(tN )

LN (tN )=

12N(N + 1)

1=

1

2N(N + 1). (2.56)

Comparando este valor con la Ecuacion 2.54 se observa que e = 1N(N+1) . Al introducir

este valor en la Ecuacion 2.53 se puede notar que

G2N (t) = − 1

N(N + 1)(1− t2)Lo2N−1(t) ≤ 0 ∀t ∈ [−1, 1]. (2.57)

Este ultimo resultado se traduce directamente en que

N∑i=0

`Ni (t)2 ≤ 1⇒ `Ni

2(t) ≤ 1 i = 0, 1, . . . , N ⇒ |`Ni (t)| ≤ 1 i = 0, 1, . . . , N . (2.58)

Usando la desigualdad de Cauchy-Schwartz, esto se traduce en la cota superior para la

constante de Lebesgue:

Λ2N =

(N∑i=0

|`Ni (ξ)|

)2

≤N∑i=0

|`Ni (ξ)|2 ≤ N + 1⇒ ΛN ≤√N + 1. (2.59)

Page 39: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 2. Las bondades de los Metodos Espectrales 27

N ΛN N ΛN N ΛN

1 1.000 6 1.874 11 2.2412 1.250 7 1.972 12 2.2923 1.500 8 2.046 13 2.3424 1.636 9 2.121 14 2.3915 1.779 10 2.180 15 2.430

Tabla 2.9: Constantes de Lebesgue para nodos de interpolacion de Lobatto

Combinando esto con la Ecuacion 2.41 se deduce que, como la funcion es Holder con

α > 1/2:

‖e(x)‖ ≤(

1 +√N + 1

) A

Nα∼ K

√N

N→∞→ 0, (2.60)

siendo K una constante. Esto muestra entonces la convergencia uniforme de los poli-

nomios de aproximacion, dado que el error definido aquı corresponde justamente al

maximo de los errores a lo largo del dominio de definicion.

(ii) En cuanto a la convergencia espectral, como se menciono anteriormente, es necesario

refinar la cota. Empıricamente se puede observar la manera en que varıa la constante de

Lebesgue para esta distribucion, como se presenta en la Tabla 2.9. Esta tabla muestra

los valores de ΛN calculados para valores pequenos de N , a partir de los cuales se puede

apreciar que la constante no parece crecer mucho mas alla de la cota propuesta por

Erdos. De hecho, [10, 11] muestran que la constante de Lebesgue para esta distribucion

se puede acotar por

ΛN ≤2

πln(N + 1) + 0.685. (2.61)

Tomando en cuenta esta nueva cota, la Figura 2.2 presenta de manera grafica las con-

stantes de Lebesgue con sus respectivas cotas superiores (logarıtmica y raiz).

Al combinar el resultado obtenido junto con la Ecuacion 2.41, se obtiene finalmente que

‖e(x)‖ ≤(

1 +

(2

πln(N + 1) + 0.685

))A

Nα∼ K lnN

Nα, (2.62)

en el cual se puede apreciar una tasa de convergencia mayor a cualquier potencia 1/Nβ.

Es decir, se presenta una tasa de convergencia exponencial o espectral [3].

De manera complementaria, al pasar a dos (o mas) dimensiones, nuevamente se presentan

los puntos de Fekete como las posiciones optimas para la escogencia de los nodos de

interpolacion, como se aprecia en [10, 12]. Sin embargo, para el caso triangular le siguen

de cerca las mallas de nodos generados a partir de los polinomios de Chevishev del

segundo orden y de Lobatto para ordenes no muy altos, de acuerdo con lo presentado

en [12].

Page 40: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 2. Las bondades de los Metodos Espectrales 28

Figura 2.2: Constantes de Lebesgue calculadas para distintos numeros de nodos ysus cotas

Page 41: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 3

Metodos de elementos finitos y

espectrales

Teniendo ya los fundamentos teoricos correspondientes a una solucion espectral, es posi-

ble plantear mas puntualmente los pasos necesarios para obtener una implementacion

de un metodo por elementos, ya sea de elementos finitos o espectrales. Estos pasos

corresponden puntualmente a la generacion de la malla de nodos de interpolacion y a

la construccion de las matrices globales del problema (la cual se construye a partir de

las matrices correspondientes a cada elemento). En este sentido, el presente capıtulo

describe extensivamente cada uno de estos pasos y toma en consideracion las diferencias

que pueden surgir a raiz de una nomenclatura distinta para los nodos. En el Capıtulo 4

y el Capıtulo 5 se presentan los ejemplos de aplicacion de esta infraestructura.

3.1 Antecedentes: Metodos de Elementos Finitos

Los metodos de elementos finitos han sido ampliamente acogidos para ser usados en

una gran variedad de aplicaciones debido a su alta versatilidad. Estos metodos son,

en principio, aplicables en casi cualquier tipo de geometria y para casi cualquier tipo

de problema o ecuacion (aunque funcionan mejor en problemas del tipo de la ecuacion

de difusion, que en problemas del tipo de la ecuacion de conveccion [3]). Su nombre

proviene del hecho de que en lugar de trabajar sobre el dominio de solucion completo di-

rectamente, se utilizan unidades sencillas (tıpicamente polıgonos o polihedros convexos)

llamadas elementos finitos. En particular, ejemplos populares de discretizaciones in-

cluyen el refinamiento sucesivo de una malla maestra, o la triangulacion de Delaunay.

Las mallas resultantes son estructurada y no estructurada (que permite la adicion o

remocion de elementos sin afectar necesariamente a los otros nodos o su numeracion)

29

Page 42: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 3. Metodos de elementos finitos y espectrales 30

respectivamente. Debido a lo anterior, las elecciones cruciales a la hora de definir un

metodo de elementos finitos (y que no se mencionaron al tratar con los metodos espec-

trales) son las siguientes: la escogencia de los nodos de interpolacion o la definicion de

la malla, la manera de numerar los nodos ina vez se define la malla, y la manera en que

se ensamblan los elementos en la matriz del problema [13].

Esta familia de metodos ha sido ampliamente estudiada en [13, 14] y ha sido la her-

ramienta fundamental en la mayorıa de los software de simulacion numerica. Sin em-

bargo, su mayor limitacion corresponde a la sensibilidad con respecto a la definicion de

la malla (distintas mallas significan distintos tiempos de solucion) y a la necesidad de

tiempos extensos para lograr altas precisiones. Esto es, para alcanzar una cierta pre-

cision, se puede requerir un alto numero de elementos, lo cual a su vez se traduce en

largos tiempos de solucion (ya que su tasa de convergencia suele ser del orden de 1/Nk

[3]).

3.2 Generacion de la malla

Como se expreso previamente, el componente principal de cualquier metodo de solucion

por elementos, que adicionalmente marca la precision y calidad de la solucion, corre-

sponde a la generacion de la malla de nodos con respecto a los cuales se trabaja. A

excepcion del caso lineal, en que los nodos se encuentran unicamente en los vertices

de las fronteras entre elementos, esto se realiza en dos pasos: primero se definen los

elementos a usar y posteriormente se construye en cada uno de ellos la totalidad de

los nodos de interpolacion. Sin embargo, dado que es necesario identificar nodos co-

incidentes entre elementos adjacentes para implementar las condiciones de frontera, se

utiliza un recurso adicional. Este se denomina matriz (o tabla) de conectividad y per-

mite relacionar la numeracion global que reciben los nodos, con la numeracion interna

o local a cada elemento. A continuacion se trata cada uno de estos puntos de manera

independientemente.

3.2.1 Generacion de los elementos

En general, la construccion de los elementos se puede realizar de distintas maneras,

siendo las mas populares las indicadas anteriormente (usando mallas ancestrales que se

van refinando o la triangulacion de Delaunay y sus equivalentes en otros dominios [3])

y el uso de la geometrıa del dominio completo (cuando el mismo no es muy complejo).

La primera alternativa, el uso de una malla ancestral, suele no ser ideal pues, ademas

de que se requiere la definicion de los elementos ancestrales, su crecimiento es bastante

Page 43: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 3. Metodos de elementos finitos y espectrales 31

limitado (i.e. se subdivide cada elemento de una misma manera, resultando en una malla

cuyos numeros de elementos son un multiplo de la cantidad de elementos preexistentes).

A modo de ejemplo, si la malla original consta de 8 elementos triangulares sobre un

dominio rectangular, y el paso de refinamiento consiste en construir nuevos elementos

tomando los puntos medios de las fronteras de los elementos definidos previamente, el

numero de elementos se multiplica por 4 y, por lo tanto, siempre se tiene una potencia

de 2 como numero de elementos (asi como de divisiones en cada dimension (Figura 3.1).

Figura 3.1: Malla ancestral de elementos triangulares con un paso de refinamiento

Otra estrategia de construccion, especialmente adecuada para dominios de geometrias

no muy complejas, corresponde a la subdivision uniforme de la malla. Es decir, realizar

un proceso similar al anterior, pero directamente sobre la totalidad del dominio. En este

caso, la malla se puede refinar por distintas cantidades sobre cada dimension, haciendo

la malla resultante mucho mas versatil (e.g. con mas divisiones sobre la dimension de

mayor longitud). La Figura 3.2 presenta dos ejemplos de enmallado para un sistema

rectangular.

Figura 3.2: Malla definida por medio de subdivision directa del dominio de solucion

Finalmente, la estrategia de construccion de mallas no estructuradas conocida como

triangulacion de Delaunay es adecuada para dominios generales. En este caso se definen

primero los vertices de los elementos y, a partir de ellos, se construyen los elementos

correspondientes. Sin embargo, por el numero adicional de procesos que se requieren,

Page 44: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 3. Metodos de elementos finitos y espectrales 32

toma un tiempo mas largo que el de las estrategias anteriores. Una implementacion

de esta discretizacion se encuentra en [3]. se evitano es apta y el uso de mallas no

estructuradas.

En todo caso, de acuerdo con la malla definida, es posible que se afecte no solo la facil-

idad de resolucion del sistema, si no propiedades intrinsecas de la solucion, incluyendo

la anisotropıa (i.e. dependencia en la orientacion del elemento). Para asegurar que la

solucion es fisicamente viable, se requiere satisfacer la continuidad de la misma a traves

de los elementos. Esto se garantiza mediante la seleccion de una serie de nodos compar-

tidos entre elementos adjacentes, incluyendo los vertices de los elementos. Esto se debe

a que es justamente a traves de estos nodos que se acopla el sistema global para dar

lugar a la solucion unica para la malla.

3.2.2 Generacion de nodos de interpolacion

Conociendo el numero de elementos y su distribucion, es posible generar los nodos de

interpolacion sobre cada elemento. De acuerdo con el Capıtulo 2, las ubicaciones ideales

para estos nodos corresponden justamente a los ceros de las familias de polinomios or-

togonales. Mas aun, como se deben incluir nodos de frontera compartidos para asegurar

las condiciones de continuidad, se prefieren familias como las de Lobatto sobre las de

Chevyshev o Legendre (para el caso unidimensional). Como aun bajo esta restriccion

existen un gran numero de posibles definiciones, en [15] se estudian diferentes posibili-

dades y sus consecuencias respectivas. De acuerdo con lo anterior y al Tabla 2.5 (junto

con sus analogos para mas dimensiones), el caso ideal corresponde a los nodos de inter-

polacion de Fekete. Estos coinciden justamente con los de Lobatto para el caso 1D y

para el caso 2D con dominios cuadrilaterales (ya que los nodos se obtienen a partir de

productos tensoriales de desarrollos provenientes del caso 1D).

Adicionalmente, en el caso de estudio (las ecuaciones de Navier-Stokes) se cuenta con

dos conjuntos de nodos de interpolacion (en velocidad y en presion), aunque el sistema

correpondiente a la ecuacion diferencial parcial se encuentra proyectado sobre los nodos

de interpolacion de velocidad unicamente. Esto significa que es necesario definir los

nodos de interpolacion para ambos casos, pero solo para los nodos de velocidad es

necesario garantizar completamente la continuidad de la funcion, por razones que se

discutiran en la seccion siguiente. De hecho, es necesario que se satisfaga la ecuacion:

2(NuG)i

NpG

> 1, (3.1)

donde (NuG)i corresponde a los nodos de interpolacion internos, o que no estan sobre la

frontera del dominio completo. De este modo, si se utiliza un nodo de interpolacion de

Page 45: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 3. Metodos de elementos finitos y espectrales 33

presion por elemento (i.e. esencialmente se toma la presion promedio del elemento), la

condicion indica que los nodos de interpolacion para velocidad deben ser por lo menos

cuadraticos.

3.2.3 Matriz de conectividad

Una vez se definen los nodos, la matriz de conectividad se construye sencillamente recor-

riendo ordenadamente cada uno de los nodos en cada uno de los elementos, y verificando

si el nodo ya existe en la lista. Esto es, en cada pasada se asigna el numero correspondi-

ente, o se agrega el nuevo nodo. Es de especial interes notar que la identificacion de los

nodos tiene en cuenta que un mismo nodo puede tener coordenadas ligeramente distintas

en distintos elementos debido a errores de precision o calculo, por lo cual es importante

definir una toleracia de identificacion de nodos coincidentes (generalmente una fraccion

del paso mas pequeno entre nodos consecutivos.

3.3 Construccion de la matriz global y el vector del lado

derecho

Para la construccion de la matriz global del problema es necesario primero terminar de

reducir los resultados de las Ecuacion 2.4 y Ecuacion 2.9 a una expresion que dependa

exclusivamente de los nodos de interpolacion. Para ello, recordando que el gradiante de

la funcion de velocidad se puede reexpresar mediante ∇~u =∑Nu

Gj=1(∇φuj )~uj , el resultado

es:

0 =

NuG∑

j=1

~uj ·∫Dφpi∇φ

uj dV (3.2)

0 =

NpG∑

j=1

pj

∮∂D

φui φpj dS − µ

NuG∑

j=1

~uj

∮∂D

φui ~n · ∇φuj dS

+

NpG∑

j=1

pj

∫D∇φui φ

pj dV − µ

NuG∑

j=1

~uj

∫D∇φui · ∇φuj dV (3.3)

donde el ultimo termino corresponde a la matriz de difusion Duij , es decir:

Duij =

∫D∇φui · ∇φuj dV . (3.4)

Ahora bien, si se aplican condiciones de frontera de Dirichlet sobre toda la frontera

del dominio, los primeros dos terminos de la ultima ecuacion se vuelven identicamente

Page 46: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 3. Metodos de elementos finitos y espectrales 34

0 para las funciones de interpolacion de los nodos internos. Esto quiere decir que el

sistema final se encuentra formado entonces por

0 = µ

NuG∑

j=1

Duij~uj −

NpG∑

j=1

~Ajipj , (3.5)

con ~Aji =∫D∇φ

ui φ

pj dV o, para el caso bidimensional:

~Aji = (Axij , Ayij) =

(∫D

∂φui∂x

φpj dA,

∫D

∂φui∂y

φpj dA

). (3.6)

Reescribiendo esto en forma se sistema lineal, el resultado en entonces:

µDu 0 −ATx

0 µDu −ATy−Ax −Ay 0

·

ux1...

uxNuG

uy1...

uyNuG

p1...

pNpG

= 0 (3.7)

Como las presiones estan presentes en 2(NuG) ecuaciones de este sistema, que adicional-

mente se reducen a 2(NuG)i al implementar las condicionesde frontera, se requiere que

2(NuG)i > Np

G para que el sistema efectivamente tenga solucion. Habiendo definido lo

anterior, es posible proceder a construir las matrices son respecto a las cuales se plantea

numericamente el problema original.

3.3.1 Matrices por elemento

Para la generacion de la matriz global del problema es necesario definir primero cada

una de las matrices correspondientes por cada elemento. En el caso 1D esto corresponde

a las matrices de masa y de difusion (o rigidez) por cada elemento. Respectivamente, se

tienen:

Θij =

∫ 1

−1ψi(ξ)ψj(ξ)dξ Ψij =

∫ 1

−1

dψidξ

dψjdξ

dξ, (3.8)

Page 47: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 3. Metodos de elementos finitos y espectrales 35

que se presentan en su forma adimensional ya que el valor de la integral original no

depende de la ubicacion del elemento, y el tamano del mismo se puede incorporar pos-

terirmente mediante las relaciones A(l)ij = 2

hlΨij y B

(l)ij = hl

2 Θij .

Similarmente, para el caso 2D se tienen las matrices de difusion/rigidez y masa, asi

como una matriz nueva: la matriz de adveccion. Segun el tipo de elemento, en este caso

usualmente no es posible llegar a una construccion adimensional ya que la integracion

puede ser sensible a la posicion y la orientacion de los elementos (asi como al tamano).

Las ecuaciones en este caso son:

A(`)ij =

∫∫E`

∇ψ(`)i ·∇ψ

(`)j dxdy B

(`)ij =

∫∫E`

ψ(`)i ψ

(`)j dxdy C

(`)ij =

∫∫E`

ψ(`)i ~u·∇ψ(`)

j dxdy,

(3.9)

respectivamente.

Para su calculo se hace necesario determinar los gradientes de las funciones de interpo-

lacion. Para ello, se utilizan las funciones de interpolacion (ψi(ξ, η)), sus derivadas con

respecto a ξ y a η,(∂ψi(ξ,η)

∂ξ , ∂ψi(ξ,η)∂η

)y tambien el jacobiano correspondiente al cambio

de coordenadas (x, y)↔ (ξ, η), o los terminos de la forma:

∂x

∂ξ,∂x

∂η,∂y

∂ξ,∂y

∂η.

Todo esto hace posible calcular los gradientes de las funciones de interpolacion mediante

el sistema lineal 2× 2 [3]: (∂x∂ξ

∂y∂ξ

∂x∂η

∂y∂η

)∇ψi =

(∂ψi

∂ξ

∂ψi

∂ξ

)(3.10)

Finalmente, para el calculo de la integral se utilizan tipicamente cuadraturas de Gauss

para el tipo de dominio correspondiente.

3.3.2 Matriz de difusion global

Para la construccion de la matriz global basta con sumar los efectos de cada una de las

matrices por elemento. Sin embargo, es importante notar que la matriz original siempre

va a ser singular, ya que las matrices por elemento son, por construccion, singulares.

Aun asi, este problema se puede solucionar facilmente con la remocion de una fila y

una columna del sistema (usualmente las primeras o las ultimas) donde la condicion de

frontera indique un valor conocido o al menos una restriccion que permita deducir su

valor de manera posterior.

Page 48: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 3. Metodos de elementos finitos y espectrales 36

Para el caso unidimensional, se puede observar que los unicos nodos compartidos son los

extremos de los intervalos, de manera que se obtienen patrones de esparcidad correspon-

dientes a bloques unidos por sus elementos extremos (como en el caso de la Figura 3.3).

Por su parte, el caso 2D es mas sensible a estas consideraciones, como se observa en la

seccion siguiente.

Figura 3.3: Diagrama de esparcidad para la matriz de difusion en 1D

3.3.3 Vector derecho y condiciones de frontera

En el lado derecho se incorporan los terminos adicionales del problema, incluyendo la

funcion de entrada y posibles terminos dependientes del tiempo en casos no estacionarios.

En el caso de la ecuacion de Navier-Stokes, esto corresponde a los terminos derivados

de la presion, las cargas externas y la dependencia en el tiempo. Es importante rescatar

que implementar las condiciones de frontera significa modificar, o bien a la matriz del

problema, o bien a este vector. Esto puede ser dandole un valor nuevo (frontera de

Neumann), o sumando/restando el efecto de los nodos de frontera adjacentes (frontera

de Dirichlet). A modo de ejemplo, para el caso bidimensional con fronteras de Dirichlet

se procede de la siguiente manera si l es un nodo de frontera:

• Sustituir las entradas bi por bi −Dilfl (Incluyo el efecto del nodo

• Cambiar el termino bl por fl

• Igualar las entradas de la fila l y columna l por 0 en la matriz global

Page 49: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 3. Metodos de elementos finitos y espectrales 37

• Reajustar el termino Dll a 1.

siendo D la matriz del problema, ~b el vector del lado derecho y f la funcion evaluada en

el nodo (ξl, ηl).

3.4 Diferencias en el sistema resultante: Caso 2D

Dado que el ancho de banda de la matriz global del problema depende directamente

de la manera en que estan numerados los nodos, es importante analizar cuales efectos

puede tener esta numeracion sobre el tiempo requerido para solucionar el sistema. Esto

es, si las matrices representan un mismo problema, se tendra que llegar a la misma

solucion siempre y cuando los esquemas de solucion sean igualmente precisos, pero no

necesariamente en el mismo tiempo. Si bien la numeracion externa, o de los elementos,

tiende a ser la misma para distintos casos de solucion, es importante notar que es la

numeracion interna de los nodos la que modifica el aspecto de cada uno de los bloques

correspondientes a las matrices por elemento, de manera que se analiza especificamente

este efecto.

Para evaluar los tiempos que toma a cada uno de los tres esquemas de numeracion

(cuadrilateral con numeracion XY y con numeracion YX y triangular con numeracion

cıclica), se utiliza el caso de estudio descrito en el Capıtulo 5. En esta ocasion, se definen

numeros de elementos y ordenes, de manera que las divisiones coincidan y el numero

de nodos sea el mismo en todos los casos. Estas condiciones se refieren a: 24 divisiones

sobre el eje x (de longitud 2.4), 16 divisiones sobre el eje y (de ancho 1.6), y orden 3 en

cada dimension (casos cuadrilaterales) o cada elemento (caso triangular). Para tomar

en cuenta las variaciones que pueden llegar a haber entre distintas corridas del codigo,

se utilizan 40 sistemas en cada caso.

3.4.1 Elementos quadrilaterales con numeracion XY

Esta es la numeracion natural de los nodos siguiendo la convencion fisica XY dentro

de cada elemento, como se ilustra en la Figura 3.4. Para este caso, hay varios saltos

en la numeracion a regiones distintas en la malla, lo que se traduce en un patron de

esparcidad mas disperso (Figura 3.5). Para el caso de estudio indicado previamente, los

tiempos requeridos para las tres operaciones se registran en la Tabla 3.1.

Page 50: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 3. Metodos de elementos finitos y espectrales 38

Figura 3.4: Numeracion en el orden XY

Operacion Tiempo Promedio Desviacion

Definicion de nodos 42.94 0.44Calculo de la matriz 28.57 0.37Solucion del sistema 16.16 0.51

Tiempo Total 87.68 1.08

Tabla 3.1: Tiempos medidos para la numeracion XY

Operacion Tiempo Promedio Desviacion

Definicion de nodos 43.79 0.37Calculo de la matriz 28.54 0.30Solucion del sistema 15.59 0.44

Tiempo Total 87.92 0.89

Tabla 3.2: Tiempos medidos para la numeracion YX

3.4.2 Elementos quadrilaterales con numeracion YX

Esta es la numeracion natural de las matrices siguiendo la convencion ij dentro de cada

elemento, como se ilustra en la Figura 3.6. Para este caso, la numeracion tiende a ser

mas uniforme y los saltos se presentan unicamente al cambiar de fila de elementos. Esto

se traduce en franjas mas largas en el patron de esparcidad (Figura 3.7). Para el caso

de estudio indicado previamente, los tiempos requeridos para las tres operaciones se

registran en la Tabla 3.2.

Page 51: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 3. Metodos de elementos finitos y espectrales 39

Figura 3.5: Patron de esparcidad en el orden XY

Figura 3.6: Numeracion en el orden YX

3.4.3 Elementos triangulares con numeracion cıclica

Esta es una numeracion natural de los nodos triangulares, siguiendo la convencion cıclica

y terminando por los nodos interiores, como se ilustra en la Figura 3.8. Para este caso, el

mayor numero de nodos compartidos resulta en un patron de esparcidad menos ordenado

y se alcanza un ancho de bando mayor en los bloques centrales (Figura 3.9). Para el

Page 52: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 3. Metodos de elementos finitos y espectrales 40

Figura 3.7: Patron de esparcidad en el orden YX

Figura 3.8: Numeracion en el orden cıclico

caso de estudio indicado previamente, los tiempos requeridos para las tres operaciones

se registran en la Tabla 3.3.

Page 53: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 3. Metodos de elementos finitos y espectrales 41

Operacion Tiempo Promedio Desviacion

Definicion de nodos 57.14 0.22Calculo de la matriz 14.11 0.03Solucion del sistema 17.69 0.40

Tiempo Total 88.93 0.60

Tabla 3.3: Tiempos medidos para la numeracion triangular

Figura 3.9: Patron de esparcidad en la numeracion cıclica

3.4.4 Comparacion de los resultados

De acuerdo con lo que se aprecia en cada una de las tablas, si bien las distintas numera-

ciones tienen ventajes significativas en uno u otro componente, los tiempos promedios

que les toma el calculo de la sulcion completa es aproximadamente el mismo. Pun-

tualmente, los nodos mas faciles de generar y graficar corresponden a las numeraciones

XY y YX, ya que estas se pueden obtener rapidamente mediante el uso de la funcion

meshgrid( , ). Por su parte, los elementos triangulares se numeran manualmente y por

lo tanto requieren un tiempo ligeramente mayor (aproximadamente 15 segundos mayor

en este caso). Mas aun, el numero de elementos para el caso triangular es el doble que

en los otros casos, contribuyendo tambien a esta diferencia.

En cuanto a la generacion de la matriz del problema, la situacion se reversa: el tiempo

para la numeracion triangular es casi la mitad del tiempo requerido para los casos XY

y YX. En las numeraciones XY y YX se hacen necesarias una serie de ciclios anidados

para recorrer cada dimension de cada componente (nodos de interpolacion del elemento,

Page 54: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 3. Metodos de elementos finitos y espectrales 42

nodos de la cuadratura) y adicionalmente el uso de multiples condicionales por la forma

de la funcion de interpolacion, ralentizando significativamente la velocidad de solucion.

Por su parte, el caso triangular presenta funciones precalculadas explicitamente, como lo

son los polinomios de Proriol y sus derivadas respectivas. Asi mismo, aun si el numero

de elementos es el doble, la cantidad de operaciones requerida en cada uno es menor.

Por su parte, la solucion de los sistemas es el proceso que tiene menor variacion entre los

tres. Sin embargo, es posible apreciar que la numeracion YX toma un tiempo que alcanza

a ser notablemente (i.e. estadısticamente significativo) menor que el de la numeracion

XY y, a su vez, este ultimo al de la numeracion triangular. Como en este caso el tamano

de los sistemas sigue siendo relativamente pequeno, estos resultados ya significativos

podrian indicar la aparicion de diferencias mucho mayores para tamanos mas grandes.

Page 55: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 4

Implementacion en 1D

4.1 Flujo de Couette

Figura 4.1: Diagrama representativo del flujo de Couette generalizado (Adaptado de[16])

En el flujo de Couette generalizado el fluido se encuentra confinado entre placas planas

paralelas infinitas y esta sometido a un gradiente de presion. Las placas se encuentran

separadas por una distancia constante L y el gradiente de presion se presenta en la

direccion del flujo (paralelo a las placas). Adicionalmente, las velocidades de las placas

son U0 y U1 (en direccion x) respectivamente. Todo esto se refleja en la Figura 4.1.

De acuerdo con este planteamiento, se tienen en cuenta las siguientes consideraciones:

• El flujo se presenta unicamente en la direccion x (v = w = 0).

43

Page 56: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 4. Implementacion 1D 44

• El gradiente de presion al que esta sometido el fluido es constante ( ∂p∂x = p).

• El flujo no depende de la coordenada z ( ∂∂z = 0).

• El fluido se encuentra en estado estacionario ( ∂∂t = 0).

• No hay fuerzas externas afectando el flujo (fx = fy = fz = 0).

De aquı, las ecuaciones de continuidad y de Navier-Stokes se reducen a:

∂ρ

∂t+∇ · (ρ~u) = 0 → ∂u

∂x= 0 (4.1)

ρ

(∂~u

∂t+ ~u · ∇~u

)= ρ~f −∇p+ µ∇2~u → 0 = ρu

∂u

∂x= −p+ µ

∂2u

∂y2(4.2)

En este sentido, la ecuacion resultante es un caso particular del problema de difusion

estable:

kd2f

dx2+ s(x) = 0

Donde k = µ, y s(x) = −p, y las condiciones de frontera corresponden a valores conocidos

(tipo Dirichlet):

u(0) = U0 u(L) = U1

Teniendo esto en cuenta, la solucion analıtica corresponde a

u(y) =∆p

2µ`(y2 − Ly) +

U1 − U0

Ly + U0 (4.3)

4.2 Solucion por elementos espectrales

Ahora, de acuerdo con lo desarrollado en el Capıtulo 2 y el Capıtulo 3, para aplicar el

metodo de elementos espectrales es necesario realizar los siguientes pasos:

• Introduccion de la informacion del problema

• Definicion de los elementos a usar (cantidad NE y distribucion, ası como sus

ordenes NP (i))

– Seleccion de los nodos de interpolacion a usar

– Generacion de la matriz de conectividad

• Generacion del sistema lineal del problema

– Generacion de la matriz de difusion

Page 57: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 4. Implementacion 1D 45

– Generacion del vector b (del lado derecho)

• Solucion del sistema resultante

Como la teorıa detras de cada uno de los mismos se menciono previamente, solo se

mencionan los desarrollos nuevos cuando sean relevantes. En todo caso, los codigos

de las funciones usadas se presentan en el Apendice A. En este caso los parametros a

introducir son µ = 1, ∇p/` ∈ {−40,−20, 0, 20, 40}, L = 2.0, U0 = 0 y U1 = 50. De

acuerdo con esto, los elementos a usar se construyen mediante la separacion en intervalos

uniformes del dominio y los nodos de interpolacion se definen como los puntos de Fekete

o ceros de Lobatto. Una vez se definen los nodos, se utiliza la matriz de conectividad

para almacenar de manera ordenada la numeracion local y global de los mismos.

Figura 4.2: Distribucion de los elementos y los nodos de interpolacion correspondi-entes a la malla (2,4,6,5,3,1)

En este caso, la funcion de entrada corresponde a la constante definida por el gradiente

de presion indicado, asi que es necesario calcular tanto la matriz de difusion como la

de masa. Para la generacion de estas matrices, se utilizan las matrices adimensionales

definidas anteriormente:

Θij =

∫ 1

−1ψi(ξ)ψj(ξ)dξ Ψij =

∫ 1

−1

dψidξ

dψjdξ

Page 58: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 4. Implementacion 1D 46

y se aplica la cuadratura de Lobatto para la construccion de dichas matrices, con lo que

se obtienen los siguientes resultados:

Θ =

Np+1∑p=1

mipmjpwp Ψij =

Np+1∑p=1

dipdjpwp

Figura 4.3: Diagrama de esparcidad en la matriz del problema

Teniendo esto, basta aplicar un esquema de solucion razonable para el tipo de matriz

obtenida. Como el sistema es pequeno, en este caso se utiliza el solucionador por defecto

del modulo scipy.linalg. Dado que los valores para el primer y ultimo nodo son

conocidos, se omiten los valores correspondientes (haciendo la matriz no singular). La

grafica correspondiente se presenta en la Figura 4.4. En la misma se presenta tambien

la grafica de la solucion analıtica, donde la diferencia se debe al elemento lineal usado

en uno de los extremos.

4.3 Comparacion de resultados

Como en este caso la solucion analıtica corresponde a la parabola definida por Ecuacion 4.3,

se puede observar que incluso para un numero bastante reducido de elementos que pueden

tener ordenes bajos la solucion es practicamente exacta. De hecho, como el orden de

esta funcion es cuadratico, distribuciones de elementos cuadraticos alcanzan a capturar

Page 59: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 4. Implementacion 1D 47

Figura 4.4: Soluciones obtenidas para el flujo bajo distintos gradientes de presion

NE \NP 1 2 3 4 5 6

1 25.00 6.25 1.19e− 13 2.03e− 13 4.09e− 13 3.34e− 132 25.00 1.96e− 13 2.74e− 13 2.88e− 13 1.17e− 12 3.38e− 133 25.00 5.04e− 13 4.64e− 13 4.69e− 13 1.22e− 12 5.90e− 134 25.00 9.41e− 13 6.86e− 13 6.54e− 13 1.62e− 12 8.17e− 135 25.00 1.40e− 12 9.84e− 12 1.15e− 12 1.99e− 12 8.95e− 136 25.00 1.95e− 12 1.43e− 12 1.53e− 12 2.45e− 12 1.20e− 127 25.00 2.61e− 12 1.97e− 12 1.95e− 12 2.93e− 12 2.29e− 128 25.00 3.50e− 12 2.25e− 12 2.43e− 12 3.36e− 12 2.98e− 129 25.00 4.44e− 12 2.91e− 12 3.09e− 12 4.22e− 12 3.16e− 12

Tabla 4.1: Errores medidos para distintas mallas

relativamente bien esta solucion al utilizar splines cubicas. La Tabla 4.1 presenta los

errores para distintas mallas, refinando tanto el numero de elementos como sus ordenes.

Page 60: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 5

Implementacion en 2D

5.1 Flujo con una cavidad rectangular

Figura 5.1: Diagrama representativo del flujo en la cavidad

En el flujo con una cavidad rectangular, el fluido se encuentra confinado en una region

rectangular de dimensiones L × W donde el movimiento se debe al desplazamiento

transversal de una de las caras. En este sentido, la velocidad de la cara superior es

de U0 y el de las demas interfaces es de 0. De acuerdo con esto, se tienen las siguientes

consideraciones:

• El flujo se presenta unicamente en las direcciones x y y (w = 0).

• El flujo no depende de la coordenada z ( ∂∂z = 0).

• El fluido se encuentra en estado estacionario ( ∂∂t = 0).

48

Page 61: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 5. Implementacion 2D 49

• No hay fuerzas externas afectando el flujo (fx = fy = fz = 0).

De aquı, las ecuaciones de continuidad y de Navier-Stokes se reducen a:

∂ρ

∂t+∇ · (ρ~u) = 0 → ∂u

∂x+∂v

∂y= 0 (5.1)

ρ

(∂~u

∂t+ ~u · ∇~u

)= ρ~f −∇p+ µ∇2~u →

ρ(u∂u∂x + v ∂u∂y

)= − ∂p

∂x + µ(∂2u∂x2

+ ∂2u∂y2

)ρ(u ∂v∂x + v ∂v∂y

)= −∂p

∂v + µ(∂2v∂x2

+ ∂2v∂y2

)(5.2)

Se puede ver entonces que la ecuacion resultante es un caso particular del problema de

conveccion-difusion estable:

∂f

∂t+ ~u · ∇f = k∇2f +

s

ρcp

Donde ∂f∂t = 0, k = µ

ρ = ν, y scp

= −∂p∂∗ para f = u, ∗ = x y f = v, ∗ = y, y las

condiciones de frontera corresponden a valores conocidos (tipo Dirichlet).

5.2 Solucion por elementos espectrales

Ahora, para aplicar el metodo de elementos espectrales, es necesario realizar los sigu-

ientes pasos:

• Introduccion de la informacion del problema

• Definicion de los elementos a usar (cantidad NE y distribucion, ası como sus

ordenes NP (i))

– Seleccion de los nodos de interpolacion a usar

– Generacion de la matriz de conectividad

• Generacion de la matriz del problema

– Generacion de la matriz de difusion

∗ Calculo de las funciones de interpolacion

∗ Calculo de las derivadas de las funciones de interpolacion

∗ Calculo de la funcion de transformacion y sus derivadas

Page 62: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 5. Implementacion 2D 50

∗ Calculo de los gradientes de las funciones de interpolacion

∗ Calculo del factor de correccion (cambio de base) hs

– Generacion de las matrices de presion

– Generacion del vector b

∗ Implementacion de las condiciones de frontera

• Solucion del sistema resultante

• Grafica de la solucion obtenida

Se define primero el numero de elementos y su distribucion, ası como los ordenes de cada

uno de los mismos. Conociendo el numero de elementos y su distribucion, es posible

generar los nodos correspondientes a los vertices de cada elemento. En el caso cuadri-

lateral, se utilizan los nodos de interpolacion de Lobatto, mientras que en el triangular

se usan los de Fekete. Una vez se definen los nodos, nuevamente se utiliza la matriz de

conectividad para almacenar de manera ordenada la numeracion local y global de los

mismos.

Figura 5.2: Distribucion de los elementos y los nodos de interpolacion correspondi-entes a la malla con 8 elementos en cada direccion y orden 2 en cada coordenada

Para la generacion de la matriz del problema es necesario definir las matrices de difusion,

masa y adveccion por cada elemento, las cuales no se puede expresar adimensionalmente.

A(`)ij =

∫∫E`

∇ψ(`)i ·∇ψ

(`)j dxdy B

(`)ij =

∫∫E`

ψ(`)i ψ

(`)j dxdy C

(`)ij =

∫∫E`

ψ(`)i ~u·∇ψ(`)

j dxdy

Page 63: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 5. Implementacion 2D 51

En el caso cuadrilateral, estas integrales se obtienen utilizando la cuadratura de Lobatto

sobre cada una de las dimensiones, ya que las funciones de interpolacion son bilineales

y se escriben de la forma:

ψi(ξ, η) = Li(ξ)Wi(η)

donde Li(ξ) y Wi(η) son las funciones de interpolacion (unidimensionales) correspondi-

entes. Por simplicidad, se trabaja sobre el elemento estandar con coordenadas

(−1,−1), (1,−1), (−1, 1) y (1, 1)

y se alude a un cambio de coordenadas. Comenzamos con la matriz que define el sistema

de ecuaciones, o la matriz de difusion. Dado que esta depende de los gradientes de las

funciones de interpolacion, es necesario realizar todos los pasos de construccion de los

terminos como sigue.

En este caso, debido al orden variable del metodo aplicado, se generan las funciones de

interpolacion a partir de los polinomios de interpolacion de Lagrange. Para simplificar

la notacion se considera la biyeccion: {0, 1, . . . , Np} → {0, . . . ,m} × {0, . . . , n} definida

por i 7→ (j, k)

ψi(ξ, η) = ψ(j,k)(ξ, η) = Lj(ξ)Wk(η) =

m∏l 6=j

ξ − ξlξj − ξl

n∏l 6=k

η − ηlηk − ηl

De acuerdo con esta descripcion, se tiene entonces que las derivadas con respecto a ξ y

η son entonces:

∂ψ(j,k)(ξ, η)

∂ξ= ψ(j,k)(ξ, η)

m∑l 6=j

1

ξ − ξl=

m∑l 6=j

1

ξj − ξl

m∏p 6=j,l

ξ − ξpξj − ξp

n∏l 6=k

η − ηlηk − ηl

(5.3)

∂ψ(j,k)(ξ, η)

∂η= ψ(j,k)(ξ, η)

m∑l 6=k

1

η − ηl=

n∏l 6=j

ξ − ξlξj − ξl

m∑l 6=k

1

ηk − ηl

m∏p6=k,l

η − ηpηk − ηp

(5.4)

De este modo, la funcion de transformacion de coordenadas corresponde a:

~x =

Np−1∑i=0

~xEi ψi(ξ, η) =

Np−1∑i=0

~xEi ψ(j,k)(ξ, η) =

Np−1∑i=0

~xEi Lj(ξ)Wk(η)

Page 64: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 5. Implementacion 2D 52

y por lo tanto sus derivadas son:

∂x

∂ξ=

Np−1∑i=0

xEi∂ψ(j,k)(ξ, η)

∂ξ

∂x

∂η=

Np−1∑i=0

xEi∂ψ(j,k)(ξ, η)

∂η(5.5)

∂y

∂ξ=

Np−1∑i=0

yEi∂ψ(j,k)(ξ, η)

∂ξ

∂y

∂η=

Np−1∑i=0

yEi∂ψ(j,k)(ξ, η)

∂η(5.6)

Ya con estos valores, es posible soluciones los gradientes de las funciones solucionando

los sistemas: (∂x∂ξ

∂y∂ξ

∂x∂η

∂y∂η

)∇ψi =

(∂ψi

∂ξ

∂ψi

∂ξ

)

De manera que el coeficiente de cambio de coordenadas corresponde a:

Det[J ] =

∣∣∣∣∣∂x∂ξ ∂x∂η

∂y∂ξ

∂y∂η

∣∣∣∣∣ =∂x

∂ξ

∂y

∂η− ∂x

∂η

∂y

∂ξ

Ahora bien, como tampoco se conocen los valores de presion, es necesario incorporarlas

tambien como incognitas. Para ello se calculan los vectores:

D(`)i =

∫∫E`

∇ψ(`)i dxdy

Figura 5.3: Diagrama de esparcidad en la matriz del sistema

Para el otro lado de la ecuacion se implementa la funcion de entrada. Para esto se

recorre sobre todos los elementos y se van calculando los valores para la funcion de

Page 65: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 5. Implementacion 2D 53

manera correspondiente. Estos valores se acomodan al sistema global aprovechando la

matriz de conectividad. Ası mismo, es necesario modificar la matriz global de manera

que se incorporen las condiciones de frontera de Dirichlet. Teniendo ya construidos los

componentes del sistema a resolver, basta aplicar un esquema de solucion razonable para

el tipo de matriz obtenida. En este caso se utiliza el solucionador por defecto del modulo

linalg. Dado que la matriz construida inicialmente es singular, se omiten los valores de

la primera fila y columna - que corresponden a un nodo de frontera del que ya se conoce

la velocidad. Esto permite que la matriz obtenida sea invertible.

Una vez resuelto el sistema, es posible visualizar el resultado obtenido por medio de

graficas para el campo de velocidades, y el de presiones.

Figura 5.4: Solucion obtenida para el flujo en la cavidad con la malla construida

Para el caso XY, la unica diferencia esta en el patron de esparcidad (y el tiempo de

solucion) que se presentan en la Figura 5.6

Por su parte, la solucion triangular no se puede presentar con el respectivo mapa de

color debido a la necesidad de un dominio rectangular para los mismos. En todo caso,

las soluciones son similares y es importante notar que hay diferencias en cuanto a las

presiones reportadas debido a que se trabaja unicamente con sus gradientes y por lo

tanto se definen unicamente salvo una constante.

Page 66: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 5. Implementacion 2D 54

Figura 5.5: Solucion obtenida para el campo de presiones en la cavidad con la mallaconstruida

Figura 5.6: Diagrama de esparcidad en la matriz del sistema para el caso YX

5.3 Comparacion de resultados

Al variar la nomenclatura de nodos se observan tiempos de solucion diferentes pero la

misma solucion global, como se observo en el Capıtulo 3. En todos los casos la solucion

Page 67: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 5. Implementacion 2D 55

Figura 5.7: Malla usada en el sistema

Figura 5.8: Diagrama de esparcidad en la matriz del sistema triangular

obtenida es consistente con las soluciones experimentales y con la solucion de elementos

finitos (tomada de [3]) realizada en MATLAB.

Page 68: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 5. Implementacion 2D 56

Figura 5.9: Solucion obtenida para el flujo en la cavidad con la malla triangular

Figura 5.10: Solucion obtenida para el campo de presiones en la cavidad con la mallatriangular

Page 69: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 5. Implementacion 2D 57

Figura 5.11: Visualizacion reologica para el flujo en la cavidad (Tomado de [17])

Figura 5.12: Solucion obtenida para el flujo en la cavidad en elementos finitos (Im-plementacion de [3])

Page 70: Sobre las propiedades del método de elementos espectrales ...

Capıtulo 6

Conclusiones

De acuerdo con lo observado desde el ambito teorico, los metodos de elementos espec-

trales no son mucho mas complicados que los espectrales o los de elementos finitos. En

particular, se pudo verificar que el metodo comparte las bondades de sus antecesores

como la posibilidad de trabajar en subdominios definidos de distintas manera, ası como

la convergencia espectral. Mas aun, fue posible comparar el rendimiento de distintos

tipos de numeraciones de los nodos para obtener diferencias notables en las distintas

partes, pero un tiempo similar en la solucion global del sistema.

Si bien el resultado es una serie de modulos y una infraestructura que permite trabajar

comodamente con el metodo en el caso lineal, queda pendiente extender el mismo a casos

mas generales. Puntualmente, hasta el momento faltarıa extender el solucionador a casos

mas generales en los cuales no se forcen las simplificaciones indicadas en el Capıtulo 2.

6.1 Comentarios finales

Se obtuvieron resultados consistentes con lo esperado en cuanto al rendimiento de los

metodos analizados. Puntualmente, en el caso 2D se rescata un mejor rendimiento (en

cuanto a la precision de la solucion) cuando se va refinando la malla y para las numera-

ciones XY y YX debido a la frontegra diagonal entre elementos que altera levemente el

resultado esperado. Cabe mencionar tambien que unicamente se trabajo con geometrias

sencillas y condiciones de frontera de Dirichlet sin la inclusion de los terminos no lineales,

por lo que serıa de interes continuar observando como trabaja el metodo en estas otras

configuraciones.

58

Page 71: Sobre las propiedades del método de elementos espectrales ...

Apendice A

Funciones Utilizadas

A.1 Implementacion 1D

En este apartado se presentan las funciones utilizadas, que se implementaron en elmodulo sem1D.

import numpy as np

#=================================================

# Funciones traducidas y adaptadas de FSELIB

# http://dehesa.freeshell.org/FSELIB/

#=================================================

def lobatto(i=6):

#=================================================

# Zeros of the ith-degree Lobatto polynomial

#

# This table contains values for i = 1, 2, ..., 6

# The default value is i=6

#=================================================

if(i>6):

print(’Data is not available; Will take i=6’)

i=6

Z = np.zeros(i)

if(i==1):

Z[0] = 0.0

elif(i==2):

Z[0] = -1.0/np.sqrt(5.0)

Z[1] = -Z[0]

elif(i==3):

Z[0] = -np.sqrt(3.0/7.0)

Z[1] = 0.0

Z[2] = -Z[0]

59

Page 72: Sobre las propiedades del método de elementos espectrales ...

Appendix A. Funciones Utilizadas 60

elif(i==4):

Z[0] = -0.76505532392946

Z[1] = -0.28523151648064

Z[2] = -Z[1]

Z[3] = -Z[0]

elif(i==5):

Z[0] = -0.83022389627857

Z[1] = -0.46884879347071

Z[2] = 0.0

Z[3] = -Z[1]

Z[4] = -Z[0]

elif(i==6):

Z[0] = -0.87174014850961

Z[1] = -0.59170018143314

Z[2] = -0.20929921790248

Z[3] = -Z[2]

Z[4] = -Z[1]

Z[5] = -Z[0]

return Z

def emm(N=6):

#================================================

# dimensionless element mass matrix for

# Nth-order polynomial expansion

#

# values are given for: N in 1 - 6

#================================================

if(N==1):

elm_mm = np.array([

[2/3, 1/3],

[1/3, 2/3]])

elif(N==2):

elm_mm = np.array([

[0.26666666666667, 0.13333333333333, -0.06666666666667],

[0.13333333333333, 1.06666666666667, 0.13333333333333],

[-0.06666666666667, 0.13333333333333, 0.26666666666667]])

elif(N==3):

elm_mm = np.array([

[0.14285714285714, 0.05323971374999, -0.05323971374999, 0.02380952380952],

[0.05323971375000, 0.71428571428571, 0.11904761904762, -0.05323971374999],

[-0.05323971374999, 0.11904761904762, 0.71428571428571, 0.05323971375000],

[0.02380952380952, -0.05323971374999, 0.05323971375000, 0.14285714285714]])

elif(N==4):

elm_mm = np.array([

[0.08888888888889, 0.02592592592592, -0.02962962962963, 0.02592592592593,

-0.01111111111111],

[0.02592592592592, 0.48395061728395, 0.06913580246913, -0.06049382716049,

0.02592592592593],

[-0.02962962962963, 0.06913580246913, 0.63209876543211, 0.06913580246913,

-0.02962962962963],

[0.02592592592593, -0.06049382716049, 0.06913580246913, 0.48395061728395,

0.02592592592592],

[-0.01111111111111, 0.02592592592593, -0.02962962962963, 0.02592592592592,

Page 73: Sobre las propiedades del método de elementos espectrales ...

Appendix A. Funciones Utilizadas 61

0.08888888888889]])

elif(N==5):

elm_mm = np.array([

[0.06060606060606, 0.01444043443670, -0.01748448154180, 0.01748448154179,

-0.01444043443670, 0.00606060606061],

[0.01444043443670, 0.34406814208894, 0.04165977904505, -0.04165977904505,

0.03440681420889, -0.01444043443670],

[-0.01748448154180, 0.04165977904505, 0.50441670639590, 0.05044167063958,

-0.04165977904505, 0.01748448154179],

[0.01748448154179, -0.04165977904505, 0.05044167063958, 0.50441670639590,

0.04165977904505, -0.01748448154180],

[-0.01444043443670, 0.03440681420889, -0.04165977904505, 0.04165977904505,

0.34406814208894, 0.01444043443670],

[0.00606060606061, -0.01444043443670, 0.01748448154179, -0.01748448154180,

0.01444043443670, 0.06060606060606]])

else: # Incorpora los casos en que N >= 6

elm_mm = np.array([

[0.04395604395604, 0.00883182542984, -0.01102962762764, 0.01172161172161,

-0.01102962762764, 0.00883182542984, -0.00366300366300],

[0.00883182542984, 0.25553173602605, 0.02659340659341, -0.02826184137547,

0.02659340659341, -0.02129431133550, 0.00883182542984],

[-0.01102962762764, 0.02659340659341, 0.39853419803987, 0.03529480840844,

-0.03321118316999, 0.02659340659341, -0.01102962762764],

[0.01172161172161, -0.02826184137547, 0.03529480840844, 0.45010989010988,

0.03529480840844, -0.02826184137547, 0.01172161172161],

[-0.01102962762764, 0.02659340659341, -0.03321118316999, 0.03529480840844,

0.39853419803987, 0.02659340659341, -0.01102962762764],

[0.00883182542984, -0.02129431133550, 0.02659340659341, -0.02826184137547,

0.02659340659341, 0.25553173602605, 0.00883182542984],

[-0.00366300366300, 0.00883182542984, -0.01102962762764, 0.01172161172161,

-0.01102962762764, 0.00883182542984, 0.04395604395604]])

return elm_mm

def edm(N=6):

#=======================================

# spectral element diffusion matrix for

# an Nth-order polynomial expansion.

#

# N in 1 - 6

#=======================================

if(N==1):

elm_dm = np.array([[0.5, -0.5],[-0.5, 0.5]])

elif(N==2):

elm_dm = np.array([

[1.16666666666667, -1.33333333333333, 0.16666666666667],

[-1.33333333333333, 2.66666666666667, -1.33333333333333],

[0.16666666666667, -1.33333333333333, 1.16666666666667]])

elif(N==3):

elm_dm = np.array([

[2.16666666666667, -2.43920915260403, 0.35587581927070, -0.08333333333333],

[-2.43920915260403, 4.16666666666667, -2.08333333333333, 0.35587581927070],

[0.35587581927070, -2.08333333333333, 4.16666666666667, -2.43920915260404],

[-0.08333333333333, 0.35587581927070, -2.43920915260404, 2.16666666666667]])

Page 74: Sobre las propiedades del método de elementos espectrales ...

Appendix A. Funciones Utilizadas 62

elif(N==4):

elm_dm = np.array([

[3.50000000000000, -3.91288507544030, 0.53333333333333, -0.17044825789303,

0.05000000000000],

[-3.91288507544030, 6.35185185185185, -2.90370370370371, 0.63518518518519,

-0.17044825789303],

[0.53333333333333, -2.90370370370371, 4.74074074074074, -2.90370370370371,

0.53333333333333],

[-0.17044825789303, 0.63518518518519, -2.90370370370371, 6.35185185185185,

-3.91288507544030],

[0.05000000000000, -0.17044825789303, 0.53333333333333, -3.91288507544030,

3.50000000000000]])

elif(N==5):

elm_dm = np.array([

[5.16666666666647, -5.75534978755293, 0.75291274743628, -0.23286955119427,

0.10197325797781, -0.03333333333336],

[-5.75534978755293, 9.12668826478755, -3.98085223985198, 0.83085223985201,

-0.32331173521247, 0.10197325797781],

[0.75291274743628, -3.98085223985198, 6.03997840187932, -3.41002159812136,

0.83085223985201, -0.23286955119427],

[-0.23286955119427, 0.83085223985201, -3.41002159812136, 6.03997840187932,

-3.98085223985198, 0.75291274743628],

[0.10197325797781, -0.32331173521247, 0.83085223985201, -3.98085223985198,

9.12668826478755, -5.75534978755293],

[-0.03333333333336, 0.10197325797781, -0.23286955119427, 0.75291274743628,

-5.75534978755293, 5.16666666666647]])

else: # Incorpora los casos en que N >= 6

elm_dm = np.array([

[7.16666666666692, -7.96655757431697, 1.01647769632621, -0.30476190476184,

0.13291684274811, -0.06855125047193, 0.02380952380950],

[-7.96655757431697, 12.47251984118633, -5.29457208031436, 1.06606416109113,

-0.40971363397094, 0.20081053679675, -0.06855125047193],

[1.01647769632621, -5.29457208031436, 7.74748015881332, -4.17463558966276,

0.98204660606043, -0.40971363397094, 0.13291684274811],

[-0.30476190476184, 1.06606416109113, -4.17463558966276, 6.82666666666694,

-4.17463558966276, 1.06606416109113, -0.30476190476184],

[0.13291684274811, -0.40971363397094, 0.98204660606043, -4.17463558966276,

7.74748015881332, -5.29457208031436, 1.01647769632621],

[-0.06855125047193, 0.20081053679675, -0.40971363397094, 1.06606416109113,

-5.29457208031436, 12.47251984118632, -7.96655757431697],

[0.02380952380950, -0.06855125047193, 0.13291684274811, -0.30476190476184,

1.01647769632621, -7.96655757431697, 7.16666666666691]])

return elm_dm

#=================================================

# Funciones nuevas implementadas

#=================================================

def genNodes(Ne,Np,xe):

#=================================================

# Genera los nodos de interpolacion segun el

# numero de elementos y sus ordenes. Esta es la

# numeracion local de los nodos: (l,i)

#

# Ne = Np.size

# max(Np) < 6

#=================================================

Page 75: Sobre las propiedades del método de elementos espectrales ...

Appendix A. Funciones Utilizadas 63

if(Ne != Np.size):

raise NameError(’La cantidad de elementos no coincide con el orden’)

xint = np.zeros((Ne,max(Np)+1))

for l in range(Ne):

mid = 0.5 * (xe[l+1]+xe[l])

dis = 0.5 * (xe[l+1]-xe[l])

xint[l,0] = xe[l]

vals = lobatto(Np[l]-1)

xint[l,1:Np[l]] = mid + vals*dis

xint[l,Np[l]] = xe[l+1]

return xint

def genConn(Ne,Np,xint):

#=================================================

# Genera los vectores de numeracion global y la

# matriz de conectividad

#

# max(Np) < 6

#=================================================

xglob = np.zeros(np.sum(Np)+1)

C = np.zeros((Ne,max(Np)+1),int)

# Contador Global

cont = 0

for l in range(Ne):

C[l,0:Np[l]+1] = np.arange(cont,cont+Np[l]+1)

xglob[cont:cont+Np[l]+1] = xint[l,0:Np[l]+1]

cont+=Np[l]

return xglob, C

def matDiff(Ne,Np,xe,xglob,C,U0,U1,mu=1,s=lambda x: 0):

#=================================================

# Genera la matriz de difusion/rigidez y el vector

# del lado derecho del sistema sujeto a condicio-

# nes de Dirichlet en ambos extremos

#

# max(Np) < 6

#=================================================

Ng = xglob.size

Mat_dif = np.zeros((Ng,Ng))

vec_b = np.zeros(Ng)

s = np.vectorize(s)

for l in range(Ne):

N = Np[l]

h = xe[l+1]-xe[l]

elm_mm = 0.5*h*emm(N)

elm_dm = 2.0*edm(N)/h

Mat_dif[C[l,0]:C[l,N]+1,C[l,0]:C[l,N]+1] += elm_dm

vec_b[C[l,0:N+1]] += np.dot(elm_mm,s(xglob[C[l,0:N+1]]))/mu

# Implementa las condiciones de frontera de Dirichlet

Page 76: Sobre las propiedades del método de elementos espectrales ...

Appendix A. Funciones Utilizadas 64

# Extremo derecho

# los valores de N, h y elm_dm ya corresponden a los del ultimo nodo

vec_b[C[Ne-1,0:N+1]] -= elm_dm[0:N+1,N]*U1

# Extremo izquierdo

N = Np[0]

h = xe[1]-xe[0]

elm_dm = 2.0*edm(Np[0])/h

vec_b[C[0,0:N+1]] -= elm_dm[0:N+1,0]*U0

return Mat_dif, vec_b

A.2 Implementacion 2D

En este apartado se presentan las funciones utilizadas, que se implementaron en el

modulo sem2D.

import numpy as np # Ofrece funciones para operaciones basicas con arreglos

import scipy.linalg as lin # Ofrece funciones para operaciones de algebra lineal

#=================================================

# Funciones traducidas y adaptadas de FSELIB

# http://dehesa.freeshell.org/FSELIB/

#=================================================

def lobatto(i=6):

#=================================================

# Zeros of the ith-degree Lobatto polynomial

#

# This table contains values for i = 1, 2, ..., 6

# The default value is i=6

#=================================================

if(i>6):

print(’Data is not available; Will take i=6’)

i=6

Z = np.zeros(i)

if(i==1):

Z[0] = 0.0

elif(i==2):

Z[0] = -1.0/np.sqrt(5.0)

Z[1] = -Z[0]

elif(i==3):

Z[0] = -np.sqrt(3.0/7.0)

Z[1] = 0.0

Z[2] = -Z[0]

elif(i==4):

Z[0] = -0.76505532392946

Z[1] = -0.28523151648064

Page 77: Sobre las propiedades del método de elementos espectrales ...

Appendix A. Funciones Utilizadas 65

Z[2] = -Z[1]

Z[3] = -Z[0]

elif(i==5):

Z[0] = -0.83022389627857

Z[1] = -0.46884879347071

Z[2] = 0.0

Z[3] = -Z[1]

Z[4] = -Z[0]

elif(i==6):

Z[0] = -0.87174014850961

Z[1] = -0.59170018143314

Z[2] = -0.20929921790248

Z[3] = -Z[2]

Z[4] = -Z[1]

Z[5] = -Z[0]

return Z

def qlobatto(i=6,r=’b’):

#=================================================

# Zeros of the completed ith-degree Lobatto

# polynomial, and corresponding weights for the

# Lobatto integration quadrature

#

# This table contains values for i = 1, 2, ..., 6

# The default value is i=6

#=================================================

if(i>6):

print(’Data is not available; Will take i=6’)

i=6

Z = np.zeros(i+2)

W = np.zeros(i+2)

Z[0] = -1.0

Z[-1] = -Z[0]

W[0] = 2.0/((i+1)*(i+2))

W[-1] = W[0]

if(i==1):

Z[1] = 0.0

W[1] = 4.0/3.0

elif(i==2):

Z[1] = -1.0/np.sqrt(5.0)

Z[2] = -Z[1]

W[1] = 5.0/6.0

W[2] = W[1]

elif(i==3):

Z[1] = -np.sqrt(3.0/7.0)

Z[2] = 0.0

Z[3] = -Z[1]

W[1] = 49.0/90.0

W[2] = 32.0/45.0

W[3] = W[1]

elif(i==4):

Page 78: Sobre las propiedades del método de elementos espectrales ...

Appendix A. Funciones Utilizadas 66

Z[1] = -0.76505532392946

Z[2] = -0.28523151648064

Z[3] = -Z[2]

Z[4] = -Z[1]

W[1] = 0.37847495629785

W[2] = 0.55485837703549

W[3] = W[2]

W[4] = W[1]

elif(i==5):

Z[1] = -0.83022389627857

Z[2] = -0.46884879347071

Z[3] = 0.0

Z[4] = -Z[2]

Z[5] = -Z[1]

W[1] = 0.27682604736157

W[2] = 0.43174538120986

W[3] = 0.48761904761905

W[4] = W[2]

W[5] = W[1]

elif(i==6):

Z[1] = - 0.87174014850961

Z[2] = - 0.59170018143314

Z[3] = - 0.20929921790248

Z[4] = -Z[3]

Z[5] = -Z[2]

Z[6] = -Z[1]

W[1] = 0.21070422714350

W[2] = 0.34112269248350

W[3] = 0.41245879465870

W[4] = W[3]

W[5] = W[2]

W[6] = W[1]

if(r==’z’):

return Z

elif(r==’w’):

return W

else:

return Z, W

def gaussTri(m):

#================================================

# Abscissas (xi, eta) and weights (w)

# for Gaussian integration over a flat triangle

# in the xi-eta plane

#

# Integration is performed with respect

# to the triangle barycentric coordinates

#

# SYMBOLS:

# -------

#

# m: order of the quadrature

# choose from 1,3,4,6,7,9,12,13

# Default value is 7

#================================================

#------------------------

Page 79: Sobre las propiedades del método de elementos espectrales ...

Appendix A. Funciones Utilizadas 67

# Checks for valid values

#------------------------

if((m != 1) and (m != 3) and (m != 4) and (m != 6) and (m != 7)

and (m != 9) and (m != 12) and (m != 13)):

m = 7

if(m==1):

xi = np.array([1.0/3.0])

eta = np.array([1.0/3.0])

w = np.array([1.0])

elif(m==3):

xi = np.array([1.0/6.0, 2.0/3.0, 1.0/6.0])

eta = np.array([1.0/6.0, 1.0/6.0, 2.0/3.0])

w = np.array([1.0/3.0, 1.0/3.0, 1.0/3.0])

elif(m==4):

xi = np.array([1.0/3.0, 1.0/5.0, 3.0/5.0, 1.0/5.0])

eta = np.array([1.0/3.0, 1.0/5.0, 1.0/5.0, 3.0/5.0])

w = np.array([-27.0/48.0, 25.0/48.0, 25.0/48.0, 25.0/48.0])

elif(m==6):

al = 0.816847572980459

be = 0.445948490915965

ga = 0.108103018168070

de = 0.091576213509771

o1 = 0.109951743655322

o2 = 0.223381589678011

xi = np.array([de, al, de, be, ga, be])

eta = np.array([de, de, al, be, be, ga])

w = np.array([o1, o1, o1, o2, o2, o2])

elif(m==7):

al = 0.797426958353087

be = 0.470142064105115

ga = 0.059715871789770

de = 0.101286507323456

o1 = 0.125939180544827

o2 = 0.132394152788506

xi = np.array([de, al, de, be, ga, be, 1.0/3.0])

eta = np.array([de, de, al, be, be, ga, 1.0/3.0])

w = np.array([o1, o1, o1, o2, o2, o2, 0.225])

elif(m==9):

al = 0.124949503233232

qa = 0.165409927389841

rh = 0.797112651860071

de = 0.437525248383384

ru = 0.037477420750088

o1 = 0.205950504760887

o2 = 0.063691414286223

xi = np.array([de, al, de, qa, ru, rh, qa, ru, rh])

eta = np.array([de, de, al, ru, qa, qa, rh, rh, ru])

w = np.array([o1, o1, o1, o2, o2, o2, o2, o2, o2])

elif(m==12):

al = 0.873821971016996

be = 0.249286745170910

ga = 0.501426509658179

de = 0.063089014491502

rh = 0.636502499121399

Page 80: Sobre las propiedades del método de elementos espectrales ...

Appendix A. Funciones Utilizadas 68

qa = 0.310352451033785

ru = 0.053145049844816

o1 = 0.050844906370207

o2 = 0.116786275726379

o3 = 0.082851075618374

xi = np.array([de, al, de, be, ga, be, qa, ru, rh, qa, ru, rh])

eta = np.array([de, de, al, be, be, ga, ru, qa, qa, rh, rh, ru])

w = np.array([o1, o1, o1, o2, o2, o2, o3, o3, o3, o3, o3, o3])

elif(m==13):

al = 0.479308067841923

be = 0.065130102902216

ga = 0.869739794195568

de = 0.260345966079038

rh = 0.638444188569809

qa = 0.312865496004875

ru = 0.048690315425316

o1 = 0.175615257433204

o2 = 0.053347235608839

o3 = 0.077113760890257

o4 =-0.149570044467670

xi = np.array([de, al, de, be, ga, be, qa, ru, rh, qa, ru, rh, 1.0/3.0])

eta = np.array([de, de, al, be, be, ga, ru, qa, qa, rh, rh, ru, 1.0/3.0])

w = np.array([o1, o1, o1, o2, o2, o2, o3, o3, o3, o3, o3, o3, o4])

return xi, eta, w

#=================================================

# Funciones nuevas implementadas

#=================================================

def proriol(k,l,xi,eta):

#=================================================

# Evalua los polinomios de Proriol usando las

# formas precalculadas

#

# Admite polinomios de orden hasta 3: k+l < 4

#=================================================

if(k==0 and l==0):

val = 1

elif(k==1 and l==0):

val = 2*xi+eta -1

elif(k==0 and l==1):

val = 3*eta -1

elif(k==2 and l==0):

val = 6*xi**2+6*xi*eta+eta**2 -6*xi-2*eta +1

elif(k==1 and l==1):

val = (2*xi+eta -1)*(5*eta -1)

elif(k==0 and l==2):

val = 10*eta**2 -8*eta +1

elif(k==3 and l==0):

val = (2*xi+eta -1)*(10*xi**2+10*xi*eta+eta**2 -10*xi-2*eta +1)

elif(k==2 and l==1):

val = (6*xi**2+6*xi*eta+eta**2 -6*xi-2*eta +1)*(7*eta-1)

elif(k==1 and l==2):

val = (2*xi+eta -1)*(21*eta**2 -12*eta +1)

elif(k==0 and l==3):

val = 35*eta**3 -45*eta**2 +15*eta -1

else:

raise NameError(’La cantidad de elementos no coincide con el orden’)

Page 81: Sobre las propiedades del método de elementos espectrales ...

Appendix A. Funciones Utilizadas 69

return val

def dproriol(k,l,xi,eta,var=’xi’):

#=================================================

# Evalua las derivadas de los polinomios de

# Proriol usando las formas precalculadas

#

# Admite polinomios de orden hasta 3: k+l < 4

#=================================================

if(var==’xi’):

if(k==0 and l==0):

val = 0

elif(k==1 and l==0):

val = 2

elif(k==0 and l==1):

val = 0

elif(k==2 and l==0):

val = 12*xi+6*eta-6

elif(k==1 and l==1):

val = 2*(5*eta -1)

elif(k==0 and l==2):

val = 0

elif(k==3 and l==0):

val = 2*(10*xi**2+10*xi*eta+eta**2 -10*xi-2*eta +1)+(2*xi+eta -1)*(20*xi+10*eta-10)

elif(k==2 and l==1):

val = (12*xi+6*eta-6)*(7*eta-1)

elif(k==1 and l==2):

val = 2*(21*eta**2 -12*eta +1)

elif(k==0 and l==3):

val = 0

else:

raise NameError(’La cantidad de elementos no coincide con el orden’)

elif(var==’eta’):

if(k==0 and l==0):

val = 0

elif(k==1 and l==0):

val = 1

elif(k==0 and l==1):

val = 3

elif(k==2 and l==0):

val = 6*xi+2*eta-2

elif(k==1 and l==1):

val = (5*eta -1)+(2*xi+eta -1)*5

elif(k==0 and l==2):

val = 20*eta-8

elif(k==3 and l==0):

val = (10*xi**2+10*xi*eta+eta**2 -10*xi-2*eta +1)+(2*xi+eta -1)*(10*xi+2*eta-2)

elif(k==2 and l==1):

val = (6*xi+2*eta-2)*(7*eta-1)+(6*xi**2+6*xi*eta+eta**2 -6*xi-2*eta +1)*7

elif(k==1 and l==2):

val = (21*eta**2 -12*eta +1)+(2*xi+eta -1)*(42*eta-12)

elif(k==0 and l==3):

val = 105*eta**2-90*eta +15

else:

raise NameError(’La cantidad de elementos no coincide con el orden’)

else:

raise NameError(’Variable de derivacion invalida’)

return val

def genVDM(m):

Page 82: Sobre las propiedades del método de elementos espectrales ...

Appendix A. Funciones Utilizadas 70

#=================================================

# Evalua la matriz de Vandermonde generalizada, su

# determinante y la matriz de cofactores

#

# Admite polinomios de orden hasta 3: k+l < 4

#=================================================

# Recupera las posiciones estandar de los nodos

npe = (m+1)*(m+2)/2

distr = 0.5+0.5*lobatto(m-1)

xist = np.zeros(npe)

etast = np.zeros(npe)

xist[0:3*m] = np.concatenate([[0],distr,[1],distr[::-1],np.zeros(m)])

etast[0:3*m] = np.concatenate([np.zeros(m+1),distr,[1],distr[::-1]])

if(m==3):

xist[9] = 1./3.

etast[9] = 1./3.

# Inicializa las matrices requeridas para el calculo

Mat_VDM = np.zeros([npe,npe])

Mat_Cof = np.zeros([npe,npe])

Mat_Min = np.zeros([npe-1,npe-1])

prind = np.array([[0,1,0,2,1,0,3,2,1,0],

[0,0,1,0,1,2,0,1,2,3]])

# Construye la matriz de Vandermonde generalizada

for i in range(npe):

for j in range(npe):

k = prind[0,i]

l = prind[1,i]

Mat_VDM[i,j] = proriol(k,l,xist[j],etast[j])

Det_VDM = lin.det(Mat_VDM)

for i in range(npe):

for j in range(npe):

Temp = np.delete(Mat_VDM,i,0)

Mat_Min = np.delete(Temp,j,1)

Mat_Cof[i,j] = (-1)**(i+j)*np.linalg.det(Mat_Min)

return Mat_VDM, Det_VDM, Mat_Cof

def genNodes(Ne,Np,px,py,ordn=’xy’):

#=================================================

# Genera los nodos de interpolacion segun el

# numero de elementos y sus ordenes. Esta es la

# numeracion local de los nodos: (l,i)

#

# Ne = Np.size

# max(Np) < 6

#=================================================

ne = Ne[0]*Ne[1] # Recupera el numero de elementos

npe = (Np[0]+1)*(Np[1]+1) # Recupera el numero de nodos por elemento

x = np.zeros([ne,npe]) # Coordenadas x por elemento

y = np.zeros([ne,npe]) # Coordenadas y por elemento

# Genera los nodos de interpolacion de Lobatto

dx = qlobatto(Np[0]-1,’z’)

dy = qlobatto(Np[1]-1,’z’)

Page 83: Sobre las propiedades del método de elementos espectrales ...

Appendix A. Funciones Utilizadas 71

for l in range(ne):

cx = l % Ne[0]

cy = l / Ne[0]

midx = 0.5 * (px[cx+1]+px[cx])

disx = 0.5 * (px[cx+1]-px[cx])

midy = 0.5 * (py[cy+1]+py[cy])

disy = 0.5 * (py[cy+1]-py[cy])

pxe = midx+disx*dx

pye = midy+disy*dy

(xv,yv) = np.meshgrid(pxe,pye,indexing=ordn)

x[l,:] = xv.reshape(npe)

y[l,:] = yv.reshape(npe)

return x, y, ne, npe

def genNodesTri(Ne,m,px,py):

#=================================================

# Genera los nodos de interpolacion segun el

# numero de elementos y sus ordenes para una malla

# triangular. Esta es la numeracion local de los

# nodos: (l,i)

#

# m < 4

#=================================================

ne = 2*Ne[0]*Ne[1] # Recupera el numero de elementos

npe = (m+1)*(m+2)/2 # Este es el numero de nodos por elemento

x = np.zeros([ne,npe]) # Coordenadas x por elemento

y = np.zeros([ne,npe]) # Coordenadas y por elemento

# Genera los nodos de interpolacion de Lobatto

distr = lobatto(m-1)

for l in range(ne/2): # Desarrolla dos elementos por iteracion

cx = l % Ne[0]

cy = l / Ne[0]

pxe = 0.5 * ((px[cx+1]+px[cx])+(px[cx+1]-px[cx])*distr)

pye = 0.5 * ((py[cy+1]+py[cy])+(py[cy+1]-py[cy])*distr)

# Elemento inferior

x[2*l,0:3*m] = np.concatenate([[px[cx]],pxe,[px[cx+1]],pxe[::-1],

px[cx]*np.ones(m)])

y[2*l,0:3*m] = np.concatenate([py[cy]*np.ones(m+1),

pye,[py[cy+1]],pye[::-1]])

if(m==3):

x[2*l,9] = (2.*px[cx]+px[cx+1])/3.

y[2*l,9] = (2.*py[cy]+py[cy+1])/3.

# Elemento superior

x[2*l+1,0:3*m] = np.concatenate([[px[cx+1]],pxe[::-1],[px[cx]],pxe,

px[cx+1]*np.ones(m)])

y[2*l+1,0:3*m] = np.concatenate([[py[cy]],pye,py[cy+1]*np.ones(m+1),

pye[::-1]])

if(m==3):

x[2*l+1,9] = (2.*px[cx+1]+px[cx])/3.

y[2*l+1,9] = (2.*py[cy+1]+py[cy])/3.

return x, y, ne, npe

Page 84: Sobre las propiedades del método de elementos espectrales ...

Appendix A. Funciones Utilizadas 72

def genConn(Ne,Npm,ne,npe,x,y,L,W,U0,h,tipo=’quad’):

#=================================================

# Genera los vectores de numeracion global, la

# matriz de conectividad y el vector de frontera

#

# max(Np) < 6 (quad) o m < 4 (tri)

#=================================================

# Calcula el numero de nodos globales para definir el tamano de las matrices contenedoras

if(tipo == ’quad’):

ng = ne*npe - ((Ne[0]-1)*(Npm[1]+1)+(Ne[1]-1)*(Npm[0]+1)

+(Ne[0]-1)*(Ne[1]-1)*(sum(Npm)+1))

elif(tipo == ’tri’):

ng = ne*npe - ((ne/2+Ne[0]+Ne[1]-2)*(Npm+1)+(Ne[0]-1)*(Ne[1]-1)*(2*Npm+1))

coords = np.zeros([ng,2]) # Almacena las coordenadas de todos los nodos sin redundancia

C = np.zeros((ne,npe),int) # Matriz de conectividad

gfl = np.zeros([ng,3]) # Indicador de nodos de frontera [indicador, vel. x, vel. y]

# Se introduce manualmente el primer nodo

coords[0,0] = x[0,0]

coords[0,1] = y[0,0]

# C[0,0] = 0 Esta condicion ya se tiene de la inicializacion de C

gfl[0,0] = 1 # Indica un nodo de frontera (el valor de la velocidad es de [0,0])

cont = 1 # Contador global

tol = h*1e-6 # Tolerancia para identificacion de nodos iguales

for l in range(ne):

for k in range(npe):

existe = False

for n in range(cont):

if(np.abs(coords[n,0]-x[l,k])+np.abs(coords[n,1]-y[l,k]) < tol):

existe = True

C[l,k] = n # El nodo (l,m) corresponde al nodo global n

if(not existe): # Registra el nodo si no existe todavia

coords[cont,0] = x[l,k]

coords[cont,1] = y[l,k]

C[l,k] = cont

# Identifica los nodos de frontera y actualiza el indicador

if (L/2.-np.abs(x[l,k]) < tol or W/2.-np.abs(y[l,k]) < tol):

gfl[cont,0] = 1

# Si se encuentra en la frontera superior actualiza la velocidad x

if(W/2.-y[l,k] < tol):

gfl[cont,1] = U0

cont += 1

return coords, C, gfl, ng

def matDiff(Ne,Np,ne,npe,ng,x,y,C,gfl,mu=1):

#=================================================

# Genera la matriz de difusion/rigidez y el vector

# del lado derecho del sistema sujeto a condicio-

# nes de Dirichlet

#

# max(Np) < 6

#=================================================

# Recupera los nodos de interpolacion de Lobatto

dx = qlobatto(Np[0]-1,’z’)

dy = qlobatto(Np[1]-1,’z’)

Page 85: Sobre las propiedades del método de elementos espectrales ...

Appendix A. Funciones Utilizadas 73

(xi,wx) = qlobatto(Np[0],’b’) # Utiliza un orden mayor para tener una integral exacta

(eta,wy) = qlobatto(Np[1],’b’) # Utiliza un orden mayor para tener una integral exacta

NQ = (Np[0]+2)*(Np[1]+2) # Numero de nodos a usar en la cuadratura

(ix,iy) = np.meshgrid(range(Np[0]+2),range(Np[1]+2),indexing=’xy’)

M_ind = np.array([ix.reshape(NQ),iy.reshape(NQ)]).T # Indices para la cuadratura

Mat_dif = np.zeros([2*ng+ne,2*ng+ne]) # Inicializa la matriz de difusion global

for l in range(ne):

elm_dm = np.zeros([npe,npe]) # Inicializa la matriz de difusion elemental

vecD = np.zeros([npe,2])

# Realiza la cuadratura de Gauss

for nq in M_ind:

psi = np.ones(npe) # Almacena las funciones de interpolacion

dpsixi = np.zeros(npe) # Almacena las derivadas con respecto a xi

dpsieta = np.zeros(npe) # Almacena las derivadas con respecto a eta

grpsi = np.zeros([npe,2]) # Almacena los gradientes de las funciones

dxdxi = 0.

dxdeta = 0.

dydxi = 0.

dydeta = 0.

for i in range(npe): #Realiza los calculos sobre cada elemento

divx = i % (Np[0]+1)

divy = i / (Np[0]+1)

# Calcula las funciones de interpolacion

fx = 1

for ind in range(Np[0]+1):

if(ind != divx):

fx *= (xi[nq[0]]-dx[ind])/(dx[divx]-dx[ind])

# print fx,

fy = 1

for ind in range(Np[1]+1):

if(ind != divy):

fy *= (eta[nq[1]]-dy[ind])/(dy[divy]-dy[ind])

psi[i] = fx*fy

# print fy, psi[i]

# Calcula las derivadas con respecto a las dos variables

for ind in range(Np[0]+1):

if(ind != divx):

prod = 1

for ind2 in range(Np[0]+1):

if(ind2 != divx and ind2 != ind):

prod *= (xi[nq[0]]-dx[ind2])/(dx[divx]-dx[ind2])

dpsixi[i] += 1./(dx[divx]-dx[ind])*prod

dpsixi[i] *= fy

for ind in range(Np[1]+1):

if(ind != divy):

prod = 1

for ind2 in range(Np[1]+1):

if(ind2 != divy and ind2 != ind):

prod *= (eta[nq[1]]-dy[ind2])/(dy[divy]-dy[ind2])

dpsieta[i] += 1./(dy[divy]-dy[ind])*prod

dpsieta[i] *= fx

# print dpsixi[i], dpsieta[i]

# Actualiza los valores de las derivadas de la funcion de transformacion

Page 86: Sobre las propiedades del método de elementos espectrales ...

Appendix A. Funciones Utilizadas 74

dxdxi += x[l,i]*dpsixi[i]

dxdeta += x[l,i]*dpsieta[i]

dydxi += y[l,i]*dpsixi[i]

dydeta += y[l,i]*dpsieta[i]

# print dxdxi,dxdeta,dydxi,dydeta

for i in range(npe):

# Calcula el gradiente para cada funcion de interpolacion

grpsi[i,:] = lin.solve(np.array([[dxdxi,dydxi],[dxdeta,dydeta]]),

np.array([dpsixi[i],dpsieta[i]]))

# Calcula el factor de correccion

hs = np.abs(dxdxi*dydeta-dxdeta*dydxi)

# Construye la matriz de difusion elemental

for i in range(npe):

for j in range(npe):

elm_dm[i,j] += np.dot(grpsi[i,:],grpsi[j,:])*(hs*wx[nq[0]]*wy[nq[1]])

# Construye los vectores D

vecD[i,:] += grpsi[i,:]*(hs*wx[nq[0]]*wy[nq[1]])

# Actualiza la matriz de difusion global

Mat_dif[np.meshgrid(C[l,:],C[l,:],indexing=’ij’)] += mu*elm_dm

Mat_dif[np.meshgrid(ng+C[l,:],ng+C[l,:],indexing=’ij’)] += mu*elm_dm

# Extensiones

Mat_dif[C[l,:],2*ng+l] -= vecD[:,0] #incorpora Dx en el bloque B

Mat_dif[ng+C[l,:],2*ng+l] -= vecD[:,1] #incorpora Dy en el bloque B

Mat_dif[2*ng+l,C[l,:]] -= vecD[:,0] #incorpora Dx en el bloque C

Mat_dif[2*ng+l,ng+C[l,:]] -= vecD[:,1] #incorpora Dy en el bloque C

# Construye el vector del lado derecho

vec_b = np.zeros(2*ng+ne)

# Implementa las condiciones de frontera

for ind in range(ng):

if(gfl[ind,0]==1):

# Ajusta las entradas al lado derecho

vec_b -= Mat_dif[:,ind]*gfl[ind,1] + Mat_dif[:,ng+ind]*gfl[ind,2]

# Ajusta el valor de la entrada en b

vec_b[ind] = gfl[ind,1] # Coor. x

vec_b[ng+ind] = gfl[ind,2] # Coor. y

# Ajusta la matriz del problema

Mat_dif[:,ind] = np.zeros(2*ng+ne)

Mat_dif[:,ng+ind] = np.zeros(2*ng+ne)

Mat_dif[ind,:] = np.zeros(2*ng+ne)

Mat_dif[ng+ind,:] = np.zeros(2*ng+ne)

Mat_dif[ind,ind] = 1.

Mat_dif[ng+ind,ng+ind] = 1.

return Mat_dif, vec_b

def matDiffTri(Ne,m,ne,npe,ng,x,y,C,gfl,mu=1):

#=================================================

# Genera la matriz de difusion/rigidez y el vector

# del lado derecho del sistema sujeto a condicio-

# nes de Dirichlet para el caso triangular

#

# m < 4

#=================================================

Page 87: Sobre las propiedades del método de elementos espectrales ...

Appendix A. Funciones Utilizadas 75

# Define los nodos a usar en la cuadratura

NQ = 7 # Numero de nodos a usar en la cuadratura (1,3,4,6,7,9,12,13)

(xiq, etaq, wq) = gaussTri(NQ)

(Mat_VDM, Det_VDM, Mat_Cof) = genVDM(m)

prind = np.array([[0,1,0,2,1,0,3,2,1,0],

[0,0,1,0,1,2,0,1,2,3]])

Mat_dif = np.zeros([2*ng+ne,2*ng+ne]) # Inicializa la matriz de difusion global

for ell in range(ne):

elm_dm = np.zeros([npe,npe]) # Inicializa la matriz de difusion elemental

vecD = np.zeros([npe,2])

# Realiza la cuadratura de Gauss

for nq in range(NQ):

psi = np.ones(npe) # Almacena las funciones de interpolacion

dpsixi = np.zeros(npe) # Almacena las derivadas con respecto a xi

dpsieta = np.zeros(npe) # Almacena las derivadas con respecto a eta

grpsi = np.zeros([npe,2]) # Almacena los gradientes de las funciones

dxdxi = 0.

dxdeta = 0.

dydxi = 0.

dydeta = 0.

for i in range(npe): #Realiza los calculos sobre cada elemento

# Calcula las funciones de interpolacion

vect = np.zeros(npe)

for j in range(npe):

k = prind[0,j]

l = prind[1,j]

vect[j] = proriol(k,l,xiq[nq],etaq[nq])

psi[i] = np.dot(vect,Mat_Cof[:,i])/Det_VDM

# Calcula las derivadas con respecto a las dos variables

vect = np.zeros(npe)

for j in range(npe):

k = prind[0,j]

l = prind[1,j]

vect[j] = dproriol(k,l,xiq[nq],etaq[nq],’xi’)

dpsixi[i] = np.dot(vect,Mat_Cof[:,i])/Det_VDM

vect = np.zeros(npe)

for j in range(npe):

k = prind[0,j]

l = prind[1,j]

vect[j] = dproriol(k,l,xiq[nq],etaq[nq],’eta’)

dpsieta[i] = np.dot(vect,Mat_Cof[:,i])/Det_VDM

# print dpsixi[i], dpsieta[i]

# Actualiza los valores de las derivadas de la funcion de transformacion

dxdxi += x[ell,i]*dpsixi[i]

dxdeta += x[ell,i]*dpsieta[i]

dydxi += y[ell,i]*dpsixi[i]

dydeta += y[ell,i]*dpsieta[i]

# print dxdxi,dxdeta,dydxi,dydeta

for i in range(npe):

# Calcula el gradiente para cada funcion de interpolacion

grpsi[i,:] = lin.solve(np.array([[dxdxi,dydxi],[dxdeta,dydeta]]),

np.array([dpsixi[i],dpsieta[i]]))

# Calcula el factor de correccion

hs = np.abs(dxdxi*dydeta-dxdeta*dydxi)

Page 88: Sobre las propiedades del método de elementos espectrales ...

Appendix A. Funciones Utilizadas 76

# Construye la matriz de difusion elemental

for i in range(npe):

for j in range(npe):

elm_dm[i,j] += np.dot(grpsi[i,:],grpsi[j,:])*(0.5*hs*wq[nq])

# Construye los vectores D

vecD[i,:] += grpsi[i,:]*(0.5*hs*wq[nq])

# Actualiza la matriz de difusion global

Mat_dif[np.meshgrid(C[ell,:],C[ell,:],indexing=’ij’)] += mu*elm_dm

Mat_dif[np.meshgrid(ng+C[ell,:],ng+C[ell,:],indexing=’ij’)] += mu*elm_dm

# Extensiones

Mat_dif[C[ell,:],2*ng+ell] -= vecD[:,0] #incorpora Dx en el bloque B

Mat_dif[ng+C[ell,:],2*ng+ell] -= vecD[:,1] #incorpora Dy en el bloque B

Mat_dif[2*ng+ell,C[ell,:]] -= vecD[:,0] #incorpora Dx en el bloque C

Mat_dif[2*ng+ell,ng+C[ell,:]] -= vecD[:,1] #incorpora Dy en el bloque C

# Construye el vector del lado derecho

vec_b = np.zeros(2*ng+ne)

# Implementa las condiciones de frontera

for ind in range(ng):

if(gfl[ind,0]==1):

# Ajusta las entradas al lado derecho

vec_b -= Mat_dif[:,ind]*gfl[ind,1] + Mat_dif[:,ng+ind]*gfl[ind,2]

# Ajusta el valor de la entrada en b

vec_b[ind] = gfl[ind,1] # Coor. x

vec_b[ng+ind] = gfl[ind,2] # Coor. y

# Ajusta la matriz del problema

Mat_dif[:,ind] = np.zeros(2*ng+ne)

Mat_dif[:,ng+ind] = np.zeros(2*ng+ne)

Mat_dif[ind,:] = np.zeros(2*ng+ne)

Mat_dif[ng+ind,:] = np.zeros(2*ng+ne)

Mat_dif[ind,ind] = 1.

Mat_dif[ng+ind,ng+ind] = 1.

return Mat_dif, vec_b

Page 89: Sobre las propiedades del método de elementos espectrales ...

Bibliografıa

[1] D.A. Kopriva. Implementing Spectral Methods for Partial Differential Equations:

Algorithms for Scientists and Engineers, chapter Spectral Element Methods, pages

293–354. Scientific Computation. Springer, 2009. ISBN 9789048122615.

[2] L.N. Trefethen. Spectral Methods in MATLAB. Software, Environments, and Tools.

Society for Industrial and Applied Mathematics, 2000. ISBN 9780898714654.

[3] C. Pozrikidis. Introduction to Finite and Spectral Element Methods using MATLAB.

Taylor & Francis, 2005. ISBN 9781584885290.

[4] G. Karniadakis and S. Sherwin. Spectral/hp Element Methods for Computational

Fluid Dynamics: Second Edition. Numerical Mathematics and Scientific Computa-

tion. OUP Oxford, 2013. ISBN 9780199671366.

[5] S.J. Sherwin and G.E. Karniadakis. A triangular spectral element method; appli-

cations to the incompressible navier-stokes equations. Computer Methods in Ap-

plied Mechanics and Engineering, 123(1–4):189 – 229, 1995. ISSN 0045-7825. doi:

http://dx.doi.org/10.1016/0045-7825(94)00745-9.

[6] C. Kleinstreuer. Biofluid Dynamics: Principles and Selected Applications. Taylor

& Francis, 2006. ISBN 9780849322211.

[7] F.M. White. Fluid Mechanics. McGraw-Hill series in mechanical engineering.

McGraw-Hill, 2011. ISBN 9780071311212.

[8] M.G. Blyth and C. Pozrikidis. A lobatto interpolation grid over the triangle. IMA

journal of applied mathematics, 71(1):153–169, 2006.

[9] L.N. Trefethen. Approximation Theory and Approximation Practice. Siam, 2013.

ISBN 9781611972405.

[10] L.P. Bos. Bounding the lebesgue function for lagrange interpolation in a simplex.

Journal of Approximation Theory, 38(1):43 – 59, 1983. ISSN 0021-9045. doi: http:

//dx.doi.org/10.1016/0021-9045(83)90140-5.

77

Page 90: Sobre las propiedades del método de elementos espectrales ...

Bibliografıa 78

[11] B. Sundermann. Lebesgue constants in lagrangian interpolation at the fekete points.

Ergebnisbericht der Lehrstuhle Math III, VIII, 44, 1980.

[12] M.G. Blyth, H. Luo, and C. Pozrikidis. A comparison of interpolation grids over the

triangle or the tetrahedron. Journal of Engineering Mathematics, 56(3):263–272,

2006. ISSN 0022-0833. doi: 10.1007/s10665-006-9063-0. URL http://dx.doi.

org/10.1007/s10665-006-9063-0.

[13] F.N. van de Vosse and P.D. Minev. Spectral Element Methods: Theory and Appli-

cations/ F.N. Van de Vosse and P.D. Minev. EUT report. Eindhoven University

of Technology, Faculty of Mechanical Engineering, 1996. ISBN 9789038603186.

[14] F.J. Sayas. A gentle introduction to the finite element method, 2008. URL http:

//www.imati.cnr.it/marini/didattica/Metodi-engl/Intro2FEM.pdf.

[15] R. Pasquetti and F. Rapetti. Spectral element methods on unstructured meshes:

which interpolation points? Numerical Algorithms, 55(2-3):349–366, 2010.

[16] D.A. Samano and M. Sen. Mecanica de fluidos, 2009. URL http://www3.nd.edu/

~msen/MecFl.pdf.

[17] JR Koseff and RL Street. The lid-driven cavity flow: a synthesis of qualitative and

quantitative observations. Journal of Fluids Engineering, 106(4):390–398, 1984.

[18] T.S. Chihara. An introduction to orthogonal polynomials. Courier Dover Publica-

tions, 2011.

[19] S. Chapra and R. Canale. Numerical Methods for Engineers. McGraw-Hill Educa-

tion, 2014. ISBN 9780073397924.