27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A...

95
REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA DE LA ECUACIÓN DE POISSON EN LA ESFEIRA S2 MEDIANTE LOS MÉTODOS DE GALERKIN Y DE FOURIER Trabajo de Grado presentado ante la Ilustre Universidad del Zulia para optar al Grado Académico de: MAG~STER SClENTlARUM EN MATEMÁTICAAPLICADA Autor: Nithal E3 Mejmissani Tutor: Jorge Guítiez Matamala Maracaibo, Septiembre de 2006

Transcript of 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A...

Page 1: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

REPÚBLICA BOLIVARIANA DE VENUUELA

UNIVERSIDAD DEL ZUUA

FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO

PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA

SOLUCIÓN NUMÉRICA DE LA ECUACIÓN DE POISSON EN LA ESFEIRA S2 MEDIANTE LOS MÉTODOS DE GALERKIN Y DE FOURIER

Trabajo de Grado presentado ante la Ilustre Universidad del Zulia para optar al Grado Académico de:

MAG~STER SClENTlARUM EN MATEMÁTICA APLICADA

Autor: Nithal E3 Mejmissani Tutor: Jorge Guítiez Matamala

Maracaibo, Septiembre de 2006

Page 2: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

El Mejmissani Sukkar, Nithal, SOLUCIÓN NUMÉRICA DE LA ECUACIÓN DE POISSON EN LA ESFERA S2 MEDIANTE LOS M~TODOS DE GALERKIN Y DE FOUIIIER. (2006) Trabajo de Grado. Universidad del Zulia. Facultad de Ingeniería. División de Postgrado. Maracaibo, Tutor: Dr. Jorge Guíñez.

En este trabajo de grado se aproxima la solución de la ecuación de Poisson en una es- fera de dimensión 2 usando el metodo de Galerkin de elementos finitos y el m6todo de Fourier fundado en la teoría de los valores propios del operador Laplace-Beqrami, donde cada método es implementado en una librería de software. Adicionalmente la tecnolo- gia de software desarrollada podrá ser usada con algunas adaptaciones al problema de aproximar numéricamente la solución de ecuaciones diferenciales que tienen dominio en una geometria dada. Como reseña, existe un importante esfuerzo a nivel mundial para investigar la simulación numérica del clima y su pronóstico que gira en torno al desarrollo de algoritmos y métodos numéricos para resolver Ecuaciones Diferenciales Parciales en una geometria esférica.

Palabras Clave: Esfera, Triangulación, Método de Galerkin, Polinomios ArmiSnicos, Méto- do de Fourier.

E-mail del Autor: [email protected]

Page 3: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

El Mejmissani Sukkar, Nithal, NUMERICAL SOLUTION FOR THE POISOM'S EQUA- TION ON Sz USlNG GALERKIN'S ANR FOURIER'S METHOD. (2006) Trabajo de Grado. Universidad del Zulia. Facultad de Ingeniería. División de Postgrado. Maracaitm, Tutor: Dr. Jorge Guíñez.

ABSTRACT

In this grade work we approximate the solution of Poisson's equation on the sphere of di- mension 2 using either the Galerkin's finite element method as the Fourier meihod founded on the theory of the Laplace-Beltrami operator, where both methods are iml~lernented in a software library. Additionally the software technology developed will be used, with some adaptations, to the probiem of approximate numerically the solution of partial diíferential equations over any given geometry. As remark, there exist an important e'brt at world level to investigate the climate numerical simulation and its forecast that evolve around of the development of algorithms and numerical methods to solve Partial Differential Equa- tions on spherical geometries.

Key Words: Sphere Triangulation, Galerkin's Method, Harmonic Polynoniials, Fourier Method.

Author's e-mail: [email protected]

Page 4: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

índice general

RESUMEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 ABSTRACT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

I . Introducción 11

II . Solución de la ecuación diferencial de Poisson en la esfera S, por el Método de elementos finitos de Galerkin 12 11.1. Problema de Dirichlet y la ecuación de bisson . . . . . . . . . . . . . . . . 12 11.2. El método estándar de elementos finitos de Galerkin . . . . . . . . . . . . . 13

11.2.1. Método de Galerkin . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 11.3. Triangulación de la esfera . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

11.3.1. Estructura de los datos para un dominio discretizado . . . . . . . . . 17

11.4. Programación de (Vai . Vaj) . . . . . . . . . . . . . . . . . . . . . . . . . . 19 11.4.1. Cálculo del gradiente VQj de la función nodal para un triángulo Tj- . 19

11.4.2. Cálculo del producto escalar de los gradientes V F y VG . . . . . . 21 11.4.3. Cálculo de (Vai a Va , ) . . . . . . . . . . . . . . . . . . . . . . . . . 22

11.5. Estimación del error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 11.6. Cálculode(f, ak) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 11.7. Ejemplo (comparando una solución real y una calculada) . . . . . . . . . . 25

11.7.1. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 11.8. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

11.8.1. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

III . Teoría de armónicos esféricos 33 111.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 111.2. Ordenamiento de una base de Pk . . . . . . . . . . . . . . . . . . . . . . . 38 111.3. BaseparaHk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

111.4. Ejemplo (comparando una solución real y una calculada) . . . . . . . . . . 39

IV . Conclusiones 47

Page 5: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

A. Implementacibn del método de elementos finitos 48

B. lmplementaclón del método de Fourier para una base en el espacio de poli- nomios arm6nlcos homogéneos restringidos a la esfera. 75 B.1. Referencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 B.2. Listados de la librería . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

C. Descripción y autirizaclones de uso de los progmmas informaticos emplea- das en esta tesis concedido por el(los) titular(es) del derecho de au'tor 93 C.1. GNU GPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 C.2. Sparse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 C.3. Gnuplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 C.4.Lyx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 c.5 . m " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

Page 6: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

h i c e de figuras

11.1. Mallas esféricas de triángulos. Gen(lc) para k = 0,1,2,3,4,5 . . . . . . . 11.2. Discretización del dominio 0 . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3. Discretización del dominio 0: primera iteración. . . . . . . . . . . . . . . . . 11.4. Transformación 8 : 0 c B2 -+ IR3 . . . . . . . . . . . . . . . . . . . . . . . . 11.5. Caso particular de un elemento triangular en el plano. . . . . . . . . . . . . 11.6. a) Solución real, b) Solución calculada para una malla cle 1280 triiingulos

generada con gen(3), c) Desviación entre las soluciones calculada !/ real. . 11.7. a) Distribución sobre la esfera, b) Distribución con integral nula. . . . . . . . 11.8. Solución calculada por el método de Galerkin para la ecuación diferencial

11.21. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e

111.1. a) Solución real, b) Solución calculada para un polinomio de tercer grado sobre una malla de 5120 triángulos generada con gen(3), c) Desviación entre las soluciones calculada y real. . . . . . . . . . . . . . . . . . . . . . .

Page 7: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

índice de cuadros

11. 1. Integración numérica cúbica. . . . . . . . . . . . . . . . . . . . . . . . . . . 25 11.3. Resultados usando la función 'solveGalerkinOnThe-tSur%ceW sobre mallas

de triángulos esférica, ktriángulos y error por diferencia con la solución real. 28 11.4. Solución de la ecuación 11.21 por el metodo de elementos finitos de Galerkin. 30

Page 8: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

¡índice de listas

11.1. Programa en C para resolver la ecuación diferencial por el método de ele- mentos finitos de Galerkin. Este código está en el archivo fuente galerkinl- prueba0l.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11.2. Programa en C para resolver la ecuación diferencial por el método de ele- mentos finitos de Galerkin. Este código está en el archivo fuente galerkiní- prueba02.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

111.1. Programa en C para resolver una ecuación diferencial por el método Fourier para una base de polinomios armónicos esféricos. Este código es16 en el archivo fuente fourierIprueba01 .c . . . . . . . . . . . . . . . . . . . . . . . .

111.2. Resultados producido por el program prueba01 . . . . . . . . . . . . . . . . A.1. Archivo de cabecera que contiene la declaración de las funciones para

el usuario pMedio() integrateOver() ares(). Este código está en el archivo fuente ga1erkirútSurface.h . . . . . . . . . . . . . . . . . . . . . . . . . . . .

A.2. Módulo en C que define las funciones para el usuario pMedio() intec~rateo- ver() ares(). Este código está en el archivo fuente galerkin/integrate.c . . .

A.3. Archivo de cabecera que contiene la declaración de las funciones para el usuario f() u() solveGalerkinOnThe tSurface(). Este código está en el archi- vo fuente galerkin/solveGalerkin.h . . . . . . . . . . . . . . . . . . . . . . .

A.4. Módulo en C para resolver una ecuación diferencial por el método de ele- mentos finitos de Galerkin. Este código está en el archivo fuente g;ilerkinl- so1veGalerkin.c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

A.5. Archivo de cabecera que contiene la declaración de las funciones para el usuario gen() tSurfacePlot() plotSolutionOver() y la estructura de datos tsurface. Este código está en el archivo fuente ga1erkiníSurface.h . . . . .

A.6. Módulo en C que contiene la definici6n de las funcionss necesarias para generar una malla de triángulos esférica. Este código está en el archivo fuente .JgalerkinltSurface.c . . . . . . . . . . . . . . . . . . . . . . . . . . .

A.7. Archivo de proyecto galerkinlhnakefile . . . . . . . . . . . . . . . . . . . . .

Page 9: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

6.1. Archivo de cabecera que contiene la declaración de todos los datos )r todas las funciones usadas en la librería, así como, parámetros que sirven para configurar el comportamiento de la librería durante el tismpo de campila- ción. El código está en el archivo fuente fourier1shDefs.h . . . . . . . . . . . 76

8.2. Módulo en C que define las funciones para construir la base. Este código está en el archivo fuente fourier1shBase.c . . . . . . . . . . . . . . . . . . . 80

6.3. Módulo de ordenamimento contine las funciones indico y elp(). Este código está en el archivo fuente fourier1shlndic.c . . . . . . . . . . . . . . . . . . . 88

B.4. Módulo de aritmética, contiene las funciones coef() y factorial(). Este código esta en el archivo fuente fourier1shAritrnetica.c . . . . . . . . . . . . . . . . 89

6.5. Módulo para el cálculo de los coeficientes de Fourier. Este código c?stá en el arch'm fuente fourier/shExp.c . . . . . . . . . . . . . . . . . . . . . . . . 90

B.6. Makefile. Este código está en el archivo fuente fourier1Makefile . . . . . . . 91

Page 10: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

Capítulo I

Initraducción

Sea Sn la esfera unitaria en Rn+l de estructura interna Riema.nniana. El problema de Dirichlet sobre S, consiste en resolver

- As,u = f sobre Sn (1.1)

donde As,, es el operador de Laplace-Beltrami con respecto a la estructura Riemanniana de la esfera S,. Diremos así mismo que, 1.1 es la ecuación de Poisson en S,,.

De modo explícito, el operador As,, para una función U diferenciable en una vecindad de S,, se calcula así. Determinamos el gradiente

en Rn+l, que luego proyectamos sobre el espacio tangente al punto (xl, - - , x,+~) E Sn (cf. Warner [6]). En seguida habiendo prolongado el campo asi obtenido a un abierto que contiene la esfera de modo que siga siendo tangente a las esfer8.s interiores y exteriores, tomamos su divergencia, la que da en los puntos de la esfera S, el valor del operador de Laplace-Beltrami en la función u.

En este trabajo de grado nos proponemos buscar soluciones aproximadas a la ecua- ción 1.1 mediante dos metodos. El primero es el metodo de elementos finitos de Galerkin y el segundo el método de Fourier fundado en la teoría de los valores propios del operador de Laplace-Beltrami. En cada uno de los casos desarrollamos SIJS fundamf!ntos teóricos y construimos sofiware apropiado para la solución del problema.

Page 11: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

Capítulo II

Solución de la ecuación diferencial de Roisson en la esfera S2 por el iiW6todo de elementos diniiaos de Galerkin

En esté capítulo se estudia la solución aproximada del Problema de Dirichlet para la ecuación de Poisson por el métodos de elementos finitos de Galerkin, el método estándar es presentado en la sección 11.2. El procedimiento para la triangulación de la esfera y la estructura de datos relevante son presentados en la sección 11.3. Resultado!; importantes que simplifican la programación del metodo de Galerkin son presentados en la sección 11.4. Finalmente, son presentados ejemplos en las secciones 11.7 y 11.8.

11.1. Problema de Dirichlet y la ecuación de Poisson

Sea dado un dominio ndimensional R que es parte de Rn o parte de una variedad de dimensión n, sobre el cual esta definida la función f. Entonces el problema de Dirichlet para la ecuación de Poisson se establece como,

- Au = f sobre 52, con U = OsobredR (11.1)

donde U E C (0) n C (O) es llamada solución clásica del probiema de Dirichlet. La ecua- ción diferencial A26 = f es llamada ecuación de Poisson y A es el operador de Laplace- Beltrami definido asi:

A(f> = di?, (V(f 1) (cf. Warner [6]).

Si BR = 0, como será nuestro caso en la esfera S2 sustituimas la condición u = O en dR, por 7~ (7b) = O, para un punto de R.

Page 12: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

11.2. El método estándar de elementos finitos de [Galerkin

Antes de describir la solución aproximada por el método de elemento fiiiito de (II.1), consideraremos brevemente la aproximación de funciones suaves en R que se anulan en la do. Concretamente, se aproximara por funciones continuas lineales sobre, R.

Tomamos un dominio R con frontera suave aR, y denotemos rh una partición de R en triángulos disjuntos T de tal forma que ningún vértice de un triángulo este en el interior de otro triángulo y de modo que la reunión de los triángulos determine un ,dominio poli- gonal convexo Rh. Aqui h denota la máxima longitud de los lados de la triangulación rh.

Las triangulaciones apropiadas para el método de Galerkin requiere que sus triángulos tengan angulos acotados por abajo por una constante positiva, independientci de h y trian- gulaciones cuasiunitbmies en el sentido de que los triángulos de rh son e!;encialmente del mismo tamaño, lo cual expresamos demandando que el área de T E rh este acotada por abajo por ch2, con c > 0, independientemente de h.

Denotemos Sh las funciones continuas en la cerradura $2 de R que son lineales en cada triángulo de n y que se anulan fuera de Rh. Representemos con { ~ j ) : : ~ al conjunto de vértice interiores de T ~ . Una función en Sh se determina únicamente por sus valores en el punto Pj y por lo tanto depende de Nh parámetros. Llamemos (9j a la fm:idn piramidal en Sh que toma el valor 1 en P, pero se anula en los otros vértices. Por lo tanto {@j}zl forma una base para Sh, y cada x en Sh admite la representación

Entonces dada una función suave v sobre R que se anula en dR, ella puede ser aproximada, por lo que llamaremos su interpelado Ihu en Sh, que definimos como el elemento de Sh que coincide con v en los vértices interiores, es decir,

En un contexto más general, para R c Rd la norma en L2 = IJ2(R) la deriotaremos por 1 1 - 1 1 y la norma en el espacio de Sobolev Hr = Hr(R) = W,'(R), la denotaremos por II-I1,, asi para una función real u,

Page 13: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

y, para un entero positivo r,

a - (#-)a' - (a)ad denota una derivada arbitraria con donde, con a = (al, . . . , ad), D - h d

respecto a x = (zll.. . ,x,) de orden la1 = ajl de tal forma que la suma en 11.5 contiene todas las derivadas con orden a lo sumo de T. Recordemos que para funciones en H,' = H,'(R), es decir las funciones v con Vv = grad v en L, y que se anulan sobre dR, llVvll y Ilvlll son normas equivalentes (lema de Friedrichs, vea, p.ej. [8] o [7])

c llvll1 5 l lV~ l l < IIvIIi Vv E H;, con c > O. (11.6)

donde c y C denotan constantes positivas, las cuales son independientes de los paráme- tros y las funciones involucradas.

Asumamos que tenemos una familia {Sh) de subespacios H,: de dimensión finita de tal forma, que para un entero dado r 2 2 y algún h pequeño,

ínf {IIv - xll + h Ilv - xll) 5 Chs ( IV I (~ , for 1. 5 s 5 r, (11.7) xEsh

cuando v E HS n Hi. El número r se conocerá como orden de exactitud de la familia {Sh). Frecuentemente Sh consiste en polinomios seccionalmente continuos con orden de a lo sumo de r - 1 sobre una triangulación T,,. Generalmente estimaciones como la (11.7) pueden obtenerse frecuentemente al considerar un operador de interpelación Ih : Hr n H i + Sh tal como

IlIhv - + h Ilv ( k v - v)II 5 Ch" IIv11, para 1. 5 s 5 r. (11.8)

El orden óptimo con el que pueden ser aproximadas las funciones y SIJS gradientes bajo nuestra suposición (11.7), es O (hr) y O (hr-l) , respectivamente, y a continuación se construirán aproximaciones de ese orden para la solución del problema de Dirichlet (11.1). Para este propósito escribiremos este problema en su forma variacional o débil: Multiplicaremos la ecuación elíptica por una función suave cp que se anula en la frontera dR (es suficiente requerir cp E H,'), luego integramos sobre R, y aplicamos la fórmula de Green en el lado izquierdo, para obtener

Page 14: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

en donde hemos usado el producto interno en LIi

11.2.1. Método de Galerkin

En el metodo de elemento finito nos planteamos resolver el problema ~ I J S C ~ ~ ~ O una aproximación uh E Sh de tal manera que

definir así la solución aproximada en terminos de la formulación variacional del proble- ma es conocida como método de Galerkin, en honor al matemático aplicado Ruso Boris Grigorievich Galerkin (1 871 -1 945).

Note que de las ecuaaones (11.9) y (11.1 1) resulta

es decir, que el error en la solución discreta es ortogonal a Sh con respect3 al producto interno de Dirichlet (Vv, VW).

En términos de una base (@,}p para el espacio de elementos finitos Sh , planteamos nuestro problema discreto: Encontrar los coeficientes aj en uh(r) = ~ f h , { y a j ( x ) de tal forma que

N"

~ a > ( ~ @ j j , ~ @ k ) = ( f , @ k ) , parak=l , ..., Nh. (11.13) j=l

lo que podemos expresar en notación matricial como

donde B = (b jk) es la matriz de rigidez con elementos bjk = (V@j, VQk), f = ( f k ) es un vector donde f k = ( f , ak), y a el vector de las incógnitas a j . La dimensión de estos arreglos es Nh, que es la también la dimensión de Sh (el cual es igual al número de vértices interiores)

El siguiente teorema (probado en Thomée [l]) proporciona un medio p.ara estimar el error entre la solución continua y discreta del problemas.

Teorema 11.1 Asuma que se cumple 11.7, y sean uh y u las soluciones cle 11.11 y lI.lI

Page 15: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

respectivamente. Entonces para 1 5 S 5 r ,

11.3. Triangulacion de la esfera

Consideremos la esfera S2 nuestro dominio, rl, denotará una partición de la esfera en triángulos disjuntos T de tal forma que ningún vértice de cada triángulo este en el lado interior de otro triángulo y tal que la unión de los triángulos determine un dominio poligo- nal S2, c S2. Estas triangulaciones son generadas recursivamente, empezando con un icosaedro inscrito en la esfera unitaria, luego subdividiendo recursivamente cada triángu- lo en cuatro al dividir cada lado en dos por el medio y luego proyectando este punto a la esfera unitaria en la dirección normal. Este proceso genera una secuencia de triangu- laciones cuasiuniformes que tienen 20, 80, 320, 1280, 51 20, 20480, 81 820. ..., triángulos respectivamente. En efecto, los triángulos tienen ángulos acotados inferiorrriente por &T. Denotaremos estas triangulaciones como Gen(O), Gen(l), ...,. La figura 11.1 muestra las primeras seis mallas esféricas de triángulos Gen(Ic) para Ic = 13,1,2,3,4, li.

Figura 11.1 : Mallas esféricas de triángulos. Gen(Ic) para k = 0,1 ,2 ,3 ,4 ,5

Page 16: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

11.3.1. Estructura de los datos para un dominio discretizado

Para propósitos de programación establecemos la siguiente estructura de dato. Sea un dominio R y una partición .rh de 0 que genera un conjunto de nodos{ P?}:!, . El do- minio plano mostrado en la figura 11.2 servirá de ejemplo. Podemos reconocer en .rh lo.; siguientes elementos de información:

nodos que identificamos con enteros positivo y guardan información sobre las coor-

denadas. (Ej. nodo 8 coordenadas (z, y, Z) = (a; i; YF)). También tienen dato bandera que indica si el nodo esta en el borde, esta condición no se usarh en esta tesis, pero es necesaria para un futuro, cuando conc;ideremos unta condición mixta en el borde;

triángulos que identificamos con enteros positivos y guardan información de los nodos,. (Ej. triángulo 6 nodos 3, 4, 2.);

lados que identificamos con enteros positivo y guardan i-iformaciór de los nodo; que forman un lado de un triángulo dado;

En la lista A.5 se muestra la implementación de la estructura de datos t Sur f ace.

Figura 11.2: Discretización del dominio C.!

El procedimiento recursivo necesita que las dimensiones de la estructura de datos

aumente en cada iteración. Para ilustrar el proceso usemos el dominio niostrado en Il i figura 11.2 subdividamos cada triángulo en cuatro al dividir cada lado en dos por el medio como en la figura 11.3. Para este procedimiento tenemos las siguientes relaciones:

Page 17: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

Figura 11.3: Discretización del dominio R: primera iteración.

donde para una iteración i dada:

li es el número de lados,

ni es el número de nodos,

ti es el número de triángulos.

En la lista A.6 se muestra la implementación de una función gen(:i) que genera una esfera construida con una malla de triángulos con el método recursivo antes mencionado. En caso de un dominio no esférico aún existe el problema de redistribuir de forma adecuada los nuevos nodos generados {P,}zl.

Page 18: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

11.4. Programación de (Vai VQj)

11.4.1. Cálculo del gradiente VQI, de la función nodal para un triángu-

lo Tj.

Para realizar este cálculo se uso la fórmula expuesta en un trabajo de Zeeman [2] para el V de una función u : X -+ R,

donde % es una variedad Riemanniana n-dimensional cuya estructura está determinada por una forma simétrica positiva definida g sobre los planos tangentes de 8;. En coorde- nadas locales g esta dada por una matriz m x n positiva definida (g i j ) que depende de x E W, y que determina la siguiente métrica Riemanniana

Queremos tener una función @(x, y, t) definida en una vecindad (del triángulo A (Pl, P2, P3), cuyos vértices se encuentran en el espacio tri-dimensional y determinar la expresión de su gradiente en coordenadas locales, se tiene,

(V@)i = g-l (V (@ o O,)) donde z = 1, t!, 3

donde,

30, ae, ae, ao, donde g = -- ; g12 = - 30, ao, , g22 := -- a~ a~ a~ a;l) a~ a~

para una parametrización O, del triángulo Pl, P2 , P3. Si tomamos la parametrización lineal que lleva el triángulo A,, AS, AJ del plano W2 en

el triángulo Pl, P2 , P3, se tiene @,(U, U ) = a(P, - Pl) +p(P3- Pl) siendo (Y y p las funciones caracterizadas por (U, U ) = a(A2 - A,) + p(A3 - Al) (vea la figura 11.4).

de donde resultan

( U , v)(Az - Ai) (A3 - Ai)(A2 - Ai)

(Y = (u, v ) (A3 - Al) (A3 - Al)2 -

area(A1, A2, A3)

Page 19: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

Figura 11.4: Transformación O : Q c R2 -, R"

(A2 - A1I2 (u, - Al) (A2 - Ai)(A3 - Al) (u, v)(A3 - Al)

P = - area(A1, A27 A3)

ao, a, -= aP 80, aa

-(p2-pl)+-(P3-p1) y x-ari> du au du - - ( S - Pl) +

area(Al, A2, A3) =

922 = (E)' ( ~ 2 ) ~ + (E)' (q2 + 2 (-2') a v al (11.17)

a, 1 2 -- - azl 4 ( a r a (Al ~ 2 , ~ 3 ) ) ~ [(lb - ( A ~ A ~ ) - (u3 - u1, (AX - ;a)] a, - - 1

- 4 (ama (Al, A2, A~) ) ' [('u2 -VI) (m)'- (213 -VI)

(As - A ) 2 (A2 - Al) (A3 - Al)

(A2 - Al) (A3 - Al) (A3 -. ~ 1 ) ~

Page 20: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

Para una función F definida en el triángulo (o la superficie) se tiene

ae, a@, VF = (VF), - + (VF), - aU dv

y las componentes (VF),, (VF), se obtienen

siendo 9-l la matriz inversa de la matriz

de donde sigue que

11.4.2. Cálculo del producto escalar de los gradientes VF y VG

Para dos funciones F y G definidas sobre la imagen de 8, se tendrá

ae, a@, VF = (VF), - + (VF), - au dv a@, VG = (VG), - + (VG),

au por lo tanto, el producto escalar de estos gradientes sobre la superficie da almo resultadc~

Page 21: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

\ i * /

ak & 922 -912 & (F. i*) [ -912 911

aF aG aF aG [&Fg22- (gg+á;á; g12+--

El cálculo del producto interno de los gradientes de funciones nodales

se reduce a un cálculo algebraico que considera solo la geometría del triángulo involu- crado. Sean los índices i, j , k una permutación del conjunto {1,2,3) que se corresponde con los vértices del triángulo A (Pl, P2. P3). Tomemos por ejemplo el caso mostrado en la figura 11.5, para el cual se cumple lo siguiente

Figura 11.5: Caso particular de un elemento triangular en el plano.

__f __t

AiA3 = (-h, O ) , A1A2 = (O. h) 162 - ~ L I = 0, U2 - 771 = O, Ug - 11.1 = -h. 213 - 1~~ = 0,

Page 22: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

De alli se obtiene

de las ecuaciones 11.1 5, 11.1 6, 11.1 7, seguidamente podemos escribir

Ahora podemos resolver

En primer lugar consideremos i # j, en particular i = 1 y j = 2

(V@, - Va?,) = - L ( A 1 , A 2 A?) ((s)~ - (q2 - (2 a)*2) S

__+ - i ---+ --$

sacando el factor común PlP3, y tomando en cuenta que P1F2 - PLP3 =- PiP3 P3P2 conduce a la siguiente forma general

Page 23: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

__f+

- - (pkpj e p , ) (Vai, V@j)qpi,fi ,fi) - 4 a r e n (P l , P2, ~3 note que las consideraciones particulares hechas en el plano desaparecen. Finalmente para i = j obtenemos

la expresión ( ( S ) - 2 ( - ) + (m)) se transforma en ( 7 3 - 3) ' que es P3P2 . LO que lleva a escribir la siguiente expresión general (-1 '

en donde también desaparecen las consderaciones generales que se hicieron en el plano para realizar este cálculo. Ahora es posible independizarse de urja parametrización de la superficie, es decir, se puede calcular de forma precisa los elementos de la matriz que resulta en el problema de Galerkin. Así reducimos el esfuerzo de computo numérico al evitar una integración numérica.

11.5. Estimación del error

El error en la norma L2 (SZ) entre la solución exacta y la calculada se eslirna del modo siguiente

/xe ,sq - $ T i l . Ilfih-ull~25 3 x n , z= 1

donde n es el número de triángulos de la triangulación considerada, . s ~ + y .sri son las. solución calculada y la real para el punto i respectivamente.

Page 24: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

Cuadro 11.1 : Integración numérica cúbica.

En efecto, considerando el teorema 11.1 y (uh - = xj"=, ( s ~ i - s ~ i ) teliemos

Orden

Cúbica

y de la cuasiuniformidad de la triangulación

Error

R = O ( h 3 )

Figura

11.6. Cálculo de ( f , <Pk)

a b C

Para este cálculo usaremos la fórmula cúbica de integración numérica para triángulos presentada en Zienkiewics y Taylor [5] y que se reproduce en la tabla 11.1 que sigue, obviamente por su simplicidad. Ciertamente podemos esperar mejores resultados para interpolaciones de orden superior.

11.7. Ejemplo (comparando una solución real y una cal-

culada)

Sea la Ecuación Diferencial

donde el lado derecho se obtuvo aplicando la ecuación 111.3 al polinomio u = 4x2z + 1 0 ~ ~ ~ .

En la lista 11.1 implementamos un programa en lenguaje C que calcula la solución apro- ximada por el método de Galerkin para una triangulación dada generada c m la función

gen(#)-

Page 25: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

Lista 11.1 : Programa en C para resolver la ecuación diferencial por el método ile elementos finitos de Galerkin. Este código está en el archivo fuente galerkinIprueba01 .c

#include " tSurface . h" #include " solveGalerkin . h" #include <math . h>

double f (vector p)

double x = p - x , y = p.y, z = p.z; return (-(8 - 24 * pow (x , 2) + 20 * y - 120 *: pow ( z , 2) * y ) )

double u (node n)

{ double x = n.x, y = n.y, z = n.z ; return (4 * pow ( x , 2) + 10 * pow (z , 2) * y ) :

i n t main ( )

{ int i ;

tSurface esfera ; for ( i = O; i <= 3; i++)

{ esfera = gen ( i ) ; tSurfacePlot (esfera, "good") ; esfera = solveGalerkinOnThe-tSurface (esfera , 12) ; i f ( i == 4)

{ plotSolutionOver (esfera , "solRealPruebaO1 . dat" , ' r ' ) ; plotSolutionOver (esfera , "solCalcPruebaO1 . dat" , 'c ' ) ; plotSolutionOver (esfera , "solErrorPruebaOl . dat" , ' e ' ) ;

Page 26: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

Figura 11.6: a) Solución real, 6) Solución calculada para una malla de 12:80 triángulos generada con gen(3), c) Desviación entre las soluciones calculacla y real.

1 tSurfaceDestroy ( esfera ) ; p r in t f ( " \ n \ n \ n n ) ;

11.7.1. Resultados

La tabla 11.3 muestra la solución real y calculada en los doce nodos iniciales del icosae- dro inscrito en la esfera, es decir, los nodos de la esfera generada con la función gen(0) Notamos que medida que el número de triángulos aumenta y la malla se hace más fina, entonces, la solución calculada tiende a igualarse a la solución real. La escala de colores en la figura 11.6 indica que las soluciones real 11.6.~) y la calculada 11.6.6) son similares.

Además la figura 11.6.~) muestra que el error es pequeño y varía en función cle los cambio:; de U .

Page 27: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

NODO 1 2 SOL.REAL 2.894 2.894

20 t. 3.378 2.942 err. 0.4838 0.04731 80 t. 1.396 1 -396 err. 1.498 1.498

320 t. 2.463 2.461 err. 0.4315 0.4334

err. 0.1 164 0.1 166 51 20 t. 2.863 2.863

1

err. 0.031 09 0.031 1 20480 t. 2.886 2.886

1 err. 1 81920t. l err.

1 SOL-REAL

I err.

Cuadro 11.3: Resultados usando la función "solveGalerkinOnTheetS~rfacen sobre mallas de triángulos esférica, t-triángulos y error por diferencia con la solución real.

Page 28: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

Figura 11.7: a) Distribución sobre la esfera, b) Distribución con integral nula.

11.8. Ejemplo

Cosideremos una ecuación diferencial con la siguiente forma

donde la forma exponencial en el lado derecho representa una incursión violenta distri- buida sobre la esfera como se muestra en la figura 11.7.a. k es una constante que anula la integral sobre la esfera de todo el lado derecho de la expresión mostrada, esto equivale a, una fina película de espesor k dispersa en el interior esfera capaz de absorber la interven- ción representada por la distribución mencionada. La figura 11.7.5 muestra la distribución con integral nula.

11.8.1. Resultados

En la tabla 11.4 se muestra la solución de para los 42 nodos aue se obtienen después de afinar una vez el icosaedro inicial para una malla esférica. La figura 11.8 muestra en escala de colores la solución sobre la esfera. El código del programa usado para resolver este problema es mostrado en la lista 11.2.

Lista 11.2: Programa en C para resolver la ecuación diferencial por el método de elementos finitos de Galerkin. Este código está en el archivo fuente aalerkin/r>rueba02.c

Page 29: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

- I número de triángulos (t.) de la malla.

1280 t. 5120 t. 20480 t -

0.0007424 0.0009815 0.001 091- 0.006467 0.007785 0.00819E7 0.006467 0.007785 0.0081 9 ~ 7 0.0007424 0.0009815 0.001091- 0.00283 0.003447 0.003661- 0.00283 0.003447 0.003661- 0.002798 0.003439 0.00365Cl 0.002798 0.003439 0.00365~¡- 0.01214 0.01 452 0.01 522- 0.01213 0.01451 0.01 522-

-0.0002748 -0.0001 732 -9.347e-05 -0.0001 96 -0.000141 -8.269e-05 0.002825 0.003445 0.00366-

Cuadro 11.4: Solución de la ecuación 11.21 por el método de elemsntos finitos de Galerkin.

Page 30: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

Figura 11.8: Solución calculada por el método de Galerkin para la ecuacióti diferencial 11.21 .

double f (vector p)

{ double x = p.x, y = p.y, z = p.z; i f (z >= 0)

return (exp (20 * (pow (z , 2) - 1 / pow (z , 2) ) ) ) ; else

return O;

1

double u (node n)

double x = n.x, y = n . y , z = n.z; return (O) ;

1

int

Page 31: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

1 main 0 I {

int i ; tSurface esfera ; for ( i = 4; i <= 4 ; i + + )

{ esfera = gen ( i ) ; // tSurface Plot (esfera , "good ") ; esfera = solveGalerkinOnThe-tSurface (esfera , 42) ; i f ( i == 4)

plotSolutionOver (esfera , "solCalcPrueba02. dat" , ' c ' ) ; tSurfaceDestroy (esfera) ; printf ( " \ n \ n \ n W ) ;

1 1 l

Page 32: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

Ccipitanlo bIl

Ieoñia de armónicos esféricos

111.1. Introducción

Sea Pk el espacio de los polinomios homogéneos de grado k sobre Rn4', S, la esfera

unitaria en Rn+l de estructura interna Riemanniana, y sea

Es decir, 'Hk es el espacio de los polinomios armónicos homogéneos de grado k y Ht es el espacio de su restricción a la esfera unitaria. Los elementos de Iik. son llamado!; armónicos esféricos de grado k . El mapeado de 7ik a Hk es un icomorfismo; cuyo inverso es el mapa Y -+ P donde P(:c) = ]xlkY (1x1-lx).

Usemos r2 para denotar a la función x -+ xS sobre Rn, para un elemiento de P2.

Proposición 111.1 pk = ' H ~ 8) , I - -P~- , , donde = { rZP : P E p k - 2 ) . E s decir, ' H k e.5 el complemento ortogonal de r2Pk-2.

Prueba: cf Folland 141.

de 111.1 se sigue el siguiente corolario que se puede probar por inducción del k , (cf. Folland

[41).

Corollario 111.2 Pk = 'Hk r2Pk-, $ r'Pk-, $ . , (cf. Folland [4]).

Corolario 111.3 La restricción a la esfera unitaria de cualquier elemento de Pk es un(3

suma de armónicos esféricos con grado 1; a lo sumo, (cf. Follanti 141).

Page 33: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

Teorema 111.4 L2 (S,) = H k , donde la expresión en el lado derecho (?S una suma

ortogonal directa con respecto al producto escalar en el espacio de Hilbert L2(S, ). Es decir se tiene,

( f l . 9 ) = O , f ' E Hi , . qE Hj p a r a i # j

(cf. Folland [4]).

Proposición 111.5

(c f. Folland [4]).

( k + n - l)! dimPk =

lc! (72 - 1) ! '

Teorema 111.6 Sea f una función polinomial en S,, se tiene

n-tl a2 1 a2f ~ ~ ( f ) = C ( I - X ~ ) ~ - ~ ~ - - X j , y - n :.c+' a j ~ ; x i - nf

>=I 8x7 i< j dxidxj i ~ l

(cf. Guíñez y Rueda [3]).

En el caso n = 2 tenemos

Aplicando (111.2) a un monomio f tenemos:

Lema 111.7 Sea f un monomio con grado k, entonces

n+l

As" (f) = ( - k (k - 1 ) - nk) . f + - z=1 i)x>

con H ( k , n,) = (-k(k - 1) - 7ak) (cf Guíñez y Rueda [3]).

Prueba: apliquemos el la ecuación 111.2 a un momio f con grado k ,

Page 34: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

para f = xlLx? . . . x,".+i', resulta

si el rnonornio f E 7 i k , entonces (111.4) se reduce a

A , , ( f ) = (-k ( I c - 1) - n k ) - f

Puesto que la esfera S, no tiene borde, el problema de Dirichlet para la ecuación de Poisson sobre S, se puede escribir,

-ALy, u = f sobre S,,

donde As, es el operador de Laplace-Beltrami definido por Guífiez y Rueda [3] con res-

pecto a la estructura Riemanniana de la esfera S,, j es una función definida en la esfera

S,. La función U E C"i2) n C (it) es la solución clásica del problema de Dirichlet.

Por el teorema (111.4) para f E L2 (S,) escribirnos

con . fk E Ek.

Page 35: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

Por su parte, si Y,, ..., Ydk es una base de 7-tk donde dk = dimPk - ~ l i m P ~ - ~ e s la

dimensión de esta base,

en donde A k j verifica M (A) = F

donde M es una matriz de dk x dk

Mi, = (Y,, Y,)

y E' es la columna

F j = ( f , Y , ) , j = 1, . . . ,dk

Por lo tanto, con el fin de tener un algoritmo explícito, que nos permita u11 tratamiento

de la expresión de fki es necesario obtener una base de 7ik- Para ello determinamos una base 'P, y una expresión para la matricia del operador A - 3 y seguido un

algoritmo preciso para determinar una base adecuada en el espacio nulo de tal matriz. El

cálculo de la matriz ill, obliga entonces al cálculo de integrales S,: - m f ds, para polinomios, lo que nos lleva a establecer una fórmula para S, z:"lxZ"' . - x2"'+' d.s

Teorema 111.8 Sea f una función polinomial de la forma X?"~X:"" x P f ' ccln 24 = 2al + 2a2 + . - - + 2a,+, en S,, se tiene

(2a1) ! (2a2)! . . (2an,.,)! (4) x vol (S,) (111.5)

= H ( 2 q , n ) x H(2<1-1,n)...H(2,n)(al)!(a2)!--.(0~+1)! .%

donde l i l (k , n) = -k (k - 1) - n k. (cf. Guíñez y Rueda [3]).

Prueba La fórmula es válida para q = l . En efecto por razones de simetría (le S,

El multi-índice que corresponde a xS es ( 2 a l , - , 2 ~ , + ~ ) con olj = O si i # i , ai = 1. Para este multi-índice el segundo miembro de la ecuación 111.5 da

( 2 a 1 ) ! (2cr2)! . . . (2crT,, ])! ((1) ! x vol (S,) = H(29, n) x II(2q - 1, n ) . . . II(2, n,) (al)! (ap)! - . (a,+l)!

2! l! (-1) - 2 1 X vol (STL) = l70l (S,) = ---vol (Sn )

-2 (2 - 1) - 2n n + l

Page 36: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

Suponemos ahora que la fórmula 111.5 es válida para x:"'2iP2 .zy"", donde

q - 1 = Ol + O2 + - - - + Br, b l , nuestra hipótesis de inducción, y tomemos ,f =

- - x ~ + l c o n q = a, + a2 + . . . + a,+]. Aplicando a este f la fhrmula 111.4 conseguimos

J A, (f) = H (29, n ) . f + (2ai) ( 2 a - 1) -. .x?

i= 1

Integrando sobre la esfera S,, ambos miembros de esta ecuación sale

de donde,

Por la hipótesis de inducción

Reemplazando en la fórmula 111.6 resulta '

(2a,)! - (2a,+,)! (q - l)! q! = ( - -1 ) ,7 H(29, n.) . - . H(2 ,n ) (al)! (a2)! - - . (an+l)!

En particular cuando n = 2, es decir j' = z ~ " l x ~ x ~ : ' r e s u i t a

(201)! (202)! - . - ( 2 0 ~ 1 l)! (q)! L/= x vol (S,) (9 + l)! ( ~ l ) ! (az) ! - (an+ljl

lo que nos permite escribir la siguiente relación de recurrencia para coe f ( 2 ~ . ~ . 2a2, 2ay) =

2nl - 1 cor f (20 1 l 2 0 . ~ ~ % y 3 ) = x roc f (2a1 -

(7+1

Page 37: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

111.2. Ordenamiento de una base de Pk ( k i - n - l ) ! Sabemos que dimP,, = sea Jk,n el intervalo de enteros [l, dimPk.1 y definimos

inductivamente indic(k, n) : Jk,, -+ U .

siendo L t el conjunto de los multi-índices (a , , . . . , a,) con a, 2 O y al t . . . t a, = h-, estipulando para 1 5 p 5 dimPk

y poniendo indic(1, n)(p) = p

para 1 5 p 5 n = dimPk

esta función resulta entonces una biyección, por razonamiento irductivo. Sii inversa

es elp (a l , . . . %) - dim,Pk - dzmPk + elp (01, . . . ~ ~ - 1 )

lo que se comprueba fácilmente.

111.3. Base para Hk

Corolario 111.9 La dimensión de Hk e s

Prueba: por la proposición III.1, dk = dimPk - dimPk-2.

La matriz de A : Pk -+ Tk-, respecto de la base

dim(Pk) dim.(P,-2) ( ~ , i ) ~ = l ,

Page 38: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

donde

es la matriz M, que verifica

siendo b el delta de Dirac. En efecto

Habiendo determinado M, mediante el algoritmo de Gauss, obteiiernos la correspondien-

te matriz escalonada reducida 2 equivalente por filas. Así M esta estrictamente deter- minada. Designemos i,, p = 1 , . . . , dimPk-z, el índice de columnas donde aparece el

primer término no nulo en M en la fila p. Sean jh, h = 1, . . . , dk los índices de columnas restantes. para cada h = 1 , . . . , dk, definimos

siendo

111.4. Ejemplo (comparando una solución real y una cal-

culada)

Resolvemos el problema planteado en la sección 11.7 por el m15todo de Fourier con una

base de polinomios armónicos, y así comparar con la solución real. Para este propósito,

se siguen las instrucciones enumeradas en el apéndice B para escribir un programa en lenguaje C que es mostrado en la lista III.1. Este programa genera las imágenes mostra- das en la figura 111.1 y una salida con los resultados mostrada en la lista III.:?.

Page 39: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

Lista 111.1 : Programa en C para resolver una ecuación diferencial por el mcStodo Fourier para una base de polinomios armónicos esféricos. Este código está en el archivo fuente

double f (vector p)

{ double x = p .x , y = p . y , z = p . z ; return (-(8 - 24 * pow (x , 2) + 20 * y - 120 .- pow ( z , 2) * y ) )

7

// . . . mas polinomios para probar return -(12 * pow ( x , 2) -- 20 * pow ( x , 4 ) ) ;

return -(6 * x - 12 * pow ( x , 3) ) ; return -pow ( x , 2) ;

1

double u (node n)

double x = n .x , y = n . y , z = n .z ; return (4 * pow ( x , 2) + 10 * pow ( z , 2) * y ) -1.35; 11.. . mas polinomios para probar return (pow ( x , 4 ) ) ;

return pow ( x , 3) ; return ((pow ( x , 2 ) - 1 / 3) / 6) ;

1

i n t main ( )

{ tSurface esfera ; int i = 4; esfera = gen ( i ) ;

// tSurfacePlot (esfera , "good ") ;

Page 40: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

esfera = shSolve ( 3 , esfera , O. 1 ) ; shPrintSolution ( e s f e r a , 42) ; i f ( i == 4)

plotSolutionOver (esfera , "solRealPruebaO1 . dat" , ' r ) ;

plotSolutionOver (esfera , "solCalcPruebaO1 . tlat" , ' c ' ) ; plotSolutionOver (esfera , " solErrorPruebaO1 . dat" , ' ( 3 ' ) ;

1 tSurfaceDestroy ( esfera ) ;

1

Lista 111.2: Resultados producido por el program prueba01 r--- -1

MULTI-INDDICES ELP ( A, B, C)

1 ( 1 , o , O) 2 ( o, 1 , 0)

3 ( o , O , 1)

VECTORES BASE ** * VEC # 0001 VEC # 0002 VEC # 0003

1 o O o 1 o o o 1

VECTORES BASE CXWO-NORMALiZPDOS * * t V E # O001 VEC # 0002 VEC # 0003

1.73 O O

O 1.73 O o o 1 73

COEFICIENTES DE FOURiER A-1 ,1= 6.62063e-16 A-1,2= 2.28341

A - 1,3= -1.64108e-15

* * * BASE2 * **

Page 41: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

ELP ( A, B, C) 1 ( 2, o, O) 2 ( 1 , 1, O) 3 ( O , 2 , O) 4 ( 1 , O , 1) 5 ( o , 1 , 1) 6 ( o, o, 2)

VECTORES BASE * * * VEC # O001 VEC # 0002 VEC # 0003 VEC # 0004 VEC # 0005

o - 1 o o -1 1 o o O o o 1 o o O O o 1 o o o O o 1 o o o o o 1

VECTORES BASE -1- ** * VEC # O001 VEC # 0002 VEC # 0003 VEC # 0004 VEC # 0005

O -1.94 O O -1.12 3.87 O O O O

O 1.94 O O -1.12

O O 3.87 O O O O O 3.87 O O O O O 2.24

COEFICIENTES DE FOURIER A-2,1= -7.16453e-16

A-2,2= -6.171 55 A-2,3= -1.18525e-15 A-2,4= 1.48205e-15 A-2,5= -3.5631 4

MULTI-INDDICES ELP ( A , 6 , C)

1 ( 3 , O , 0) 2 ( 2 . 1, O) 3 ( 1 , 2, O) 4 ( O , 3 , O) S ( 2 , o , 1)

6 ( 1 , 1, 1 )

Page 42: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

VECTOHES BASE ** * VEC # O001 VEC # 0002

-0.333 O

o -3 1 o o 1 o O

O o o o o o o o o o

VEC # 0003 o o O

o o 1

o o o o

VECTORES BASE -MAL- ** * VEC # O001 VEC # 0002 VEC # 0003

-2.09 O O

O -6.27 O

6.27 O O

O 2.09 O o o o o o 10.2 o o o O o O

o O o o o o

VEC # 0004 O

o -1

o o o 1 o o o

VEC # 0005 -0.333

o o O o o O

1

o o

VEC # 0004 - 1.21

o -1.21

o O

O

4.83

o o o

VEC # 0006 o

-1.62 o

-1.62 O

o o o

6.48 o

Page 43: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

COEFICIENTES DE FOURIER A-3,1= 1.14674e-15

A-3,2= 0.000551746 A-3,3= 1.71479e-15

A-3,4= -1.91606e-15

A-3,5= -3.006075-15 A-3,6= 14.7338

A-3,7= 3.54941 e-15

IU#\IWO DE N0005c2562

NJM330 DE TRIANGULOS=5120

MhEFO DE Lados=7680

No00 SOL. REAL SOL. CAL 1 1.544 1.555

2 1 .S44 1.555

3 1.544 1.555

4 1.544 1.555

5 -0.2444 -0.2369

6 -0.2444 -0.2369

7 -0.2444 -0.2168

8 -0.2444 -0.2168

9 2.454 2.45

10 -5.154 -5.106

11 -5.1 54 -- 5.106

12 2.454 2.45

13 -1.35 - 1.34

14 1 .O55 1 .O55

15 1 .O55 1 .O55

I R 1.673 1.676

17 1.745 1.748

18 2.65 2.656

1 9 1.745 1.748

20 1.673 1.676

ERROR 0.01031 0.01031

0.01031

0.01031

0.00754

0.00754

0.02765

0.02765

0.00446

0.04865

0.04865

0.00446

0.01 038

0.0001902

0.0001902

0.00353

0.002894

0.00581

0.002894

0.00353

Page 44: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA
Page 45: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

Figura 111.1 : a) Solución real, b) Solución calculada para un polinomio de tercer grado so- bre una malla de 51 20 triángulos generada con gen(3), c) Desviación entre las soluciones calculada y real.

Page 46: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

Conclusiones

Demostramos que es posible aproximar la solución de una ecuación diferencial de Poisson en una esfera tanto por el método de Galerkin como el método dci Fourier. Los

logros en teorla más notables son una fórmula para calcular el producto interno de los gra-

dientes de funciones nodales lo que hace posible independizarse de una parametrización de la superficie y nos permite calcular de forma precisa los elementos de la matriz que

resultan en el problema de Galerkin cuya utilidad se extendería al caso de una ecuación de Poisson no lineal. El método de Fourier nos llevo a demostrar una fórmula para calcu-

lar la integral de un polinomio sobre la esfera que no hemos encontrado en la literatura y

que es válida para una esfera de dimensión arbitraria. La librería de software? desarrollada permite resolver con poco esfuerzo una ecuación diferencial sobre la esfera en el caso li-

neal y tan solo con modificaciones obvias se puede extender al caso no lineal. Además la

librería es un punto de partida para el desarrollo de un software que pueda funcionar so- bre otras geometrías y resolver problemas de ecuaciones diferenciales de orden elíptico y parabólico con otras condiciones de contorno. El trabajo realizado genertl necesidades que marcan la pauta a seguir en el futuro inmediato. Es importante mejonu la precisión

de la integracción numérica sobre el elemento considerado, así como, diseiíar un interfaz

de programación de aplicación adecuada para el manejo de rriallas de triángulos más amistosa al usuario.

Page 47: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

Implernentación del metodo de elementos f iinitos

Se irnplernenta una librería que pone a posposición del usuario las siguic?ntes funcio- nes:

SOLUCIÓN POR EL METODO DE GALERKIN SOBRE LA SUPERF CIE TRIAN- GULADA

solveGalerkinOnThe_tSurface () Solución del problema de Direchlet As2z6 =

por el método de elementos finitos de Galerkin. Debe definir las f ~nciones .f y u antes.

Definición: tSurface solveGalerkinOnThe-tSurface (tsurface esfera, int IastNode- ToBePrinted);

Regresa: La solución por el método de elementos finitos cle Galerkin en forma de

un arreglo contenido dentro de la estructura de datos de una malla de triángulos

(tsurface).

Argumentos:

esfera cinputr (tsurface) Una estructura de datos de una malla de triángulos

(tsurface).

IastNodeToBePrinted <input> (int) Imprime la solución hasta alcaqzar el nodo

IastNodeToBePrinted.

LAS FUNCIONES F Y U

Definición: double f (vector p) double u (node n)

Regresa: el valor correspondiente en una posición (x,y,z)

Page 48: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

p <input> (vector) estructura de datos que contiene las coordenadas (p.x,p.y,p.z)

n <input> (node) estructura de datos que contiene además de las coordenadas (n.x,n.y,n.z) el índice del nodo (n.index).

GENERANDO LA ESTRUCTURA DE LA MALLA DE TRIÁNGULOS PARA UNA

SUPERFICIE

gen() genera una primera superficie triangulada. Luego toma cada triángulo en esta superficie y lo divide en cuatro nuevos triángulos el numero de veces especi- ficado por el usuario. Asl que si empezamos con 20 triángulos y queremos

refinar esta estructura 3 veces obtendremos 20*4*4*4.

tSurface gen(n)

Regresa

output (tsurface) una estructura de datos de la superficie triangulada

Argumentos

n input (int) el número de veces que quiere refinar la superficie triangulada. Cada vez que se refine un triángulo se obtienen cuatro nuevos triángulos.

Lista A.l: Archivo de cabecera que contiene la declaración de las funciones para el usua-

rio pMedio() integrateovero ares(). Este código está en el archivo fuente g:ilerkinltSurfa-

1 vector pMedio ( node. node) ; / double area (node, node, node) ; 1 double in tegrateover ( tSurface ) ; ldouble cubic ln tegrat ion (node,node, node, int , double);

Lista A.2: Módulo en C que define las funciones para el usuario pMedio() iritegrateOver() ares(). Este código está en el archivo fuente galerkin1integrate.c -- #include " tSurface . h"

#include " solveGalerkin . h" #include cs td io . h>

#include <math . h>

double area (node n l , node n2, nodr n3)

Page 49: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

vector v23 = getvector (n2, n3 ) , v21 = getvector (n2, r i l ) ; double uv = (v23. x * v21 . x + v23 . y * v21 . y + vb13.z * v;!l . z ) ,

uu = (v21 .x * v21 .x + v21 . y * v21 . y + v21 . z *: v21 . z ) vv = ( ~ 2 3 . ~ * v23.x + v23.y * v23.y + v23.z 4: v23 . z ) :

return ( s q r t (uu * vv - pow (uv , 2 ) ) / 2) ;

vector pMedio (node n l , node n2)

{ vector pMedio ;

pMedi0.x = ( n l . x + n2.x) / 2;

pMedi0.y = (n1.y + n2.y) / 2; pMedi0.z = ( n l . z + n2.z) / 2;

return (pMedio) ;

1

double i n tegra teover ( t su r face esfera)

{ N double i n teg ra l , A ;

int i ;

node nl , n2, n3;

i n t e g r a l = 0; for ( i = O; i e esfera . nTr iangles; i++)

n l = nodeGet ( es fe ra . t r i ang les [ i ][O] , es fera) ; n2 = nodeGet (es fe ra . t r i ang les [ i ] [ 1 ] , esfera) ;

n3 = nodeGet ( es fe ra . t r i ang les [ i ] [ 2 ] , esfera) ; A = area ( n l , n2, n3) ;

i n t e g r a l += ( f (pMedio ( n l , n3 ) ) + f (pMedio ( n l , n2) ) + f (pMedio (n2, r13))) * A

/ 3.0;

? p r i n t f ("\nlNTEGRAL,DE,fuSOBR~LA,ESFEFübO/~\n". i n t e g r a l ) ;

return i n t e g r a l ;

Page 50: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

tSurface cub ic ln teg ra t ion (node n l ,node n2, node n3, int maxi t , double es)

1 tSurface t r i angu lo = T-SURFACE-EMPTY;

// t r iangulo = t s u r f a c e l n i t i a t e ( t r iangulo , 3, 1 , 3) ;

nodeAdd (1 , t r i angu lo .nodes, n l . x , n l .y , n l . z ) ; / / ****** nodeAdd (2 , t r iangu lo-nodes, n2.x, n2.y, n2 .z ) ; nodeAdd (3, t r i angu lo .nodes, n3 .x1 n3.y) n3.z) ;

tr iangleAdd (1 , t r i angu lo . t r iang les , 1 , 2, 3) ;

return ( t r i a n g u l o ) ;

double in tegrateOverTr iangle (node n l , node n2, node n3)

I double i n teg ra l , A ;

Lista A.3: Archivo de cabecera que contiene la declaración de las funciones para el usua-

rio f() u() solveGalerkinOnThe tSurface(). Este código está en el archivo fucznte galerkinl-

tSurface nlsolveGalerkinOnThe_tSurface ( tSurface , int , i'nt ) ; tSui-face solveGalerkinOnThe-tSurface ( tsur face , int ) ; double f ( vector ) ; double u (node) ; double k (double) ;

Lista A.4: Módulo en C para resolver una ecuación diferencial por el método de elementos finitos de Galerkin. Este código está en el archivo fuente galerkin/solveGalerkin.c --

a

#include " tSurface . h"

Page 51: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

Pinclude " i n t eg ra te . h "

'tinclude "solveGalerk in .h" Pinclude <spConfig . h> riinclude <sprnatrix. h>

Pinclude <rnath. h>

double

iProduct (vec tor v l , vector v2)

C return ( v l . x * v2.x + v l . y * v2.y + v l .z * v 2 . z ) ;

1

/* SOLUCI~V EL m DE GALERKIN -E LA SUPERFICIE

TRIANGUWA

solveGalerkinOnThetSurface ()

Solución del problema de D i r i ch l e t \ Delta-S--2 {U}=F ,por el método de

elementos f i n i t o s de Galerkin . Debe d e f i n i r las funciones F y

U antes.

>>> Def in ic ión :

tSurface solveGalerkinOnThe-tSurface (tsurfcrce esfera , i n t

IastNode ToBePrinted) ;

>>> Regresa : La solución por e l método de elementos f i n i t o s de Galerkin en

forma

de un arreglo contenido dentro de la es t ruc tura de datos de

una malla de t r iángu los ( t su r f ace ) .

>>> Argumentos :

esfera <input > ( t su r f ace ) Una es t ruc tura de datos de una malla de t r iángu los ( t su r f ace )

Page 52: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

IastNodeToBePrinted <input> ( i n t ) Imprime la solución hasta alcanzar e l nodo

IastNode ToBePrinted.

1 »> Def in ic ión : double f (vector p )

double u (node n)

>>> Regresa:

e l valor correspondiente en una posición ( x , y , z )

p <input> (vec to r )

estructura de datos que contiene las coordenadas ( p . x , p . y , p . z

1

n <input> (node) estructura de datos que contiene además de las coortlenadas 1 ( n . x , n . y , n . z ) e l índice del nodo (n . index) .

* / tSurface solveGalerkinOnThe-tSurface ( t su r face esfera, int

IastNodeToBePrinted )

{ char *M; unsigned long nodeomitted ; int e r r o r ;

unsigned longl i , j ; node n l , n2, n3;

vector v23, v32, v31 , v13, v12, v21 ;

Page 53: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

double A, k ;

double normal2 ; spREAL rhs[esfera.nNodes - 11; spREAL rhs-real [es fe ra . nNodes - 11; spREAL sol-calc [es fera . nNodes - 11; spREAL sol-real [es fera . nNodes - 11;

for ( i = O ; i < esfera .nNodes - 1 ; i++) // . . . lnicrando vectores

I r h s [ i ] = 0;

rhs-real [ i ] = 0 ;

sol-calc [ i ] = 0 ;

sol-real [ i ] = 0;

1

/ / p r i n t f ("Número de nodosO/dj \n", esfera .nNodes--1); M =: spCreate (es fe ra . nNodes - 1, O , &e r ro r ) ; spClear (M) ;

nodeornitted = esfera. nNodes; k = in tegra teover (es fera) / (4 * M-PI) ;

for ( i = O; i < esfera. nTr iangles; i + + )

{ n l = nodeGet (es fe ra . t r i ang les [ i ] [ O ] , esfera) ;

n2 = nodeGet (es fe ra . t r i ang les [ i ] [1 ] , esfera) ; n3 = nodeGet (es fe ra . t r i ang les [ i ][2] , esfera) ; A = area ( n l , n2, n 3 ) ;

v13 = getvector ( n l , n3) ; v31 = getVector (n3, n l ) ;

l v32 = getvector (n3, n2) ;

v23 = getVector ( r 2 , n3) ; v21 = getvector (n2, n l ) ; v12 = getvector ( n l , n2) ;

I i f ( ! ( n l . index == nodeomitted ) )

54

Page 54: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

spADD-REAL-ELEMENT (spGetElement (M, n l . iridex, n l . index) , iProduct (v23, v23) / (4 * A ) ) ;

i f ( ! ( n l . index == nodeornitted 1 1 n2. index =.= nodeoinitted) )

spADD-REAL-ELEMENT (spGetElernent (M, n l . index , n2. index) , -iProduct (v31, v32) / (4 * A ) ) ;

i f ( ! ( n l . index == nodeornitted 1 1 n3. index == nodeoinitted ) ) spADD-REAL-ELEMENT (spGetElement (M, n l . index , n3. index ) ,

.-iProduct (v21, v23) 1 (4 * A ) ) ; i f ( ! ( n2. index == nodeornitted 1 1 n l . index == nodeomitted) )

spADD-REAL-ELEMENT ( spGetElement (M, n2. i ndex , n l . index ) , - iProduct (v32, v31 ) / (4 * A ) ) ;

i f ( ! ( n2. index == nodeomitted ) )

spADD-REAL-ELEMENT ( spGetElernent (M, n2. index , nf! . index ) , iProduct (v13, v13) i (4 * A ) ) ;

i f ( ! ( n2. index == nodeomitted [ 1 n3. index == nodeomitted) ) spADD-REAL-ELEMENT (spGetElernent (M, n2. index , n3. index) ,

-iProduct (v12, v13) / (4 * 1\) ) ; i f ( ! (n3. index == nodeornitted ( 1 n l . index == nodectmitted) )

spADD-REAL-ELEMENT (spGetElement (M, n3. index , n'l . index ) , - iProduct (v23, v21) / (4 * 1 4 ) ) ;

i f ( ! ( n3. index == nodeomitted 1 ( n2. index -= nodeclmitted ) ) spADD-REAL-ELEMENT (spGetElement (M, n3. index , n2. index) ,

-iProduct (v13, v12) / (4 * A ) ) ; i f ( ! ( n3. index == nodeornitted) )

spADD-REAL-ELEMENT (spGetElement (M, n3. index , n3. index) , iProduct (v12, v12) / (4 c A ) ) ;

i /* . . . RhS element * numerical i n tegra t ion * /

i b ( ! ( n l . index == nodeornitted) )

rhs [ n l . index - 11 += ( f (pMedio ( n l , n3) ) + f (pMedio ( n l , n2 ) ) - 2 * k ) * A 1

6.0;

i f ( ! ( n2. index == nodeornitted) ) rhs [n2. index - 1 ] += ( f (pMedio (n2, n3) ) +

f (pMedio (n2, n l ] ) ) - 2 .i: k ) * A /

6.0 ;

i f ( ! ( n3. index == nodeomitted ) )

Page 55: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

rhs[n3.¡ndex - 11 += ( f (pMedio (n3, n l ) ) + f (pMedio (n3, n 2 ) ) - 2 * k ) * A /

6.0;

1

/ / . . . Store the real so lu t ion esfera . solReal = vCreate-dbl (es fe ra . nNodes - 1 ) ; fa r ( i = 1; i c= esfera.nNodes - 1; i++)

sol-real [ i - 11 = esfera . solReal[ i - 11 = u (nodeGet ( i ,

esfera ) ) ;

Ud e f i ne MULTIPLY-TO-SEE-WHAT-HAPEN

U i f d e f MULTIPLY-TO-SEE-WiiAT-HAPEN Create lnternalVectors (M) ; spMul t ip ly (M, rhs-real , so l - r ea l ) ;

Uendif

# d e f i n e FACTOR-AND-SOLVE

C i f d e f FACTOR-AND-SOLVE er ror = spFactor (M);

spSolve (M, rhs , sol-calc ) ;

// The next f i v e I ínes wri tes the las t nodes coordinates

p r i n t f , es fera . nTriangIe:;) ;

p r i n t f ( " ~ U D E u ~ Y ' \ n " , es fera .nSides) ;

double valorUltirnoNodo ; n l = nodeGet ( es fera . nNodes , esfera ) ;

p r i n t f ("UItirn~~Nodo=,~A\tU(~Y~,)tYg,~"/bl)=%~\n", n l . index , n l . x , n l . y , n l . z , valorUltirnoNodo = u ( n l ) ) ;

far ( i = 1; i <= esfera.nNodes - 1; i++)

sol-calc [ i - 1 ] += valorUltirnoNodo ;

es fera . so lca lc = vCreate-dbl ( es fera . nNodes - 1 ) ; for ( i = 1; i <= esfera.nNodes - 1; i + + )

Page 56: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

esfera . solCalc [ i - 11 = sol-calc [ i - 11; #endif

esfera. er ror = vCreate-dbl (es fe ra . nNodes - 1) ; I for ( i = 1; i <= esfera.nNodes - 1; i++)

esfera. er ror [ i - 11 =

fabs (fabs (es fera . solReai[ i - 11) - fabs (es fe ra . solCalc [ i

- 11)) ;

// . . . Error en Norma L2 normal2 = 0;

for ( i = 1 ; i <= esfera .nNodes - 1 ; i++) normal2 += esfera. error [ i - 11;

normaL2 *= sqr t (2 * M-PI / 3 / esfera. nNodes) ;

1 p r i n t f ( n - E N m L 2 = " / g \ n 1 1 1 norrnaL2);

#define PRINT-SOLUTION # i f d e f PRlNT-SOLUTION

i f (IastNodeToBePrinted >= esfera.nNodes - 1)

{ p r i n t f ("0/~,,"/o12S,,O/o1lSS,,O/o12~uuO/o12Su,0/o1~\n", "JJODO",

"SO/REALV, "SO/CAL", "RHS-INT", "RHS-RE4LW, "

ERROR" ) ; for ( i = 1; i <= esfera.nNodes - 1; i++)

{ p r i n t f (""/c66u,"/01laguu"/o1lag,u~o1lagu,"/o1lag,,,"/o1lag\n", i ,

esfera. solReal[ i - 1 1 , esfera. solCalc [ i - 1 1 , r h s [ i - 11,

rhs-real[ i - 11, esfera. error [ i - 11) ;

1 1

else

{ p r i n t f ( " O/&,, 0/012suu O/o12sU, O/o12sUu 0/012s,u %l2s \ n " , " J\K-)O1' ,

"SOL. REAL" , "SOL-CAL" , "RHS-INT" , "RHS-REAL" , "

ERROR" ) ; for ( i = 1 ; i <= IastNodeToBePrinted; i++)

Page 57: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

p r i n t f ("0/~,u%!2.4g,u0/o12.4g,,0~12.4gu~O612.4g~u3~12.4g\n" I

, 1 ,

es fe ra . solReal [ i - 1 1 , es fera . solCalc [ i -- 1 1 , r h s [ i - 11,

rhs-real [ i - 11, esfera. e r r o r [ i - 11) ;

1 return (es fe ra ) ; l

Lista A.5: Archivo de cabecera que contiene la declaración de las funciones para el usua- rio gen() tSurfacePlot() plotSolutionOver() y la estructura de datos tsurface. Este código

está en el archivo fuente galerkin1tSurface.h

typedef double ** rnMatrix-dbl ; typedef unsigned long * * rnMatrix-int ; typedef double *vectorArray-of-d b l ;

typedef struct

{ mMatrix-dbl nodes; rnMatrix-int t r i ang les ; rnMatrix-int sides ;

vectorArray-of-dbl solReal ; vectorArray-of-dbl so lca lc ;

1 vectorArray-of-dbl e r ro r ; ( unsigned long n S i d e s ; 1 unsigned long nTriangles ;

unsigned long nNodes ; ) tSurface ;

#define T-SURFACE-EMPTY {NULL, NULL, NULL, NULL, NUY, NULL, 0 ,O ,O}

typedef struct

E unsigned long index ;

dsuble x , y , z ;

Page 58: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

) node;

Itypedef struct

1 ) t r i a n g l e ;

typedef struct

{ double x , y , z ;

} vec tor ;

tSurface gen ( i n t ) ; tSurface f s t (void) ; tSurface gntsur face ( t s u r f a c e ) ; void tSufraceDestroy ( t su r f ace ) ; void tSur facePlot ( tsur face , char * ) ; node nodeGet (unsigned long , tSurface ) ; vector getvector (node, node) ; void plotSolut lonOver ( t su r f ace , char * , char); vectorArray-of-dbl vCreate-dbl (unsigned long ) ;

#define HELP-TO-PLOT "#GNUPLOTUf i l e \nU\

#*** EJEMPLO * * * \ n \

# . . . l a esfera es guardada en e l archivo \ "hsuri'ace \ " \ n i #se1 hidden noo f f se t \ n \

#se.t isosamples 100\n\

#set size square\n\

#set t i c s l e v e l O\n\ #set s t y l e data l i n e \ n \

#set cbrange [ . 5 : 2 ] \ n \

#set xrange [ - l : l ] \ n \

#ser yrange [ - 1 : 1 ] \ n \

#set view 60,30,1 ,1.5\n\

#set te rmina l X l l \ n \

Page 59: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

#unset pm3d\n\ # s p l c t \"hsurface\" ,not i t1euwuI ine,Iw~2Ult ,3,uex~(2O*(sq~~t(1-x

1 **2-y**2)-1/(1 -x**2-y**2) ) )+sqr t (.95-x**2-y**2) -0.05,riotit le-w

I ,A lineult,2\n\ #pause -1 \ " Hit,return,to,continue \ " \ n \

#set pm3d\n\ # s p l o t \"hsurface\",notitle,wulineulwy2,It ,3,,exp(20*(sq~t(l-x

**2-y**2)-1/(1 -x**2--y**2)) )+sqr t (1-~**2-y**2)~ ,not i t le~ ,w, l ine ,

Iw-2, l t ,0\n\

# \n \

# # ... GUARDANX)CIXD PNG\n\

#set terminal png size 1000,1000 crop enhanced\n',

#set output \ " d i s t r i bu t i on -med.png\"\n\

#set terminal png size 1000,1000 crop enhanced\n\ I #set output \ " d i s t r i b u t i o n -big . png \ " \n \

!

#sp lo t \"hsurface\",not i t leuw,I ine, lwu2UItY3,ue~p(20*(~qrt( l -~ ~ ~ 2 - y ~ ~ 2 ) - i / ( i - ~ ~ ~ 2 - - y ~ ~ 2 ) ) ) + s q r t ( 1 - ~ ~ ~ 2 - y - - 2 ) , n o t i t l e ~ ~ w ~ l i n e ~ 1 1 ~ ~ 2 - 1 t UO\n\Uvg i

Lista A.6: Módulo en C que contiene la definición de las funciones necesarias para gene-

rar una malla de triángulos esférica. Este código está en el archivo fuente ../galerkin/tSur-

vectorArray-of-dbl

vCreate-d bl ( unsigned long m)

{ vectorArray-of-dbl vector ;

Page 60: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

unsigned long i ; / /Reserva mernoriz para e l vector vector = c a l l o c (m, sizeof (double)) ; return ( vec to r ) ;

1

mMatrix-dbl

mCreate-dbl (unsigned long m, unsigned long n)

i mMatrix-dbl matr ix ; unsigned long i ; l / /Reserva memoria para e l vec tor de punteros : matr ix [.l matr ix = c a l l o c (m, sizeof (double * ) ) ;

/ /Reserva memoria para toda l a matr iz : ma tr ix [][] matr ix [ O ] = ca l l oc (m * n, sizeof (double) ) ; / /Se asigna e l va lor para los elementos de l vector de punteros

matr ix [] for ( i = 1 ; i c m ; i++)

ma t r i x [ i ] = matr ix [ i - 11 + n ; return ( matr ix ) ;

mCreate-int (unsigned long m, unsigned long n)

{ rnMatrix-int rnatrix ;

unsigned long i ; 1 / /Reserva memoria para el vector de punteros: matr ix [ l matr ix = c a l l o c (m, sizeof (unsigned long * ) ) ;

/ /Reserva memoria para toda la matr iz .- matr ix [][] matr ix [O] = ca l l oc (m * n , sizeof (unsigned long) ) ; / , /Se asigna e l va lor para los elementos de l vector de punteros

ma t r ix [] for ( i = 1 ; i < m ; i++)

m a t r i x [ i ] = matr ix [ i - 11 + n ; return ( m a t r i x ) ;

1

Page 61: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

1 void 1 nodeAdd (unsigned long n Fila , rnMatrix-dbl node, rlouble x . double

y , double z )

{ double norm = sq rt (pow (x , 2) + pow ( y , 2) + pow ( z , ;?) ) ; -nFi la; node[nFi la ] [O] = x 1 norm;

n o d e [ n F i l a ] [ l ] = y / norm;

1 node[nFi la ] [2 ] = z / norm; I

nodeCopy () copy a vector row node from mOldNode matrix to mNeirNooe matrix ,

* / / void l / nodecopy (unsigned long "Fila , rnMatrix-dbl rnOldh!ode, rnMatrix-dbl ,

1 unsigned lonq i = O; 1 fo r ( i = O; i < 3; i++)

mNewNode[nFila ] [ i ] = rnOldNode[nFila ] [ i 1; 1

void triangleAdd (unsigned llong nFi la ,

mhnatrix-int t r iangle , unsigned long i , unsigned long j , vnsigned lang k ) 1

-nFi la ; t r i ang le [nF i l a ] [O ] = i ; t r iang le [ n F i l a ] [ l ] = j ;

t r iang le [ n F i l a ] [ 2 ? = k ;

1

/*

t s u r f a c e l n i t i a t e (surface ,nNodes, nTriangles , nSides)

Page 62: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

i n i t i a t e s an empty t r iangu la ted surface data s t ruc ture (sur face ) whit

the number of nodes (nNodes) the number of t r i ang les (

n Triangles ) and the number of sides (ns ides) . The s ize argumerlts nNodes,

n Triangles and nSides are ignored i f the t r iangu la ted surface data s t ruc ture

is not empty and only the (surface , argurnent is used to re-in i t i a t e to

a new

size the t r iangu la ted surface data s t ruc tu re .

tSur fa c e l n i t i a t e (sur face) r e - i n i t i a t e s an non empty t r iangu la ted surface data s t ruc ture (

surface) using the old s ize tu accomplish i t .

tSurface t s u r f a c e l n i t i a t e (surface , nNodes, nTriangles , nSides)

tSurface t s u r f a c e l n i t i a t e (sur face)

REWRNED ( t su r f ace ) a t r iangu la ted surface data s t ruc tu re .

surface input ( t su r f ace ) a t r iangu la ted surface data S t ruc ture

nNodes input (unsigned long)

the number of nodes used tu i n i t i a t e the surface data

s t r uc tu re .

n Triangles input (unsigned long)

the number of t r iang les used to i n i t i a t e the surface data s t ruc tu re .

/ nSides input (unsigned long)

63

Page 63: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

the number of sides used to i n i t i a t e the surface data I

I s t r u c t u r e .

* / tSurface t s u r t a c e l n i t i a t e ( t s u r f a c e o l d , . . . )

1 unsigned long i ; tSurface new;

í f ( o l d .nNodes == O && o ld . nTriangles == O && o ld . nSidt?s == 0)

I va-l i s t args ; va-start (args , old ) ; new . nNodes = va-arg ( args , i n t ) ; new. nTriangles = va-arg (args , i n t ) ; 1 new. nSides = va-arg (args , i n t ) ; 1

l

va-end ( args) ; new. nodes = rnCreate-dbl (new. nNodes , 3) ; new. t r i ang les = mcreate-int (new. nTriangles , 3) ; new. sides = rnCreate-int (new. nSides , 2) ;

{ new. nSides = 3 + o ld . nTriangles + 2 * o ld . nSides; new. nTriangles = 4 * old . nTriangles ; new. nNodes = old . nNodes + o ld . nSides ;

new. nodes = mcreate-dbl (new. nNodes, 3) ; for ( i = 1 ; i c= old.nNodes; i++)

nodeCopy ( i , old . nodes, new. nodes) ;

I new. t r i ang les = mcreate-int (new. nTriangles , 3) ;

1 new. sides = rncreate-int (new . nSides , 2) ;

1 new. solReal=NULL; / new. solCalc=NULL;

/ new. error=NULL;

Page 64: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

return (new) ;

/ void 1 tSurfaceDestroy ( t sur face toBeDestroyed) l

1 f r e e (toBeDestroyed . nodes [ O ] ) ; 1 f r e e (toBeDectroyed . nodes) ; 1 1 f ree (toBeDestroyed. t r i ang les [O]) ; 1 1 f ree (toBeDestroyed. t r i ang les ) : I 1 froe (toBeDestroyed . sides [O]) ; l 1 free (toBeDestroyed . sides j ; / i f (toBeDestroyed . sol Real != NULL) 1

f ree (toBeDestroyed. colReal ) ; i f (toBeDestroyed . solCalc != NULL)

/ f ree ( toBeDestroyed solCalc) ; I 1 i f (toBeDestroyed . error != NULL) 1 1 f ree (toBeDestroyed . error ) ; 1

I surface I and includes i t i f i t isn ' t . The n l and n2 nodes both belong a

group of

1 three nodes stored in a t r i ang le ar ray. This funct ion is used 1

tSurface IocateNodeBetween ( n l , n2, o l d , new)

R r n N E D A tSurface s t ruc ture data.

n l , n2 input (unsigned long)

Page 65: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

I two of the three nodes included in the row of a t r iang le

1 matrix that w i l l be stored independently as a side in a row of another

ma trix

of s ides. Both the t r iang le m a t r i x [ ] [ 3 ] ano' de side matrix

t1121 are i part of a tSurface s t ruc ture passed as argument. 1

old input ( t su r face )

a s t ruc ture that contains the old t r iangulated surface.

* / unsigned long IocaieNodeBetween (unsigned long n l ,

unsigned long n2, tSurface old , tSurface new)

{ double x , y , z ; unsigned long j = 0; while ( 1 )

{ i f ( ( n l == o ld . s ides[ j ][O] && n2 == o ld . sides [ j ][l 1) 1 1

(n2 == old . sides [ j ][O] && n l == old . sides [ j ] [ ' 1) ) return ( j + 1 + old . nNodes) ;

else i f ( o l d . s i d e s [ j ] [ O ] == O && o l d . s i d e r ; [ j ] [ l ] === 0)

I old . sides [ j ] [O] = n l ; old . sides [ j ] [ 1 ] = n2; x = (o ld.nodes[nl - 1 ] [0 ] + old.nodes[n2 - 1 ] [ 0 ] ) 1 2;

y = (old.nodes[nl - 1 ] [ 1 ] + old.nodes[n2 - l ] [ i ] ) / 2;

z = (o l d . nodes[nl - 1] [2 ] + old . nodes[n2 - 1 ] [2 ] ) / 2;

nodeAdd ( j + 1 + old.nNodes, new.node:;, x , y , z ) ; return ( j + 1 + old .nNodes) ;

1 j ++;

tSurface

f s t (void)

Page 66: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

E / * Build an icosahedron from three mutually perpendicular

golden rectangles *: /

tSurface icosahedron=T-SURFACEEMPTY;

dauble phi = (1 + pow (5 , 0.5)) / 2.0;

icosahedron = t s u r f a c e l n i t i a t e (icosahedron , " 2, 20, 30) ;

nodeAdd nodeAdd

nodeAdd nodeAdd nodeAdd

nodeAdd nodeAdd

nodeAdd

nodeAdd nodeAdd

nodeAdd

nodeAdd

(1 , icosahedron . nodes, -phi , 0, -1) ; //******: (2 , icosahedron . nodes, -phi , O , 1 ) ;

(3 , icosahedron.nodes, ph i , 0, 1 ) ; (4 , icosahedron. nodes, phi , 0, -1); (5 , icosahedron . nodes, -1, phi , 0) ; / /*+****: ( 6 , icosahedron. nodes, 1, phi , 0) ; (7 , icosahedron. nodes, 1 , -phi , O) ; ( 8 , icosahedron . nodes, -1 , -phi , O) ;

( 9 , icosahedron . nodes, 0 , 1 , ph i ) ; //****+': (1 0, icosahedron . qodes , 0 , -1, phi ) ; (1 1 , icosahedron . nodes, 0 , -1, -phi) ; (12, icosahedron .nodes, 0 , 1 , -phi) ;

( 1 , icosahedron. t r iang les , 5, 6, '3 ) ; ( 2 , icosahedron . t r iang les , 5 , 9, 2 ) ;

( 3 , icosahedron. t r iang les , 5, 2 , 1 ) ;

( 4 , icosahedron. t r iang les , 5 , 1, 12) ;

( 5 , icosahedron. t r iang les , 5, 12, 6) ;

( 6 , icosahedron. t r iang les . 1, 11, 12 ) ;

(7, icosahedron . t r iang les , 1 1 , 1 2, 4) ; ( 8 , icosahedron . t r iang les , 12, 4, 6) ;

(9 , icosahedron. t r iang les , 4, 6, 3 ) ; (1 0 , icosahedron. t r iang les , 6 , 3 , 9) ;

(1 1 , icosahedron. t r iang les , 3 , 9, 10) ;

(1 2 , icosahedron . t r iang les , 9 , 10, 2) ; (13, icosahedron. t r iang les , 10, 2, 8 ) ; (14, icosahedron. t r iang les , 2 , 8 , 1) ; (1 5 , icosahedron. t r iang les , 8 , 1 , 11) ; (1 6 , icosahedron. t r iang les , 7, 11, 4) ;

Page 67: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

t r iangleAdd (1 7 , icosahedron . t r iang les , 7, 4, 3) ; tr iangleAdd (1 8 , icosahedron . t r iang les , 7 , 3 , 10) ; tr iangleAdd (1 9 , icosahedron . t r iang les , 7, 10, 8) ; tr iangleAdd (20, icosahedron. t r iang les , 7, 8, 11) ;

return ( icosahedron) ;

1

1 gntsurface ( t su r face old )

unsigned long i = O , j = 1 ; unsigned long n1 , n2, n3, n4, n5, n6; tSurface new;

new = t s u r f a c e l n i t i a t e ( o l d ) ;

o ( i = 1; i <= o ld . nTriangles; i++)

{ n l = o ld. t r i a n g l e s [ i - 1 ] [ 0 ] ;

n3 = o l d . t r i a n g l e s [ i - 1] [1 ] ; n5 = o ld. t r i ang les [ i - 1] [2 ] ; n2 = IocateNodeBetween ( n l , n3, old , new) ; n4 = IocateNodeBetween (n3, n5, old , new) ;

n6 = IocateNodeBetween ( n l , n5, old , new) ;

t r iangleAdd ( j , new. t r iang les , n l , n2, n6 j ; tr iangleAdd (++j , new. t r iang les , n2, n3, r14) ;

1 t r iangleAdd (++ j , new. t r iang les , n6, n2, n4) ; tr iangleAdd ( + + j , new. t r i a n g l e s , n6, n4, n 5 ) ;

++j ;

1 tSurfaceDestroy (o l d ) ; I

/ return (new);

Page 68: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

GBVHWW3 LA ESlRucnlR4 DE LA MALLA DE TRIÁNGULOS PARA U M SUPERFICIE

gen 0 genera una primera super f ic ie tr iangulada . Luego toma cada

t r iángulo en esta super f ic ie y lo d iv ide en cuatro nuevos triángrrlos el

número

de veces especificado por el usuario. Así que .si empezamos con

20

t r íángulos y queremos re f inar esta estructura .3 veces obtendremos

20*4*4 *4 .

tSurface gen ( n )

1

R m M output ( t su r face) una estructura de datos de la super f ic ie tr iangulada l

1 n input ( i n t )

1 el número de veces que quiere re f inar la super f ic ie

I t r iangulada. Cada

( vez que se ref ine un t r iángulo se obtienen cuatro nuevos

I t r iángu los .

lgen ( i n t n )

tSurface new;

in t i ;

new = f s t ( 1 ; for ( i = 1 ; i e= n ; i++)

new = g n t s u r f a c e (new) ; rsturn (new) ;

Page 69: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

vector getvector (node n l , node n2)

{ vector d i f f ; d i f f . x = n2.x - n l . x ;

d i f f . y = n2.y - n l . y ; d i f f . z = n2.z -- n l . z ;

return ( d i f f ) ;

1

node nodeGet ( unsigned long nodeNumber , tSurface surfa.ce )

{ node n ; n . index = nodeNunaber ;

n . x = sur face. nodes[nodeNumber - 1 ] [O]; n . y = surface . nodes[nodeNurnber - 1 ] [ 1 ] ; n . z = surface . nodes[nodeNumber - 1 ] [ 2 ] ;

return n ;

1

void

tSur facePlo t ( t su r f ace toBePloted, char *fileNarne)

unsigned long i , j ;

node n l . n2, n3 ; FlLE * f i l e ; f i l e = fopen (f i leName , "w" ) ; f p r i n t f ( f i l e , "#GNUPLCTT,file\nW);

f p r i n t f ( f i l e , HELP-TO-PLOT) ;

for ( i = 0; i < toBeP10ted. nTr ianglec; i ++)

{ n l = nodeGet ( toBePloted . t r i ang les [ i ][O] , toBePloted) ; n2 = nodeGet ( toBePloted. t r i ang les [ i ] [ l ] , toBePloted) ;

n3 = nodeGet ( toBePloted . t r i ang les [ i ] [ 2 ] , t ~ B e P l o t e d ) ;

Page 70: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

f p r i n t f ( f i l e , "%12g,,"/012g,o/01~\n\

0/01'2gU,2 OIol2gU O/olZg \ n \ n \ %12g,, ?4012g, Yo12g \ n \

%12gunA O/ol2gU W2g \ n \ n \ n " , n l . x , n l .y , n l . z , n2.x , n2.y, n2.2, n l . x , n l . y , n l . z ,

n3 .x , n3.y, n3 . z ) ;

1

fc lose ( f i l e ) ;

1

void plotSolut ionOver (tSurZace esfera, char * f i leNarn~ , char

inputRealOrCalculated )

I unsigned long i , j ;

dauble n l Relocate , n2Relocate , n3Relocate ; double rnax, rnin ;

vectorArray-of-dbl solut ionToBePrinted ; node n l , n2, n3; FlLE *frie ; f i l e = fopen (fileName , "w") ;

f p r i n t f ( f i l e , HELP-TO-PLOT) ;

i f ( inputRealOrCalculated == ' r ' )

solut ionToBePrinted = es fera . solReal ;

else if ( inputRealOrCalculated == ' c ' )

solut ionToBePrinted = es fera . solCalc ; else i f ( inputRealOrCalculated == 'e ' )

solutionToRePrinted = esfera. error ;

/ for (max=O, i =O; i <esfera. nNodes-1; i ++) {

Page 71: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

for (min=O, i =O;¡ <esfera .nNodes-1; i ++){

min= (min<solut ionToBePrinted [ i 1 ) ? rnin: soli i t ionToBePrinted [

for ( i = O; i esfera. nTr iangles; i++)

t n l = nodeGet (es fera . t r i ang les [ i ][O] , esfera) ; n2 = nodeGet (es fe ra . t r i ang les [ i ] [ 1 ] , esfera) ; n3 = nodeGet (es fera . t r i ang les [ i 1 [ 2 ] , esfera) ;

i f (solut ionToBePrinted [ n l . index]>=O) n 1 ReIocate=l; / /+so lu t ionToBePr in tec~[n I . index]/max

/20;

else n l Relocate = l ;

i f (solut ionToBePrinted [n2. index]>=Q)

n2ReIocate = l ; / /+solut ionToBePrinted[n2. ind&~x]/max

/20; else

n2Relocate=1; i f ( solutionToBePrinted [n3. index]>=O)

n3ReIocate= 1 ; / /+solut ionToBePrinted[n3. index]/mau

/20;

else n3Relocate = 1 ;

f p r i n t f ( f i l e , "0/012g,,%1@-"/01@,%1~\n\

%12g,, O/012g, %1Zg, O/012g \ n \ n \ %12gu, "/ola, %laU %l2g \ n \

%12~,,~/~12g, %lZg, Y'lZg \ n \ n \ n " , n l . x * n l Relocate , n l . y * n l Relocate , n l . z * n l Relocate , solutionToBePrinted [ n l . index] , n2. x*n2Relocate , n2. y*n2Relocate , n2. z*n2Relocate ,

solutionToBePrinted [n2. index] ,

n l . x * n l Relocate , n l . y * n l Relocate , n l . z * n l Relocate , solutionToBePrinted [ n l . index] ,

Page 72: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

n3. x*n3Relocate , n3. y*n3Relocate , n3. z*n3Relocate , soIi i t ionToBePrinted [n3. index ]

> ; 1

fc lose ( f i l e ) ;

1

Lista A.7: Archivo de proyecto galerkin1Makefile

CCEgcc ! # -1gsl -1gslcblas LIB=-lrn -1sparse #-rntune=pentiurnZ

LDFLAGS= CFLAGS-g HEADERStSurface . h

M O W L I t S u r f a c e . c poisson . c

OFILES=tSurface .o solveGalerkin .o in tegrate .o n lsolveGalerk in .o LIBRARY= I í b sg . a LOADLIBES=$ ( LIBRARY) -Im - I S pa rse

$(LIBRARY) : $(OFILES) ar r 9@ $?

ran l i b $@

solveGalerkin .o : n lsolveGalerk in .c solveGalerkin . c solveGalerkin

. h tSurface . h

Page 73: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

in tegrate .o : in tegrate . c tSurface .h solveGalerkin . h

clean : I i rm - f pruebao? * . bak $(LIBRARY) $(CXJlPüT) * . o core *.swp

1 rrn - f * . dat

Page 74: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

Irnolsrnentación del método de Folmrieñ para una base en el espacio de polinomios armónicos hornogénec,~ res?rinqldas w a la esfera.

Escribimos una librería de funciones para resolver una ecuacibn diferencial de Poisson sobre la esfera por el método de Fourier de modo que el usuario tenga que tomar en cuenta unas pocas consideraciones que en seguida se enumeran:

1. escribir la definición de la solución real J y calculada .u.. U debe retornar cero si no se conoce.

2. usar la función gen ( ) para discretizar la esfera usando una malla de ':riángulos.

3. usar la función shSolve ( ) para calcular la solución del problema. Aquí podemos

indicar hasta que grado queremos la base.

4. escribimos la solución con la función shPrintSolution 0.

5. podemos dibujar en escala de colores la solución calculada, real y el error sobre la esfera con la función piot Solutionover ( )

6. finalmente liberamos la memoria que ocupa la estructura t Surf aceCest roy ( ) .

B.1. Referencia

SOLUCIÓN POR EL MÉTODO DE FOURIER SOBRE LA SUPERFIC;IE TRIANGU,.

LADA

Page 75: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

shSolve() Solución del problema de Direchlet \Delta-S-2{U)=F por el inétodo Fou- rier usando polinomios armónicos homogéneos. Debe definir las filnciones F y U antes.

Definición: tSurface shSolve (irit grado, tSurface,double);

Regresa: La solución por el método de Fourier para una base de polinomios ar-

mónicos esféricos en forma de un arreglo contenido dentro de la estructura de datos de una malla de triángulos (tsurface).

Argumentos:

grado <input> (int) grado máximo a usar para aproximar la solución.

error <input> (double) Criterio de parada usando la igualcad de Parreval.

= ESCRIBIENDO LA SOLUCION

Definición: void shPrintSolution (tsurface esfera, int IastNodeToBePrinted);

Regresa: void.

Argumentos:

esfera <input> (tsurface) Una estructura de datos de Lna malla de triángulos

(tsurface).

IastNodeToBePrinted <input> (int) Imprime la solución hasta alcanzar el nodo

IastNodeToBePrinted.

Listados de la librería

Lista B.l: Archivo de cabecera que contiene la declaración de todos los datos y todas las funciones usadas en la librería, así como, parámetros que sirven para configurar el comportamiento de la librerCa durante el tiempo de compilación. El código está en el

archivo fuente f0urierkhDefs.h - - - - - - -- - - .- --- - -- - -- -- p.

Imprime información re levante para l a funcior~ createBase Vectors ()

// def in ida en shBase. c

#define PRINT-MULTI-INDICE 1

# def i n e SHOW-EFT-MATRIX O

#define SHOW-USED-INDICES O #de f i ne WRITEBASE-MATRlX 1

// Imprime la matriz base. Cada columna es un vector base del

espacio

Page 76: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

// de polinomios armónicos homogéneos restr ingidos a la // esfera. #det i n e WR~-BASE-W~IX-ORTHORTHONORMALIZED 1

// Activa código usado para probar las funciones definidas en el

archivo // S hAritmetica . c #define COEF-TEST O

// CXNMAlUES DE LA lUAQUINA #define DBL-EPSILON 8.9e-15 /*

S S I-MAKNC DATA SHEET S7lWcnlRE

>>> Structure f i e l ds :

k ( i n t ) The polynornials degree .

dimPk ( i n t ) Is the dimension of the polynomials of degree k .

dimPkmenos2 ( i n t ) Is the dimenssion of the polinomial whit ordsr k-2.

matrizBase (double *)

A matrix array whose columns vector are a ba.se for tlle polinomial

expansion .

1 typedef struct

1 { int k ; 1 int dimPk;

polynornials of

i n t dimPkmenos2 ; polynomials of

/* is the dirnension of the

degree k . * /

/* i s the dimension of the

Page 77: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

degree k-2. * /

double *matrizBase ; struct

{ int m, n;

) matrizBaseSize ;

char *shFurierSystem ; /* i t ' S a pointer to a sparse ma trix

of the second member of the next equation

f * Y-{¡} = (sum-{¡=O) ( A-{k,

1 1 * Y-l i l ))

* Y- i i l where : 1 e= i e-.dim Pk and 1 e= j

c=dim Pk

* / char *M-Pk; /* i t 'S untended that th is should

be

a pointer a sparse matrix that contains the transforrn matrix

for the Laplace operator *** W T USED YET * /

) shDataSheet ;

/* the next structure is used to handle a multi--index vector*/ typedef struct

{ int a , b , c ;

) multi- indice ;

multi- indice ind ic ( i n t , i n t ) ; int elp ( i n t , i n t , i n t ) ;

typedef shDataSheet *shDataSheetPtr ;

Page 78: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

int j ( i n t , i n t ) ; void shBuildBaseVectors (shDataSheet *) ; // . . . definida en

shBase . c void shOrthoNorrnalizeBaseVectors (shDataSheet *) ; // ...

definida en shBase. c

double *baseMatrixGetElement (shDataSheet * , int , int ) ; !

double f a c t o r i a l ( i n t , i n t ) ; double coef ( i n t , int , i n t ) ;

double internalProduct (shDataSheet * , int , i n t ) ; void shBuildFourierSystem (shDataSheet *) ; / / . . . definida en

shExp. c shDataSheet *shCreateDataSheet ( i n t ) ;

#include <s td l i b .h>

#define AUOC(type , number) ( ( type *) malloc ( sizeof ( type :I *(number)

l ~ d e f i n e REALLOC( ptr , type , number) \ pt r = (type *) real loc ((char *) ptr , ( unsigned) ( si;!eof ( type)

*(number) ) )

#define FREE(ptr) { i f ( ( p t r ) != NULL) f ree ((char *) ( p t r ) ) ; ( p t r ) = NULL; }

/* Calloc that properly handles allocating a cleared vector. * / #define CALLOC( ptr , type , nurnber) \ { int i ; ptr =ALLOC(type, nurnber); \

i f ( p t r != (type *)NULL) \

for(i=(nurnber)-l;i>=O; i--) p t r [ i ] = ( type) O; \

1

Page 79: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

typedef double matrix ;

#define CREATE-MATRIX(type , s ize) ( ( type *) cal loc ( ( size) ,(sizeof

( t y p e ) ) ) )

/* ADDDDREALDDamAENT Adds a real number in the direction pointed hy ptr . ptr is the direction of an element of a matrix Row artd Col.

* / #define ADD-REAL-ELEMENT( ptr , real ) *( ptr)+=(double) ( real ) #define EQUAL-REAL-ELEMENT( ptr , real ) *( p t r ) =(double) ( real ) #include " . . / galerkin / tSurface . h" #include " . . / galerkin / in tegrate. h" double f (vector) ; double u (node); tSurface shBuildSolution (shDataSheet * , tSurface , double *) ;

tSurface shSolve ( i n t , tSurface , double) ; void shPrintSolution (tsurface , i n t ) ; void shDataSheetDestroy (shDataSheet *) ;

Lista 8.2: Módulo en C que define las funciones para construir la base. Esl:e c6digo esta en el archivo fuente fourier/shBase.c

r »> Functions accessible out of this f i l e * shBuildBase Vectors * S hOrthoNormalize Base Vectors * t >» Functions accessible in this f i l e * baseMatrixGetElement * /

#include cstd io . h> #include c s t d l i b . h > #include <spConfig . h> #include cspmatrix . h> #include emath . h>

Page 80: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

baseMatrixGetElement ()

Finds element [Row, Col] and returns a pointer to i t . I f the element

is not found then an error message is displayed and a nu l l

pointer is returned. The matrix as i t s size is stored in to s! data

sheet structure which is passed as an argument.

>>> Def in i t ion : double * baseMatrixGetElement (shDataSheet * ds, i n t i , i n t j )

»> Returns : Returns a pointer to the element. This poin ter is ttlen used

to d i r e c t l y access the element during successive bui lds .

>» Arguments :

ds <input> (shDataSheet *)

pointer to the sphere harmonic data sheet where the ,base matrix is

stored.

i <input> ( i n t ) Raw index for element. Must be in the range of [ l . .rn] mdimPk

. I f i m

then an error message is displayed and nu l l pointer is re turne d .

j <input> ( i n t )

Page 81: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

Col index for element. Must be in the range of [ l . . n] n=2*k + l . I f j>n

then an error message is displayed and null pointer is re turne d .

double * baseMatrixGetElement (shDataSheet * ds, int i , int j )

i f ( i > ds->matrizBaseSize .m)

{ p r i n t f

("ERROR:,in,f i 1 e , \ " s h B a s e . ~ \ " , c a I I ~ t o ~ \ ~ baseMatrixGetElement (ds, i , j ) \",whit,i >nL(O/od,"/ái) \nW ,

i , ds->matrizBaseSize .m) ; re tu rn (double *) NULL;

p r i n t f

("EW#lR:,in,f i le,\"shBase.c\",call - toy\" baseMatrixGetElement (ds, i , j ) \ " ,whit,j >nJ%rb%j) \n" ,

j , ds->matrizBaseSize . n ) ; re tu rn (double e) NULL;

1 re tu rn (&ds->matrizBase [ O ] + ( j - 1) * ds->matrizBaseI;ize .m + (

i - 1 ) ) ;

i n t j ( i n t k , int i )

{ mult i - índice v ; v = ind ic (k, i ) ; r e tu rn elp ( v .a + 2, v.b, v

1

Page 82: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

woid shPrintBaseVectors (shDataSheet * ds)

{ int step = 5; // . . . nA"mero de columnas a

mostrar por /A n e a int j = 1, i , ncolumna; if (step >= ds->matrizBaseSize . n)

step = ds->matrizBaseSize . n - 1 ; do

{ p r i n t f ( " \ n W ) ; for (ncolumna = j ; nColumna e= j + step; ncolumnai-+)

pr i n t f ( "VEC,#,O/a(#d,," , ncolumna) ; p r i n t f ( " \ n W ) ;

for ( i = 1; i e= ds->matrizBaseSize .m; i++)

{ for (ncolumna = j ; nColumna e= j + step; nColumna++)

{ p r i n t f ( " %10.3g,,," , ds->matrizBase [(ncolumna - 1 )

.m + ( i - 111);

1 pr in t f ( " \ n W ) ;

1 j += (step + 1 ) ;

i f ( j + step > ds->matrizBaseSize .n)

step = ds->matrizBaseSize. n - j ; 1

while ( j e= ds->matrizBaseSize . n) ;

1

woid shBuildBaseVectors (shDataSheet * ds)

{ char 4;

Page 83: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

int er ro r , i , ncolumna; int h; multi- indice v; spREAL r hs [ds-xlimPkmenos2 ] ; spREAL S o l u t i o n [ ds-xlimPkmenos2 ] ; int J[ds-xlimPk + 11; ds->matrizBaseSize .m = ds-xlimPk ;

ds->matrizBase =

CREATE-MATRIX (double, ds->matrizBaseSize .m * ds->

U i f PRINT-MULTI-INDICE

int p; p r i n t f ( " \ nMULTI-lNDDICES\ n " ) ; p r i n t f ("\tO/ds,(0/&,%3~,%3s)\n", "ELP", "A", " B " , "Cm:; for ( p = 1 ; p C= ds-xiimPk; p++)

i v = indic (ds->k, p ) ; p r i n t f ("\t0/~u(0/03d,0/03d,0/03d)\nw, elp ( v .a , v.b, v . c ) , v.a,

v.b, v .c) ;

1 Wendif

i f (ds->k == 1)

for (ncolumna = 1; nColumna <= 3; nColumna++) for ( i = 1; i <= 3; i++)

i i f ( nColumna == i )

ADD-REAL-ELEMENT ( baseMatrixGetElement (ds , i , ncolumna) , 1 ) ;

else ADD-REAL-WENT ( baseMatrixGetElement (ds , i ,

Page 84: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

M = spCreate (ds-dimPkmenos2, O, &error ) ; spClear (M) ; for ( i = 1 ; i e= ds-dimPkmenos2; i ++)

v = indic (ds->k - 2, i ) ; spADD-REAL-ELEMEM (spGetElement (M, i , i ) , ( v

(v .a + 1 ) ) ; i f (v .b >= 2)

spADD-REAL-ELEMENT ( spG et E lemen t (M, elp (v .a + 2, v.b - 2, v . c ) ,

i ) , (v.b) * (v .b - 1 ) ) ;

i f (v .c >= 2) cpADD-REAL-ELEMENT ( spGet Element

(M, elp (v .a + 2, v.b, v.c - 2) ,

u , ( v - c ) * (v.c - 4 ) ) ;

ir i f SHOW-LEFT'MATRR spPrint (M, O , 1, 1 ) ;

irendif

error = spFactor (M); //. . . Creando un Á ndice para descartar las posicr'ones ya

usadas. for ( i = 1; i e= ds-dimPk; i++)

J [ i ] = i ;

for ( i = 1 ; i e= ds-dimPkmenos2 ; i ++)

J [ j (ds->k - 2, i ) ] = 0; ir i f SHOW-USED-INDICES

p r i n t f ("\nUSED,INDWES,Ok:O/od\n",- F l L E ,- LINE--) ; for ( i = 1; i <= ds->dimPk; i++)

p r i n t f ("\tJ[O/+O/ad\n", i , J [ i 1) ; irendif

nColumna = 1 ; for ( h = 1 ; h <= ds-dimPk; h++)

{ i f ( J [ h ] == h)

Page 85: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

{ for ( i = O; i ds->dimPkmenos2 ; i ++)

r h s [ i ] = 0; // ... iniciando a cero v = ind ic (ds->k, h ) ;

i f (v .a >= 2) rhs [e lp ( v e a - 2, v.b, v .c) - 11 = -v.a * (v

1 . ) ; i f (v .b >= 2)

rhs [e lp (v.a, v.b - 2, v .c) - 11 = -v.b * (v .b -

1. ) ; i f (v.c >= 2)

rhs[e lp (v.a, v.b, v.c - 2) - 11 = -v.c * ( v . c -

1-1; spSolve (M, rhs , solut ion ) ;

for ( i = 1 ; i e= ds->dimPkmenos2; i ++)

ADD-REAL-ELEMENT (baseMatrixGetElement ( ds , i , ncolumna) ,

solut ion [ i - 11) ;

nColumna ++ ; 1

1 spDestroy (M) ;

1 # i f WRITE-BASEMATRIX

p r i n t f ("\n\nVECTORES,BASE,***"); shPrintBaseVectors (ds) ;

#endif

1

dou ble internalProduct (shDataSheet * ds, int vectl , int vect2)

{ double in ternalProduct = 0; int k , 1 ;

Page 86: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

multi-indice m i l , mi2; for (k = 1; k <= ds->matrizBaseSize .m; k++)

mil = indic (ds->k, k ) ;

for ( I = 1; I e= ds->matrizBaseSize .m; I++)

{ mi2 = indic (ds->k, 1); internalProduct +=

*( baseMatrixGetElernent (ds, k , vect l ) ) * ( * ( baseMatrixGetElement (ds, I , vectS) ) ) * coef (mi l .a + mi2.a, mi l .b + rni2.b, mi l .c + ini2.c);

1 1

reffurn internalProduct ;

1

void shOrthoNormalizeBaseVectors (shDataSheet * ds)

{ int ncolumna, i , j ; double fact , norm ; /* . . . La columna 1 permanece in t a c t a * / for (ncolumna = 2; nColumna e= ds->matrizBaseSize . n ; ricolumna

++) for ( j = 1 ; j e ncolumna; j ++)

{ fact =

-internalProduct (ds, ncolumna, j ) / internalf ' roduct (

ds, J , j ) ; for ( i = 1; i e= ds->matrizBaseSize .m; i ++)

ADD-REAL-ELEMENT ( baseMatrixGetElement (ds , i , nColumna

) 9

*(baseMatrixGetElement (ds , i , j ) ) * f ac t ) ;

1 Udef ine NORMALIZANDO Pifdef NORMAUZANDO

// . . . mR/wuuwm

Page 87: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

for ( j = 1 ; j <= ds->matrizBaseSize .n; j ++)

{ norm = sqrt ( internalProduct (ds, j , j ) ) ; for ( i = 1 ; i <= ds->matrizBaseSize .m; i++)

EQUAL_REAL-ELEMEM ( baseMatrixGetElement (ds , i , j ) , *( baseMatrixGetElement (ds , i , j ) ) /

norm ) ;

// . . . IMPRIMIENDO LA MATRIZ BASE # i f WRE-BASE-MATRIX-ORTHORTHONORMALED

pr in t f ("\n\nVECTORESY=-U***w); s~iPrintBaseVectors (ds) ;

#endif

1

Lista 6.3: Módulo de ordenamimento contine las funciones indico y elp(). Este código está en el archivo fuente fourier/shlndic.c

#include " shDefs . h"

multi- indice indic ( i n t k , i n t p)

{

i n t a, b, c ; rriulti-indice v ;

Page 88: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

a = k - b - c ;

re turn v ;

1

i n t elp ( i n t a, i n t b, i n t c)

{ int k = a + b + c ; re turn (b + ( k + 2) * ( k + 1) / 2 - (k - c + 2) * ( k --

2 + 1);

1

Lista B.4: Módulo de aritmética, contiene las funciones coef() y factorial(). Este código está en el archivo fuente fourier/shAritmetica.c

dou ble fac to r i a l ( i n t n, int m)

{ double f = (double) n; 10 ( n e= (double) m + DBL-EPSILON)

return 1 . O ;

f = f * f ac to r i a l ( n - 1, m); return f ;

1

dou ble coef ( i n t a, int b, i n t c)

Page 89: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

{ double coef; int q; i f (a %2 != 0)

return O; i f (b %2 != 0)

return O;

i f (c %2 != 0) return O;

q = a + b + c ; coef = pow (1 , q 1 2) * fac to r ia l (a, a / 2) 1'

f ac to r ia l (b, b 1 2) * fac to r ia l (c , c / 2) 1 f ac to r ia l (q, q / 2) / ( q + 1.0);

# i f COEF-TEST p r i n t f ("\nCOEF(%,%d,%d)=%g\n", a, b, c , coef) ;

#endif return (coef ) ;

11

Lista B.5: Módulo para el cálculo de los coeficientes de Fourier. Este código está en e' archivo fuente fourier/shEx~.c

1 * This f i l e contain routines to perform the Fourier expansion I * * .>» Functions contained in this f i l e * internalProduct * sh BuildFourierSys tem

void shBuildFourierSystem (shDataSheet * ds)

Page 90: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

{ int i , j , e r ro r ; ds->shFurierSystem = spCreate (ds->matrizBaseSize . n , C i , &error )

for ( i = 1 ; i e= ds->rnatrizBaseSize .n; i ++) for ( j = 1 ; j <= ds->rnatrizBaseSize .n; j ++)

{ spADD-REAL-ELEMENT (spGetElement (ds->shFurierSystern , i ,

1 1 , internalProduct (ds, i , j ) ) ;

1 p r i n t f ( " * * * ,~AkiU* ,Y i , * ,Y ju* * * \n" ) ; spPrint (ds->shFurierSystem, 0, 1, 1 ) ; error = spFactor (ds->shFurierSystem) ;

1

Lista B.6: Makefile. Este código está en el archivo fuente fourier/Ma.kefile

=gcc # - l g s l - Igslcblas CFLAGSIg -02 LDFLAGS HFILES=shDefs . h CFILES= shlndic .c shBuild .c shBase.c shExp.c shAritmetic:a .c OFIL.ES= shlndic .o shBuild .o shBase.0 shExp.0 shAritmetic:a .o LIBFMRY= I i bs h . a TSURFACELIB-. ./ galerkin 1 I ibsg .a LOADLIBES= $ (TSURFACELIB) -1m -1sparse #$(LIBRA RY)

a l 1 : $ (LIBRARY) $ (TSURFACELIB) prueba01 prueba02

$ (TSURFACELIB) :

cd . . / galerkin && make ;cd . . / four ier

Page 91: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

$ (LIBRARY) : $ (OFILES) ar r $? ranlib S@

clean : rm - f . * . s w p *. bak pruebao? *- * . o * . a core t e s t

Page 92: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

Descripción y autirizaciones de uso de los programas informaticos arnple!ados en está tesis concedido por el(los) Ritular(es) del derecho de autor

C.1. GNU GPL

La GNU GPL (General Public License o licencia pública general) es una licencia crea- da por la Free Software Foundation a mediados de los 80, y está orientada principalmente a proteger la libre distribución, modificacibn y uso de software. Su propósito es declara! que el software cubierto por esta licencia es software libre y protegerlo cle intentos de apropiación que restrinjan esas libertades a los usuarios.

Existen varias licencias "hermanas" de la GPL, como la licencia de documentación li. bre GNU (GFDL), la Open Audio License, para trabajos musicales, etcétera, y otras meno:: restrictivas, como la MGPL, o la LGPL (Lesser General Public License o Library General Public License), que permiten el enlace dinámico de aplicaciones libres a a~licaciones ncb libres.

C.2. Sparse

Sparse 1.3 es un paquete de subrutinas flexible escrito en C usado para resolver rá- pida y exactamente sistemas de ecuaciones lineales dispersas. El paquete es capaz dc trabajar con matrices cuadradas reales o complejas. Además es capaz de resolver sis- temas lineales, también puede resolver rápidamente sistemas transpuestos, encontrar determinantes, y estimar errores debido a mal condicionamiento en el sistema de ecua-

Page 93: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

ciones e inestabilidad en los cálculos. Sparse proporciona un programa de ppueba que es capaz de leer ecuaciones matriciales de un archivo, resolverlas. e imprimii- información útil sobre la ecuación y su solución.

A continuación reproducimos la nota de derechos de autor del paquete Copyright (c) 1985,86,87,88 by Kenneth S. Kundert and the University of California.

Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the cop!(right notices appear in al1 copies and supporting documentation and that the authors and ':he University of California are properly credited. The authors and the University of California make no representations as to the suitability of this software for any purpose. It is provided 'as is', without express or implied warranty.

C.3. Gnuplot

'gnuplot' es un programa de comandos interactivo para dibujar funciones y datos. 'gnu- plot' se empleo en este trabajo para realizar dibujos en tres dimensiones de esferas y de funciones definidas sobre la esfera. A continuación se reproduce la nota dc? derechos de autor.

Copyright (C) 1986 - 1993, 1998,2004 Thomas Williams, Colin Kelley Permission to use, copy, and distribute this software and its documertation for any

purpose with or without fee is hereby granted, provided that the above cclpyright notice appear in al1 copies and that both that copyright notice and this permission notice appeai. in supporting documentation.

Permission to modify the software is granted, but not the right to distribute the corn- plete modified source code. Modifications are to be distributed as patches t.2 the releasecl version. Permission to distribute binaries produced by compiling modified sources is gran. ted, provided you 1. distribute the corresponding source modifications frorii the releasecl version in the form of a patch file along with the binaries, 2. add special version identifica- tion to distinguish your version in addition to the base release version number, 3. provido your name and address as the primary contact for the support of your mcldified version, and 4. retain our contact information in regard to use of the base software. Permission to distribute the released version of the source code along with corresponding source modi- fications in the form of a patch file is granted with same provisions 2 throuqh 4 for binar1/ distributions.

This software is provided "as isw without express or implied warranty to the extert permitted by applicable law.

Page 94: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

ALJTHORS Original Software: Thomas Williams, Colin Kelley. Gnuplot 2.0 additions: Russell Lang, Dave Kotz, John Campbell. Gnuplot 3.0 additions: Gershon Elber and many others. Gnuplot 4.0 additions: See list of contributors at head of this document.

LyX es un sistema para preparar documentos. Que permite crear artículo:; de matemá- ticas y científicos complejos manejando referencias cruzadas, bibliografías, índices, etc. A continuación se reproduce la nota de derechos de autor.

LyX is Copyright (C) 1995 by Matthias Ettrich, 1995-2001 LyX Team This program is free software; you can redistribute it andior modify it un3er the terms

of the GNU General Public License as pubiished by the Free Sofhvare Fouridation; either version 2 of the License, or (at your option) any later version.

LyX is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILIN or FITNESS FOF: A PAFlTICU- LAR PURPOSE. See the GNU General Pubiic License for more details. Yoil should have received a copy of the GNU General Public License along with this prograrn; if not, wite to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 021 3'3, USA.

LT@es un procesador de textos formado por un gran conjunto de miicros de TE-, escritas inicialmente por Leslie Lamport (LamportTg) en 1984, con la intención de facilitar el uso del lenguaje de composición tipográfica creado por Donald Knuth. Es muy utilizadc para la composición de artículos académicos, tesis y libros técnicos, dado ,que la calidad tipográfica de los documentos realizados con IATg es comparable a la do una editoria científica de primera línea. IAT$ es software libre bajo licencia LPPL. La Licencia Públics. del Proyecto (LPPL) no contiene todos los términos de la distribución de LATÉX. Segúri lo que se puede leer, se trata de una licencia de software libre, pero inconipatible con IE: GPL porque tiene muchos requisitos que no están en ésta.

Page 95: 27:31Z-263… · REPÚBLICA BOLIVARIANA DE VENUUELA UNIVERSIDAD DEL ZUUA FACULTAD DE INGENIER~A DIVISIÓN DE POSTGRADO PROGRAMA DE POSTGRADO EN MATEMATICA APLICADA SOLUCIÓN NUMÉRICA

[ l ] Thomée, V. (1 997) Galerkin finite element method for parabolic problerns. Springer- Verlag. New York, Inc.

[2] E. C. Zeeman. Stability of dynamical systems. Nonlinearity. Vol 1 (1 998). 1,115-155

[3] Guiñez J. y Rueda A. D. (2002) Steady states for a Flokker-Planck equation on S,. Acta Math. Hungar, 94 (3), 21 1-221.

[4] Folland, Gerald B. (1 995) lntroduction to Partial Differential Equations. F'rinceton Uni- versity Press, United States of America.

[5] Zlenkiewicz ,O. C. y Taylor, R. L. (2000) The Finite Elemen? Method, l'olume 1 : The Basis. Buttenivorth Heinemann, Woburn.

[6] Warner, Frank W. (1987) Foundations of Differentiable Manifolds and Lie Groups. Springer-Verlag. United States of America.

[7] Rerner S. C. and Scott L. R. (1994) The Mathematical teory of Finite Element Met- hods, Springer-Verlag, New York.

[8] Ciarlet P. G. (1 978) The Finite Elernent Method for Elliptic ProMems, North Holland, Amsterdam.