Implementación del Método de Elemento Finito Usando la Matriz de

Anuncio
Implementación del Método de Elemento Finito
Usando la Matriz de Carga como una Matriz
Virtual
Antonio Carrillo Ledesma
Ismael Herrera Revilla
Robert Yates Smith
Grupo de Modelación Matemática y Computacional
Instituto de Geofísica, UNAM
February 10, 2009
Contents
1 Método de Elemento Finito
1.1 Problema a Trabajar . . . . . . . .
1.1.1 Discretización de dominio .
1.1.2 Funciones Base . . . . . . .
1.2 Discretizacíón Usando Rectángulos
1.3 Discretización Usando Triángulos .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4
4
4
5
6
10
2 Solución de Grandes Sistemas de Ecuaciones
2.1 Métodos Directos . . . . . . . . . . . . . . . .
2.2 Métodos Iterativos . . . . . . . . . . . . . . .
2.3 Precondicionadores . . . . . . . . . . . . . . .
2.3.1 Gradiente Conjugado Precondicionado
2.3.2 Precondicionador a Posteriori . . . . .
2.3.3 Precondicionador a Priori . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
15
15
17
22
24
26
26
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3 Implementación Computacional
28
3.1 Implementación de FEM . . . . . . . . . . . . . . . . . . . . . . . 29
1
4 Apéndice
4.1 Implementación de la Geometría . . . . . . . . . . . . . .
4.1.1 Estructura del Archivo que Contiene la Geometría
4.2 Matrices Virtuales . . . . . . . . . . . . . . . . . . . . . .
4.2.1 Operaciones entre Matrices y Vectores . . . . . . .
4.3 Resolución de Sistemas Lineales . . . . . . . . . . . . . . .
5 Bibliografía
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
30
30
31
33
33
33
35
Versión: 0.00.04
2
Objetivos
Comunmente cuando se trabaja con el método Finite Element Method (FEM)
se genera una matriz, algunas veces llamada matriz de carga. En la implementación computacional del método, la matriz de carga resulta ser una matriz
bandada, la cual consume mucha memoria RAM si la descomposición del dominio es …na. En el caso de un operador de segundo orden con coe…cientes constantes y cuyo dominio del problema se ha discretizado en una malla homogénea
es posible no construir la matrz de carga, i.e. se usara en la implementación computacional una matriz virtual que sólo requiere guardar internamente una matriz
de integrales que para interpoladores lineales es a lo más de 4 4 elementos,
ahorrando con ello mucha memoria RAM en la implementación computacional
del problema.
El algoritmo aquí descrito puede usarse para implementar el método FEM
en cualquier lenguaje de programación mediante el uso de matrices virtuales
y extenderse a otros métodos de descomposición de dominio tales como subestructuración y FETI, FETI-DP y Roundtrip.
Con el uso de matrices virtuales se ahorra una gran cantidad de memoria
en la implementación computacional del método FEM, permitiendo resolver
descomposiciones muy …nas en equipos con pocos recursos computacionales.
Supuestos
La geometría usada en la implementación particular de un problema puede
ser generada por cualquier medio y para nuestros propositos, sólo se vera como
usar dicha geometria e implementar con ella la matriz virtual para un problema
concreto usando FEM y resolviendo el sistema lineal resultante mediante el
método de Conjugate Gradient Method (CGM).
3
1
Método de Elemento Finito
En el presente capítulo se prestará atención a varios aspectos necesarios para
encontrar la solución aproximada de problemas variacionales con valor en la
frontera (VBVP). En este capítulo se considera el VBVP de la forma
Lu
u
= f
= g
en
en @
(1)
donde
Lu =
r a ru + cu
(2)
con a una matriz positiva de…nida, simétrica y c 0; como un caso particular
del operador elíptico de orden 2; con
Rn un dominio poligonal, es decir,
es un conjunto abierto acotado y conexo tal que su frontera @ es la unión de
un número …nito de polígonos.
Sin perdida de generalidad supondremos que la ecuación es de coe…cientes
constantes, en caso contrario, si es de coe…cientes variable supondremos en en
discretización se hace de tal forma que cada subdominio la ecuación sea de
coe…cientes constantes.
1.1
Problema a Trabajar
Si multiplicamos a la ecuación r a ru + cu = f
obtenemos
v r a ru + cu = vf
por v 2 V = H01 ( ),
(3)
aplicando el teorema de Green obtenemos la ecuación que podemos reescribir
como
Z
Z
rv a ru + cuv dx =
vf dx:
(4)
De…niendo el operador bilineal
Z
a (u; v) =
rv a ru + cuv dx
y la funcional lineal
l(v) = hf; vi =
Z
vf dx
(5)
(6)
podemos reescribir el problema dado por la Ec. (??) de orden 2 en forma
variacional, haciendo uso de la forma bilineal a ( ; ) y la funcional lineal l ( ).
1.1.1
Discretización de dominio
El Mallado o triangulación Th del dominio
es el primer aspecto básico, y
ciertamente el más característico, el dominio
Rn es subdividido en E subdominios o elementos e llamados elementos …nitos, tal que
=
E
[
e=1
4
e
donde:
Cada e 2 Th es un polígono (rectángulo o triángulo) con interior
no vacío ( e =
6 ;) y conexo.
Cada
e
2 Th tiene frontera @
Para cada
i;
j
e
2 Th distintos,
El diámetro hi = Diam(
para cada e = 1; 2; :::; E:
Los vértices de cada
por cada elemento e .
e
e)
Lipschitz continua.
i
\
de cada
j
e
= ;:
satisface Diam(
e)
h
son llamados nodos, teniendo N de ellos
De…nition 1 Una familia de triangulaciones Th es llamada de forma-regular
si existe una constante independiente de h, tal que
hK
C
K;
con K 2 Th ;
donde K es el radio del circulo más grande contenido en K. El radio hK =
es llamado esl aspect ratio de K:
K
De…nition 2 Una familia de triangulaciones Th es llamada cuasi-uniforme si
esta es de forma-regular y si existe una constante independiente de h, tal que
hK
Rn un dominio poligonal y sean
Entonces, sea
del dominio, i.e.
1.2.-
; para
\
3.-
=
E
[
Ch; con K 2 Th :
= 1; :::; E es un subdominio de
= ?; siempre que
1 ; :::;
E
la partición
;
6= :
:
=1
Una vez que la triangulación Th del dominio
es establecida, se procede
a de…nir el espacio de elementos …nitos Ph [k] a través del proceso descrito a
continuación.
1.1.2
Funciones Base
A continuación describiremos la manera de construir las funciones base usada
por el método de elemento …nito. En este procedimiento debemos tener en
cuenta que las funciones base están de…nidas en un subespacio de V = H 1 ( )
para problemas de segundo orden que satisfacen las condiciones de frontera.
Las funciones base deberán satisfacer las siguientes propiedades:
5
i) Las funciones base
son acotadas y continuas, i.e
i
i
2C(
e) :
ii) Existen ` funciones base por cada nodo del polígono e ; y cada
función i es no cero solo en los elementos contiguos conectados por
el nodo i:
iii)
i
= 1 en cada i nodo del polígono
iv) La restricción i a
alguna k 1 donde Pk [
más k sobre e :
e
e]
e
y cero en los otros nodos.
es un polinomio, i.e. i 2 Pk [ e ] para
es el espacio de polinomios de grado a lo
Decimos que i 2 Pk [ e ] es una base de funciones y por su construcción
es evidente que estas pertenecen a H 1 ( ) : Al conjunto formado por todas las
funciones base de…nidas para todo e de
será el espacio Ph [k] de funciones
base, i.e.
E
[
Pk [ e ]
Ph [k] =
e=1
estas formarán las funciones base globales.
1.2
Discretizacíón Usando Rectángulos
Partiendo de la ecuación
Z
ar i r
j
+c
dxdy =
i j
Z
f
j dxdy
(7)
tenemos
Kij
=
=
Z
ar
E Z
X
e=1
=
E Z
X
e=1
r
i
ar
e
a
e
"
j
+c
(e)
i
@
@x
(e)
j
r
(e)
i
dxdy
i j
+c
(e)
j
@
@x
+
@
(8)
(e) (e)
i
j
(e)
i
@y
@
dxdy
(e)
j
@y
#
+c
(e) (e)
i
j
!
dxdy
y el lado derecho
Fj
=
=
Z
f
j dxdy
E Z
X
e=1
Para cada
Kij =
e
Z
de
e
f
(9)
(e)
j dxdy:
e
; la submatriz de integrales (matriz de carga local)
"
#
!
(e)
(e)
(e)
(e)
@ i @ j
@ i @ j
(e) (e)
a
+
+c i j
dxdy
(10)
@x @x
@y @y
6
tiene la estructura
2 (e)
K1;1
6K (e)
6 2;1
6 (e)
4K3;1
(e)
K4;1
(e)
(e) 3
K1;4
(e)
K2;4 7
7
(e) 7
K3;4 5
(e)
K1;2
(e)
K2;2
(e)
K3;2
(e)
K4;2
K1;3
(e)
K2;3
(e)
K3;3
(e)
K4;3
(11)
(e)
K4;4
la cual deberá ser ensamblada en la matriz de carga global que corresponda a
la numeración de nodos locales del elemento e con respecto a la numeración
global de los elementos en .
De manera parecida, para cada e de
se genera el vector de integrales
(vector de carga local)
Z
Fj =
(e)
j dxdy
f
(12)
e
con la estructura
2 (e) 3
F1
6 (e) 7
6F2 7
6 (e) 7
4F3 5
(13)
(e)
F4
el cual también deberá ser ensamblado en el vector de carga global que corresponda a la numeración de nodos locales al elemento e con respecto a la
numeración global de los elementos de .
Integración Numérica Para implementar numéricamente en cada
integrales
"
!
#
Z
(e)
(e)
(e)
(e)
@ i @ j
@ i @ j
(e) (e)
a
dxdy
+
+c i j
@x @x
@y @y
e
y
Z
(e)
j dxdy;
f
e
las
(14)
(15)
e
teniendo en mente el simpli…car los cálculos computacionales, se considera un
elemento de referencia ^ en los ejes coordenados ("; ) cuyos vértices están
el ( 1; 1); (1; 1); (1; 1) y ( 1; 1) respectivamente, en el cual mediante una
función afín será proyectado cualquier elemento rectangular e cuyos vértices
(e) (e)
(e) (e)
(e) (e)
(e) (e)
(x1 ; y1 ); (x2 ; y2 ); (x3 ; y3 ) y (x4 ; y4 ) están tomados en sentido contrario al movimiento de las manecillas del reloj como se muetra en la …guramediante
la transformación f (x; y) = T ("; )+b, quedando dicha transformación como
(e)
x =
x2
y
x4
(e)
x1
2
y2
"+
y4
(e)
(e)
=
(e)
"+
x1
2
7
(e)
y1
2
(e)
(e)
y1
2
(16)
en la cual la matriz T está dada por
(e)
x2
T =
(e)
(e)
y2
(e)
(e)
y4
x1
2
x4
(e)
x1
2
!
(e)
y1
2
(e)
y1
2
(17)
y el vector b= (b1 ; b2 ) es la posición del vector centroide del rectángulo
también se tiene que la transformación inversa es
2
3
(e)
(e)
x
"
y1
y2
b1
2
=
6
6
6
4
(e)
x4
2
(e)
y b2
!0
(e)
x b1
x1
@
(e)
y2
(e)
x2
2
(e)
y1
2
(e)
x1
(e)
x2
x1
2
y
=
(e)
(e)
x4
x1
2
x b1
b2
(e)
y2
(e)
y1
2
(e)
x1
(e)
x2
2
8
!
:
(e)
+
(e)
y4
y1
2
7
7
5
17
A
e,
(18)
Entonces las
(e)
i
quedan de…nidas en términos de ^ i como
^ ("; )
1
=
^ ("; )
2
=
^ ("; )
3
=
^ ("; )
4
=
1
(1 ")(1
4
1
(1 + ")(1
4
1
(1 + ")(1 +
4
1
(1 ")(1 +
4
)
(19)
)
)
)
(e)
(e)
y las funciones i son obtenidas por el conjunto i (x; y) = ^ i ("; ) con (x; y)
y (", ) relacionadas por la Ec. (16), entonces se tendrian las siguientes integrales
#
!
"
Z
(e)
(e)
(e)
(e)
@ i @ j
@ i @ j
(e) (e)
(e)
+
+c i j
dxdy
(20)
a
Kij
=
@x @x
@y @y
e
"
!
!
Z
@ ^j @
@ ^ j @"
@ ^ i @"
@ ^i @
a
=
+
+
+
@" @x
@ @x
@" @x
@ @x
^
!
!#
!
@ ^ j @" @ ^ j @
@ ^ i @" @ ^ i @
^
^
+
+
+ c i j jJj d"d
@" @y
@ @y
@" @y
@ @y
donde el índice i y j varia de 1 a 4. En está última usamos la regla de la cadena
y dxdy = jJj d"d para el cambio de variable en las integrales, aquí jJj = det T;
R
(e)
donde T está dado como en la Ec. (17). Para resolver e f j dxdy en cada
e se genera las integrales
Z
(e)
(e)
Fj
=
f j dxdy
(21)
e
Z
=
f ^ j jJj d"d
^
donde el índice i y j varia de 1 a 4.
Para realizar el cálculo numérico de las integrales en el rectángulo de refe@" @" @
rencia ^ = [ 1; 1] [ 1; 1], debemos conocer @@"i ; @@ i ; @x
; @y ; @x y @@y ; entonces
realizando las operaciones necesarias a la Ec. (19) obtenemos
@ 1
@"
@ 2
@"
@ 3
@"
@ 4
@"
@
@
@
@
@
@
@
@
= 14 (1
)
1
= 4 (1
)
1
= 4 (1 + )
= 14 (1 + )
1
2
3
4
= 41 (1 ")
= 41 (1 + ")
= 41 (1 + ")
= 41 (1 ")
(22)
y también
(e)
(e)
@"
@x
=
y4
y1
2 det T
@
@x
=
y2
y1
2 det T
(e)
(e)
9
(e)
(e)
(e)
(e)
@"
@y
=
x4
x1
2 det T
@
@y
=
x2
x1
2 det T
(23)
(e)
(e)
las cuales deberán de ser sustituidas en cada Kij
y Fj
para calcular las
integrales en el elemento e : Estas integrales se harán en el programa usando
cuadratura Gaussiana, permitiendo reducir el número de cálculos al mínimo pero
manteniendo el balance entre precisión y número bajo de operaciones necesarias
para realizar las integraciones.
1.3
Discretización Usando Triángulos
Partiendo de la ecuación
Z
ar i r
tenemos
Kij
=
=
Z
ar
E Z
X
e=1
=
E Z
X
e=1
r
i
ar
e
a
e
"
j
j
+c
(e)
i
@
+c
(e)
j
(e)
i
@x
j dxdy
(24)
@x
+
(25)
(e) (e)
i
j
+c
(e)
j
@
f
dxdy
i j
r
dxdy =
i j
Z
@
(e)
i
(e)
j
@
@y
dxdy
@y
#
+c
(e) (e)
i
j
!
dxdy
y el lado derecho como
Fj
=
=
Z
f
j dxdy
E Z
X
e=1
Para cada
Kij =
e
de
Z
tiene la estructura
e
f
(e)
j dxdy:
e
la submatriz de integrales (matriz de carga local)
"
#
!
(e)
(e)
(e)
(e)
@ i @ j
@ i @ j
(e) (e)
a
+
+c i j
dxdy
@x @x
@y @y
2 (e)
k1;1
6 (e)
4k2;1
(e)
k3;1
(26)
(e)
k1;2
(e)
k2;2
(e)
k3;2
(27)
3
(e)
k1;3
(e) 7
k2;3 5
(e)
k3;3
(28)
(e)
j dxdy
(29)
la cual deberá ser ensamblada en la matriz de carga global que corresponda a
la numeración de nodos locales del elemento e con respecto a la numeración
global de los elementos en .
De manera parecida, para cada e de
se genera el vector de integrales
(vector de carla gocal)
Z
Fj =
f
e
10
con la estructura
2 (e) 3
F
6 1(e) 7
4F2 5
(e)
F3
(30)
el cual también deberá ser ensamblado en el vector de carga global que corresponda a la numeriación de nodos locales al elemento e con respecto a la
numeración global de los elementos de .
(e)
(e)
Montando los Kij en la matriz K y los Fj en el vector F según la numeración de nodos global, se genera el sistema Kuh =F donde uh será el vector
cuyos valores serán la solución aproximada a la Ec. (??) en los nodos interiores
de : La matriz K generada de esta forma, tiene una propiedad muy importante,
es bandada y el ancho de banda es de 7 elementos, esto es muy útil al momento
de soportar la matriz en memoria.
Para implementar numéricamente en cada e las integrales
"
#
!
Z
(e)
(e)
(e)
(e)
@ i @ j
@ i @ j
(e) (e)
a
+
+c i j
dxdy
@x @x
@y @y
e
y
Z
(31)
(e)
j dxdy
f
e
teniendo en mente el simpli…car los cálculos computacionales se considera a
un elemento de referencia ^ en los ejes coordenados ("; ) cuyos vertices estan en (0; 0); (1; 0) y (0; 1) y en el cual mediante un mapeo afín será proyectado
(e) (e)
(e) (e)
(e) (e)
caulquier elemento triangular e cuyos vertices (x1 ; y1 ); (x2 ; y2 ); (x3 ; y3 )
están tomados en el sentido contrario al movimiento de las manecillas del reloj
como se muetra en la …guramediante la transformación f ("; ) = T ("; )+b,
quedando dicha transformación como
(e)
x = x1 (1
(e)
y = y1 (1
(e)
"
"
(e)
) + x2 " + x3
(e)
(e)
) + y2 " + y3
(32)
y en la cual la matriz T está dada por
(e)
T =
x2
(e)
y2
(e)
(e)
x1
(e)
y1
x3
(e)
y3
(e)
x1
(e)
y1
!
(33)
donde b es un vector constante
(e)
b=
x1
(e)
y1
11
!
(34)
también se tiene que la transformación inversa es
"
=
=
1
2A
1
2A
e
e
h
h
(e)
(e)
y3
y1
(e)
y2
donde
A
Entoces las
(e)
i
e
(e)
x
(e)
y1
(e)
x1
x3
(e)
x
(e)
x1
2
x2
3
(e)
y1
(e) 7
y2 5 :
(e)
y3
(e)
1 x1
6
= det 4 1 x(e)
2
(e)
1 x3
(e)
x1
(e)
x1
(e)
y
y1
y
i
(e)
y1
(35)
i
(36)
quedan de…nidas en términos de ^ i como
^ ("; ) = 1
1
^ ("; ) = "
2
^ ("; ) =
3
"
(37)
(e)
(e)
entoces las funciones i son obtenidas por el conjunto i (x; y) = ^ i ("; ) con
(x; y) y (", ) relacionadas por la Ec. (32), entonces se tendrian las siguientes
12
integrales
(e)
kij
=
Z
a
"
(e)
i
@
(e)
j
@
(e)
j
@
#
(e) (e)
i
j
!
+c
dxdy
(38)
@y @y
!
!
"
Z
@ ^ j @"
@ ^j @
@ ^i @
@ ^ i @"
+
+
+
=
a
@" @x
@ @x
@" @x
@ @x
^
!
!#
!
@ ^ j @" @ ^ j @
@ ^ i @" @ ^ i @
^
^
+
+
+ c i j jJj d"d
@" @y
@ @y
@" @y
@ @y
e
@x
@x
+
(e)
i
@
donde el índice i y j varia de 1 a 3. En está última usamos la regla de la cadena
y dxdy = jJj d"d para el cambio de variable en las integrales, aquí jJj = det T;
R
(e)
donde T está dado como en la Ec. (33). Para resolver e f j dxdy en cada
e se genera las integrales
Z
(e)
(e)
f j dxdy
(39)
Fj
=
Z e
=
f ^ j jJj d"d
^
donde el indice i y j varia 1 a 3.
Para realizar el cálculo numérico de las integrales en el triángulo de ref@" @" @
; @y ; @x y @@y ; entonces realizando las
erencia ^ , debemos conocer @@"i ; @@ i ; @x
operaciones necesarias a las Ec. (37) obtenemos
@ 1
@"
@ 2
@"
@ 3
@"
@
@
@
@
@
@
= 1
=1
=0
1
2
3
= 1
=0
=1
(40)
y también
(e)
@"
@x
@
@x
=
y3
(e)
(e)
y1
@"
@y
2A e
(e)
(e)
y1
y2
=
2A
=
(e)
@
@y
e
=
las cuales deberán de ser sustituidas en cada
integrales en el elemento
(e)
x3
x2
x1
2A e
(e)
x1
2A
(41)
e
(e)
Kij
(e)
y Fj
para calcular las
e:
Suponiendo que
fue dividido en E elementos, estos elementos generan
N nodos en total, de los cuales Nd son nodos desconocidos y Nc son nodos
conocidos con valor j ; entonces el algoritmo de ensamble de la matriz K y el
vector F se puede esquematizar como:
Ki;j = ( i ; j ) 8i = 1; 2; :::; E; j = 1; 2; :::; E
Fj = (f ; j ) 8j = 1; 2; :::; E
8j = 1; 2; :::; Nd :
13
bj = bj
i Ki;j
8i = 1; 2; :::; E
Así, se construye una matriz global en la cual están representados los nodos
conocidos y los desconocidos, tomando sólo los nodos desconocidos de la matriz
K formaremos una matriz A; haciendo lo mismo al vector F formamos el vector
b; entonces la solución al problema será la resolución del sistema de ecuaciones
lineales Ax= b; este sistema puede resolverse usando por ejemplo el método de
gradiente conjugado. El vector x contendrá la solución buscada en los nodos
desconocidos Nd .
14
2
Solución de Grandes Sistemas de Ecuaciones
En el cápitulo anterior se mostró como proceder para transformar un problema
de ecuaciones diferenciales parciales con valores en la frontera en un sistema
algebraico de ecuaciones y así poder hallar la solución resolviendo el sistema de
ecuaciones lineales que se pueden expresar en la forma matricial siguiente
Au = b
(42)
donde la matriz A es bandada (muchos elementos son nulos) y en problemas
reales tiene grandes dimensiones.
Los métodos de resolución del sistema algebraico de ecuaciones Au = b se
clasi…can en dos grandes grupos: los métodos directos y los métodos iterativos.
En los métodos directos la solución u se obtiene en un número …jo de pasos y sólo
están sujetos a los errores de redondeo. En los métodos iterativos, se realizan
iteraciones para aproximarse a la solución u aprovechando las características
propias de la matriz A; tratando de usar un menor número de pasos que en un
método directo.
Los métodos iterativos rara vez se usan para resolver sistemas lineales de
dimensión pequeña (el concepto de dimensión pequeña es muy relativo), ya que
el tiempo necesario para conseguir una exactitud satisfactoria rebasa el que
requieren los métodos directos. Sin embargo, en el caso de sistemas grandes con
un alto porcentaje de elementos cero, son e…cientes tanto en el almacenamiento
en la computadora como en el tiempo que se invierte en su solución. Por ésta
razón al resolver éstos sistemas algebraicos de ecuaciones es preferible aplicar
métodos iterativos tal como Gradiente Conjugado.
Cabe hacer mención de que la mayoría del tiempo de cómputo necesario para
resolver el problema de ecuaciones diferenciales parciales (EDP), es consumido
en la solución del sistema algebraico de ecuaciones asociado a la discretización,
por ello es determinante elegir aquel método numérico que minimice el tiempo
invertido en este proceso.
2.1
Métodos Directos
En estos métodos, la solución u se obtiene en un número …jo de pasos y sólo están
sujetos a los errores de redondeo. Entre los métodos más importantes podemos
encontrar: Eliminación Gausiana, descomposición LU, eliminación bandada y
descomposición de Cholesky.
Los métodos antes mencionados, se colocaron en orden descendente en cuanto
al consumo de recursos computacionales y ascendente en cuanto al aumento en
su e…ciencia.
Eliminación Gausiana Tal vez es el método más utilizado para encontrar la
solución usando métodos directos. Este algoritmo sin embargo no es e…ciente,
ya que en general, un sistema de N ecuaciones requiere para su almacenaje
en memoria de N 2 entradas para la matriz A, pero cerca de N 3 =3 + O(N 2 )
15
multiplicaciones y N 3 =3 + O(N 2 ) adiciones para encontrar la solución siendo
muy costoso computacionalmente.
La eliminación Gausiana se basa en la aplicación de operaciones elementales
a renglones o columnas de tal forma que es posible obtener matrices equivalentes.
Escribiendo el sistema de N ecuaciones lineales con N incógnitas como
N
X
(0)
(0)
aij xj = ai;n+1 ;
i = 1; 2; :::; N
(43)
j=1
(0)
(i 1)
y si a11 6= 0 y los pivotes aii ; i = 2; 3; :::; N de las demás …las, que se obtienen
en el curso de los cálculos, son distintos de cero, entonces, el sistema lineal
anterior se reduce a la forma triangular superior (eliminación hacia adelante)
N
X
xi +
(i)
(i)
aij xj = ai;n+1 ;
i = 1; 2; :::; N
(44)
j=i+1
donde
k
=
1; 2; :::; N ; fj = k + 1; :::; N f
(k 1)
(k)
akj
akj
;
(k 1)
akk
i = k + 1; :::; N + 1f
(k)
aij
=
(k 1)
= aij
(k) (k 1)
akj aik
ggg
y las incógnitas se calculan por sustitución hacia atrás, usando las fórmulas
(N )
xN = aN;N +1 ;
i = N 1; N
xi
(i)
= ai;N +1
(45)
2; :::; 1
N
X (i)
aij xj :
j=i+1
En algunos casos nos interesa conocer A 1 ; por ello si la eliminación se aplica
a la matriz aumentada A j I entonces la matriz A de la matriz aumentada se
convertirá en la matriz I y la matriz I de la matriz aumentada será A 1 . Así,
el sistema Au = b se transformará en u = A 1 b obteniendo la solución de u:
Descomposición LU Sea U una matriz triangular superior obtenida de A por
eliminación bandada. Entonces U = L 1 A; donde L es una matriz triangular
inferior con unos en la diagonal. Las entradas de L 1 pueden obtenerse de
los coe…cientes mij de…nidos en el método anterior y pueden ser almacenados
estrictamente en las entradas de la diagonal inferior de A ya que estas ya fueron
eliminadas. Esto proporciona una factorización LU de A en la misma matriz A
ahorrando espacio de memoria.
16
El problema original Au = b se escribe como LU u = b y se reduce a la
solución sucesiva de los sistemas lineales triangulares
Ly = b y U u = y:
(46)
La descomposición LU requiere también N 3 =3 operaciones aritméticas para
la matriz llena, pero sólo N b2 operaciones aritméticas para la matriz con un
ancho de banda de b siendo esto más económico computacionalmente.
Nótese que para una matriz no singular A, la eliminación de Gausiana (sin
redondear …las y columnas) es equivalente a la factorización LU:
Eliminación Bandada Cuando se usa la ordenación natural de los nodos,
la matriz A que se genera es bandada, por ello se puede ahorrar considerable
espacio de almacenamiento en ella. Este algoritmo consiste en triangular a la
matriz A por eliminación hacia adelante operando sólo sobre las entradas dentro
de la banda central no cero. Así el renglón j es multiplicado por mij = aij =ajj
y el resultado es restado al renglón i para i = j + 1; j + 2; ::::
El resultado es una matriz triangular superior U que tiene ceros abajo de
la diagonal en cada columna. Así, es posible resolver el sistema resultante al
sustituir en forma inversa las incógnitas.
Descomposición de Cholesky Cuando la matriz es simétrica y de…nida positiva, se obtiene la descomposición LU de la matriz A; así A = LDU = LDLT
donde D = diag(U ) es la diagonal con entradas positivas. La mayor ventaja de
esta descomposición es que, en el caso en que es aplicable, el costo de cómputo
es sustancialmente reducido, ya que requiere de N 3 =6 multiplicaciones y N 3 =6
adiciones.
2.2
Métodos Iterativos
En estos métodos se realizan iteraciones para aproximarse a la solución u aprovechando
las características propias de la matriz A; tratando de usar un menor número de
pasos que en un método directo, para más información de estos y otros métodos
ver [5] y [12].
Un método iterativo en el cual se resuelve el sistema lineal
Au = b
(47)
comienza con una aproximación inicial u0 a la solución u y genera una sucesión
1
de vectores uk k=1 que converge a u. Los métodos iterativos traen consigo
un proceso que convierte el sistema Au = b en otro equivalente de la forma
u = T u + c para alguna matriz …ja T y un vector c: Luego de seleccionar el
vector inicial u0 la sucesión de los vectores de la solución aproximada se genera
calculando
uk = T uk 1 + c 8k = 1; 2; 3; :::
(48)
La convergencia a la solución la garantiza el siguiente teorema cuya solución
puede verse en [13].
17
Theorem 3 Si T < 1, entonces el sistema lineal u = T u + c tiene una solución única u y las iteraciones uk de…nidas por la fórmula uk = T uk 1 +c 8k =
1; 2; 3; ::: convergen hacia la solución exacta u para cualquier aproximación lineal u0 :
Notemos que mientras menor sea la norma de la matriz T ; más rápida es la
convergencia, en el caso cuando T es menor que uno, pero cercano a uno, la
convergencia es muy lenta y el número de iteraciones necesario para disminuir
el error depende signi…cativamente del error inicial. En este caso, es deseable
proponer al vector inicial u0 de forma tal que se mínimo el error inicial. Sin
embargo, la elección de dicho vector no tiene importancia si la T es pequeña
ya que la convergencia es rápida.
Como es conocido, la velocidad de convergencia de los métodos iterativos
dependen de las propiedades espectrales de la matriz de coe…cientes del sistema
de ecuaciones, cuando el operador diferencial L de la ecuación del problema a
resolver es auto-adjunto se obtiene una matriz simétrica y positivo de…nida y el
número de condicionamiento de la matriz A, es por de…nición
cond(A) =
max
1
(49)
min
donde max y min es el máximo y mínimo de los eigenvalores de la matriz
A. Si el número de condicionamiento es cercano a 1 los métodos numéricos
al solucionar el problema convergerá en pocas iteraciones, en caso contrario se
requerirán muchas iteraciones. Frecuentemente al usar el método de elemento
…nito se tiene una velocidad de convergencia de O h12 y en el caso de métodos
de descomposición de dominio se tiene una velocidad de convergencia de O h1
en el mejor de los casos, donde h es la máxima distancia de separación entre
nodos continuos de la partición, es decir, que poseen una pobre velocidad de
convergencia cuando h ! 0, para más detalles ver [?].
Entre los métodos más usados para el tipo de problemas tratados en el presente trabajo podemos encontrar: Jacobi, Gauss-Seidel, Richardson, relajación
sucesiva, Gradiente Conjugado, Gradiente Conjugado precondicionado.
Los métodos antes mencionados se colocaron en orden descendente en cuanto
al consumo de recursos computacionales y ascendente en cuanto al aumento en
la e…ciencia en su desempeño, describiéndose a continuación:
Jacobi Si todos los elementos de la diagonal principal de la matriz A son
diferentes de cero aii 6= 0 para i = 1; 2; :::n: Podemos dividir la i ésima ecuación
del sistema lineal (47) por aii para i = 1; 2; :::n; y después trasladamos todas
las incógnitas, excepto xi , a la derecha, se obtiene el sistema equivalente
u = Bu + d
donde
di =
bi
aii
y B = fbij g =
18
(50)
aij
aii
0
si j 6= i
:
si j = i
Las iteraciones del método de Jacobi están de…nidas por la fórmula
xi =
n
X
(k 1)
bij xj
+ di
(51)
j=1
(0)
donde xi
son arbitrarias (i = 1; 2; ::::n; k = 1; 2; ::::):
También el método de Jacobi se puede expresar en términos de matrices.
Supongamos por un momento que la matriz A tiene la diagonal unitaria, esto
es diag(A) = I: Si descomponemos A = I B, entonces el sistema dado por la
Ecs. (47) se puede reescribir como
I
B u = b:
(52)
Para la primera iteración asumimos que k=b; entonces la última ecuación se escribe como u = Bu+k. Tomando una aproximación inicial u0 ; podemos obtener
una mejor aproximación remplazando u por la más resiente aproximación de um :
Esta es la idea que subyace en el método Jacobi. El proceso iterativo queda como
um+1 = Bum + k:
(53)
La aplicación del método a la ecuación de la forma Au = b, con la matriz
A no cero en los elementos diagonales, se obtiene multiplicando la Ec. (47) por
D
1
= diag(A)
1
obteniendo
B=I
D
1
A;
k=D
1
b:
(54)
Gauss-Seidel Este método es una modi…cación del método Jacobi, en el cual
una vez obtenido algún valor de um+1 ; este es usado para obtener el resto de los
valores utilizando los valores más actualizados de um+1 : Así, la Ec. (53) puede
ser escrita como
X
X
um+1
=
bij um+1
+
bij um
(55)
j + ki :
i
j
j<i
j>i
Notemos que el método Gauss-Seidel requiere el mismo número de operaciones aritméticas por iteración que el método de Jacobi. Este método se escribe
en forma matricial como
um+1 = Eum+1 + F um + k
(56)
donde E y F son las matrices triangular superior e inferior respectivamente.
Este método mejora la convergencia con respecto al método de Jacobi en un
factor aproximado de 2.
19
Richardson Escribiendo el método de Jacobi como
um+1
um = b
Aum
(57)
entonces el método Richardson se genera al incorporar la estrategia de sobrerrelajación de la forma siguiente
um+1 = um + ! b
Aum :
(58)
El método de Richardson se de…ne como
um+1 = I
!A um + !b
(59)
en la práctica encontrar el valor de ! puede resultar muy costoso computacionalmente y las diversas estrategias para encontrar ! dependen de las características
propias del problema, pero este método con un valor ! óptimo resulta mejor
que el método de Gauss-Seidel.
Relajación Sucesiva Partiendo del método de Gauss-Seidel y sobrerrelajando este esquema, obtenemos
2
3
i 1
N
X
X
4
5
um+1
= (1 !) um
bij um+1
+
bij um
(60)
i +!
j + ki
i
j
j=1
j=i+1
y cuando la matriz A es simétrica con entradas en la diagonal positivas, éste
método converge si y sólo si A es de…nida positiva y ! 2 (0; 2) : En la práctica
encontrar el valor de ! puede resultar muy costoso computacionalmente y las
diversas estrategias para encontrar ! dependen de las características propias del
problema.
Gradiente Conjugado El método del Gradiente Conjugado ha recibido mucha
atención en su uso al resolver ecuaciones diferenciales parciales y ha sido ampliamente utilizado en años recientes por la notoria e…ciencia al reducir considerablemente en número de iteraciones necesarias para resolver el sistema algebraico
de ecuaciones. Aunque los pioneros de este método fueron Hestenes y Stiefel
(1952), el interés actual arranca a partir de que Reid (1971) lo planteara como
un método iterativo, que es la forma en que se le usa con mayor frecuencia en
la actualidad, esta versión está basada en el desarrollo hecho en [4].
La idea básica en que descansa el método del Gradiente Conjugado consiste en construir una base de vectores ortogonales y utilizarla para realizar la
búsqueda de la solución en forma más e…ciente. Tal forma de proceder generalmente no sería aconsejable porqué la construcción de una base ortogonal
utilizando el procedimiento de Gramm-Schmidt requiere, al seleccionar cada
nuevo elemento de la base, asegurar su ortogonalidad con respecto a cada uno
de los vectores construidos previamente. La gran ventaja del método de Gradiente Conjugado radica en que cuando se utiliza este procedimiento, basta con
20
asegurar la ortogonalidad de un nuevo miembro con respecto al último que se ha
construido, para que automáticamente esta condición se cumpla con respecto a
todos los anteriores.
De…nition 4 Una matriz A es llamada positiva de…nida si todos sus eigenvalores tienen parte real positiva o equivalentemente, si uT Au tiene parte real
positiva para u 2 Cn f0g : Notemos en este caso que
A + AT
u > 0; con u 2 Rn n f0g :
2
En el algoritmo de Gradiente Conjugado (CGM), se toma a la matriz A
como simétrica y positiva de…nida, y como datos de entrada del sistema
uT Au = uT
Au = b
(61)
el vector de búsqueda inicial u0 y se calcula r0 = b
método esquemáticamente como:
n
un+1
r
n+1
n
pn+1
n
=
p n pn
pn Apn
= un +
= r
n
Au0 ; p0 = r0 ; quedando el
(62)
n n
p
n
Apn
rn+1 rn+1
rn rn
n+1
= r
+ n pn
= n+1
=
N
Si denotamos f i ; Vi gi=1 como las eigensoluciones de A; i.e. AVi = i Vi ,
i = 1; 2; :::; N: Ya que la matriz A es simétrica, los eigenvalores son reales y
podemos ordenarlos por 1
:::
2
N : De…nimos el número de condición
2
por Cond(A) = N = 1 y la norma de la energía asociada a A por kukA = u Au
entonces
q
2
32k
1
Cond(A)
5 :
q
u uk A
u u0 A 4
(63)
1 + Cond(A)
El siguiente teorema nos da idea del espectro de convergencia del sistema
Au = b para el método de Gradiente Conjugado.
Theorem 5 Sea = cond(A) = max
1, entonces el método de Gradiente
min
Conjugado satisface la A norma del error dado por
p
n
ken k
2
1
p
2
(64)
p
p
n
n
ke0 k
+1
+1
p +1
p
+
1
1
donde em = u
um del sistema Au = b:
21
Notemos que para
grande se tiene que
p
2
1
p
'1 p
+1
(65)
tal que
ken kA ' e0
A
n
2p
exp
(66)
p
de lo anterior podemos esperar un espectro de convergencia del orden de O( )
iteraciones, para mayor referencia ver [13].
De…nition 6 Un método iterativo para la solución de un sistema lineal es llamado óptimo, si la razón de convergencia a la solución exacta es independiente
del tamaño del sistema lineal.
2.3
Precondicionadores
Una vía que permite mejorar la e…ciencia de los métodos iterativos consiste
en transformar al sistema de ecuaciones en otro equivalente, en el sentido de
que posea la misma solución del sistema original pero que a su vez tenga
mejores condiciones espectrales. Esta transformación se conoce como precondicionamiento y consiste en aplicar al sistema de ecuaciones una matriz conocida
como precondicionador encargada de realizar el mejoramiento del número de
condicionamiento.
Una amplia clase de precondicionadores han sido propuestos basados en las
características algebraicas de la matriz del sistema de ecuaciones, mientras que
por otro lado también existen precondicionadores desarrollados a partir de las
características propias del problema que lo origina, un estudio más completo
puede encontrarse en [?] y [6].
¿Qué es un Precondicionador? De una manera formal podemos decir que
un precondicionador consiste en construir una matriz C, la cuál es una aproximación en algún sentido de la matriz A del sistema Au = b, de manera tal que
si multiplicamos ambos miembros del sistema de ecuaciones original por C 1
obtenemos el siguiente sistema
C
1
Au = C
1
b
(67)
donde el número de condicionamiento de la matriz del sistema transformado
C 1 A debe ser menor que el del sistema original, es decir
Cond(C
1
A) < Cond(A);
(68)
dicho de otra forma un precondicionador es una inversa aproximada de la matriz
original
C 1'A 1
(69)
22
que en el caso ideal C 1 = A 1 el sistema convergería en una sola iteración,
pero el coste computacional del cálculo de A 1 equivaldría a resolver el sistema
por un método directo. Se sugiere que C sea una matriz lo más próxima a A
sin que su determinación suponga un coste computacional elevado.
Dependiendo de la forma de platear el producto de C 1 por la matriz del
sistema obtendremos distintas formas de precondicionamiento, estas son:
C 1 Au = C 1 b
AC 1 Cu = b
C 1 1 AC 2 1 C 2 u = C 1 1 b
Precondicionamiento por la izquierda
Precondicionamiento por la derecha
Precondicionamiento por ambos lados
si C puede factorizarse como C = C 1 C 2 :
El uso de un precondicionador en un método iterativo provoca que se incurra
en un costo de cómputo extra debido a que inicialmente se construye y luego
se debe aplicar en cada iteración. Teniéndose que encontrar un balance entre el
costo de construcción y aplicación del precondicionador versus la ganancia en
velocidad en convergencia del método.
Ciertos precondicionadores necesitan poca o ninguna fase de construcción,
mientras que otros pueden requerir de un trabajo substancial en esta etapa.
Por otra parte la mayoría de los precondicionadores requieren en su aplicación
un monto de trabajo proporcional al número de variables; esto implica que se
multiplica el trabajo por iteración en un factor constante.
De manera resumida un buen precondicionador debe reunir las siguientes
características:
i) Al aplicar un precondicionador C al sistema original de ecuaciones
Au = b, se debe reducir el número de iteraciones necesarias para que
la solución aproximada tenga la convergencia a la solución exacta
con una exactitud " pre…jada.
ii) La matriz C debe ser fácil de calcular, es decir, el costo computacional de la construcción del precondicionador debe ser pequeño
comparado con el costo total de resolver el sistema de ecuaciones
Au = b.
iii) El sistema Cz =r debe ser fácil de resolver. Esto debe interpretarse de dos maneras:
a) El monto de operaciones por iteración debido a la aplicación
del precondicionador C debe ser pequeño o del mismo orden que las
que se requerirían sin precondicionamiento. Esto es importante si se
trabaja en máquinas secuenciales.
b) El tiempo requerido por iteración debido a la aplicación del
precondicionador debe ser pequeño.
En computadoras paralelas es importante que la aplicación del precondicionador sea paralelizable, lo cual eleva su e…ciencia, pero debe de existir un
23
balance entre la e…cacia de un precondicionador en el sentido clásico y su e…ciencia en paralelo ya que la mayoría de los precondicionadores tradicionales
tienen un componente secuencial grande.
El método de Gradiente Conjugado por si mismo no permite el uso de precondicionadores, pero con una pequeña modi…cación en el producto interior usado en el método, da origen al método de Gradiente Conjugado precondicionado
que a continuación detallaremos.
2.3.1
Gradiente Conjugado Precondicionado
Cuando la matriz A es simétrica y de…nida positiva se puede escribir como
uA u
u u
1
y tomando la matriz C
que
1
(70)
n
como un precondicionador de A con la condición de
uC
1
1
A u
u u
(71)
n
entonces la Ec. (61) se pude escribir como
C
1
Au = C
1
b
(72)
donde C 1 A es también simétrica y de…nida positiva en el producto interior
hu; vi = u Cv; porque
u; C
1
Av
= u C C
= u Av
1
Av
(73)
que por hipótesis es simétrica y de…nida positiva en ese producto interior.
La elección del producto interior h ; i quedará de…nido como
hu; vi = u C
1
Av
(74)
por ello las Ecs. (62[1]) y (62[3]), se convierten en
k+1
=
rk rk
pk+1 C 1 pk+1
(75)
pk C 1 r k
pk Apk
(76)
y
k+1
=
generando el método de Gradiente Conjugado precondicionado con precondicionador C 1 . Es necesario hacer notar que los métodos Gradiente Conjugado
y Gradiente Conjugado Precondicionado sólo di…eren en la elección del producto
interior.
24
Para el método de Gradiente Conjugado Precondicionado, los datos de entrada son un vector de búsqueda inicial u0 y el precondicionador C 1 : Calculándose r0 = b Au0 ; p = C 1 r0 ; quedando el método esquemáticamente
como:
k+1
pk+1
k+1
=
pk C 1 r k
pk Apk
k+1 k
= rk
p
k
=
(77)
k
r r
pk+1 C 1 pk+1
uk+1
= uk +
rk+1
= C
1 k
r
k+1 k+1
p
k+1
Apk+1 :
Algoritmo Computacional del Método Dado el sistema Au = b, con
la matriz A simétrica y de…nida positiva de dimensión n n. La entrada al
método será una elección de u0 como condición inicial, " > 0 como la tolerancia
del método; N como el número máximo de iteraciones y la matriz de precondicionamiento C 1 de dimensión n n, el algoritmo del método de Gradiente
Conjugado Precondicionado queda como:
r = b Au
w = C 1r
v = (C 1 )T w
Pn
= j=1 wj2
k=1
Mientras que k N
Si kvk1 < "
Salir
x = Av
t = Pn
j=1
vj xj
u = u + tv
r=r
tx
1
w=C r
Pn
= j=1 wj2
Si krk1 < "
Salir
s=
v= C
1 T
w + sv
=
k =k+1
25
La salida del método será la solución aproximada u = (u1 ; :::; un ) y el residual r = (r1 ; :::; rn ).
En el caso del método sin precondicionamiento, C 1 es la matriz identidad,
que para propósitos de optimización sólo es necesario hacer la asignación de
vectores correspondiente en lugar del producto de la matriz por el vector. En
el caso de que la matriz A no sea simétrica, el método de Gradiente Conjugado puede extenderse para soportarlas, para más información sobre pruebas
de convergencia, resultados numéricos entre los distintos métodos de solución
del sistema algebraico Au = b generada por la discretización de un problema
elíptico y como extender estos para matrices no simétricas ver [4] y [3].
Theorem 7 Sean A; B y C tres matrices simétricas y positivas de…nidas entonces
C 1A
C 1B
B 1A :
Clasi…cación de los Precondicionadores En general se pueden clasi…car
en dos grandes grupos según su manera de construcción: los algebraicos o a
posteriori y los a priori o directamente relacionados con el problema continuo
que lo origina.
2.3.2
Precondicionador a Posteriori
Los precondicionadores algebraicos o a posteriori son los más generales, ya que
sólo dependen de la estructura algebraica de la matriz A, esto quiere decir
que no tienen en cuenta los detalles del proceso usado para construir el sistema de ecuaciones lineales Au = b. Entre estos podemos citar los métodos de
precondicionamiento del tipo Jacobi, SSOR, factorización incompleta, inversa
aproximada, diagonal óptimo y polinomial.
2.3.3
Precondicionador a Priori
Los precondicionadores a priori son más particulares y dependen para su construcción del conocimiento del proceso de discretización de la ecuación diferencial parcial, dicho de otro modo dependen más del proceso de construcción
de la matriz A que de la estructura de la misma.
Estos precondicionadores usualmente requieren de más trabajo que los del
tipo algebraico discutidos anteriormente, sin embargo permiten el desarrollo de
métodos de solución especializados más rápidos que los primeros.
Veremos algunos de los métodos más usados relacionados con la solución de
ecuaciones diferenciales parciales en general y luego nos concentraremos en el
caso de los métodos relacionados directamente con descomposición de dominio.
En estos casos el precondicionador C no necesariamente toma la forma simple
de una matriz, sino que debe ser visto como un operador en general. De aquí
que C podría representar al operador correspondiente a una versión simpli…cada
del problema con valores en la frontera que deseamos resolver.
26
Por ejemplo se podría emplear en calidad de precondicionador al operador
original del problema con coe…cientes variables tomado con coe…cientes constantes. En el caso del operador de Laplace se podría tomar como precondicionador a su discretización en diferencias …nitas centrales.
Por lo general estos métodos alcanzan una mayor e…ciencia y una convergencia óptima, es decir, para ese problema en particular el precondicionador
encontrado será el mejor precondicionador existente, llegando a disminuir el
número de iteraciones hasta en un orden de magnitud. Donde muchos de ellos
pueden ser paralelizados de forma efectiva.
27
3
Implementación Computacional
Si suponemos que usamos funciones lineales de…nidas por pedazos en e en
nuestro caso serán polinomios de orden uno en cada variable separadamente y
(e)
cuya restricción de i a e es i : Para simpli…car los cálculos en esta etapa,
1 0
; entonces se tiene que la integral
supondremos que la matriz a = a
0 1
del lado izquierdo queda escrita como
Z
Z
ar i r j + c i j dxdy =
f j dxdy
(78)
generandose la matriz de integrales por las Ecs.(11) y (13) en el caso de una
discretización usando rectángulos o por las Ecs.(28) y (30) en el caso de una discretización usando triángulos, i.e. Para cada e de ; la submatriz de integrales
(matriz de carga local)
"
#
!
Z
(e)
(e)
(e)
(e)
@ i @ j
@ i @ j
(e) (e)
Kij =
a
+
+c i j
dxdy
(79)
@x @x
@y @y
e
tiene la estructura
2
(e)
K1;1
6 :
6
4 :
(e)
Kn;1
(e) 3
K1;n
: 7
7
: 5
(e)
Kn;n
(80)
(e)
j dxdy
(81)
:::
:::
donde el valor de n depende del tipo de discretización usado, la cual deberá
ser ensamblada en la matriz de carga global que corresponda a la numeración
de nodos locales del elemento e con respecto a la numeración global de los
elementos en .
De manera parecida, para cada e de
se genera el vector de integrales
(vector de carga local)
Z
Fj =
f
e
con la estructura
2 (e) 3
F1
6
7
6
7
5
4
(82)
(e)
Fn
el cual también deberá ser ensamblado en el vector de carga global que corresponda a la numeración de nodos locales al elemento e con respecto a la
numeración global de los elementos de .
Una vez leida la discretización del dominio (ver apéndice 4), entonces se
procede a generar una única de integrales Ec.(80) y Ec.(82) respectivamente,
28
con la cual formaremos a la matriz K virtual y al vector F . De…niendo así al
sistema lineal virtual
Ku = F
(83)
donde u será el vector solución.
3.1
Implementación de FEM
Suponiendo que deseamos resolver la Ec.(83) sin construir la matriz K; entonces
asumiendo que tenemos una clase derivada de la clase Matriz Bandada (ver
apéndice 4.2) en la cual reimplementaremos el comportamiento de retornar la
entrada (n; m) de la matriz virtual.
El algoritmo que a continuación se detalla permite recuperar cualquier entrada de la matriz virtual de carga, los detalles de la implementación no son
necesarios para este …n, sólo supondremos que tenemos acceso a la geometría del
problema la cual fue leida o generada por cualquier medio. El comportamiento
descrito lo llamaremos Retorna(n; m); el cual regresa el valor numérico de la
entrada K n:m de la matriz, al pasarle los indices n y m.
Supondremos que tenemos una numeración global de los nodos, y adicionalmente generamos otra numeración de los nodos que son interiores al dominio,
esta numeración correspondera a la numeración de las entradas de la matriz K;
i.e. si nos referimos a la entrada K n:m ; estaremos re…rendonos a la interación
de los nodos n y m de la numeración de nodos interiores al dominio, que corresponden a un subconjunto de los nodos de la numeración global.
double val Retorna(int n; int m)
Si n = m; regresar la suma de la diagonal de la matriz Ec.(80)
Solicitar soporte del nodo n
Si el soporte no contiene al nodo m, retorna 0:0
Dado el nodo n y m retornar el indice (p1 ; q1 ) y (p2 ; q2 ) de los
nodos dentro de cada elemento que contiene simultaneamente a los
nodos n y m
Si los nodos pertenecen a un mismo elemento, retornar K p ;q
1 1
Retornar (K p ;q + K p ;q )
1
1
2
2
Resolviendo el sistema lineal virtual (ver apéndice 4.2), obtendremos la solución al problema dado por la Ec.(1), consumiendo muy poca memoria, pues la
matriz K nunca se construyo.
29
4
Apéndice
En este apéndice se describirán algunas características que expondremos suponiendo
que se trabaja en programación orientada a objetos (pero no es esto extrictamente necesario, ya que pueden ser implementados los comportamientos de las
clases como funciones). Así, las clases necesarias para implentar FEM, suponen
que existe una clase Geometría, una clase Matriz bandada la cual sera la clase
base de una clase llamada matriz de carga virtual y por último una clase para
resolución de sistemas lineales.
4.1
Implementación de la Geometría
Rn un dominio poligonal y sean
Sea
i.e.
1.2.-
; para
\
3.-
=
E
[
1 ; :::;
= 1; :::; E es un subdominio de
= ?; siempre que
la partición del dominio,
E
;
6= :
:
=1
Implementación de la Clase Geometría No se hará la implementación
detallada de la clase geometría, lo que se indicará, seran los comportamientos
mínimos para poder implementar FEM usando la matriz de carga virtual.
Los comportamientos básicos son:
1. Dado un nodo de la malla poder saber como es el (interior, frontera, etc)
2. Dado un nodo de la malla poder conocer los elementos que forman su
soporte
3. Dado un elemento de la malla poder conocer los nodos que lo forman
(ordenados según el sentido contrario a las manecillas del relog)
4. Dado un nodo interior de la malla conocer los nodos soporte que son
también nodos interiores
5. Dados dos nodos que esten en el mismo soporte, regresar la numeración
del orden que tienen en cada elemento
6. Leer la geometria de un archivo de texto plano en formato ASCII
30
Manejo de la Geometría Información mínima de la discretización a la que
se tiene acceso:
Número de elementos (N E)
Número de nodos (N N )
Número de nodos por elementos (N N E)
Dimensión 1 –> R1 , 2 –> R2 , 3 –> R3 ; etc (DIM )
Coordenadas del dominio
Partición (P art_X; P art_Y; P art_Z; :::)
Arreglo conteniendo a los elementos (en sentido contrario a las manecillas
del relog)
Arreglo conteniendo a las Coordenadas
Arreglo conteniendo el tipo nodo
4.1.1
Estructura del Archivo que Contiene la Geometría
Supondremos que la discretización de esta generada en un archivo de texto
plano en ASCII separando los distintos datos mediante un espacio, bajo la siguiente estructura:
Número de elementos
Número de nodos
Número de nodos por elementos
Dimensión 1 –> R1 , 2 –> R2 , 3 –> R3 ; etc
Coordenadas del dominio
Partición
Elementos (en sentido contrario a las manecillas del relog)
Coordenada_X
Coordenada_Y
Donde el tipo de nodo es de…nido como:
-1 Nodo frontera
-2 Nodo Primal
-3 Nodo Dual
31
Coordenada_Z
...
Tipo_Nodo
Ejemplo en dos dimensiones, dominio de [ 1; 1] [ 1; 1] partido en 1 2
elementos; generandose 2 elementos, con un total de 6 nodos, donde hay 4 nodos
por elemento:
2
6
4
2
-1.0 -1.0 1.0 1.0
12
0123
3245
-1.0 -1.0 -1
1.0 -1.0 -1
1.0 0.0 -1
-1.0 0.0 -1
1.0 1.0 -1
-1.0 1.0 -1
32
4.2
Matrices Virtuales
Dado que las matrices resultantes de los métodos tipo FEM son matrices bandadas, todas las operaciones que aqui se implementan se harán bajo este supuesto,
así, cuando se realize la multiplicación Ku; sólo están involucrados los valores
de la banda del renglon i de la matriz virtual K con los valores correspondientes
del vector u; realizando la menor cantidad de operaciones matemáticas posibles.
Para realizar la implementación del producto Ku, se supone que cada indice
de la matriz K corresponde a un nodo interior del dominio ; así al referirnos
a la entrada K i;j de la matriz, nos estaremos re…riendo a la interacción del
nodo interior i con el nodo interior j: Además para saber cuales entradas del
renglon i son distintas de cero, bastará conocer el soporte del nodo interior i
que determina las interaciones con dicho nodo.
Suponiendo que se tiene implementado el siguiente comportamiento en la
clase Geometría:
Dado un nodo interior de la malla, se retornara el número de nodos interiores en el soporte así como cuales son estos, estos se guardarán en un
arreglo, supondremos un comportamiento
int num_nod_sop
4.2.1
Retorna_Soporte_N odo_Interior(int nodo; int arr):
Operaciones entre Matrices y Vectores
La implementación del producto Ku donde la matriz virtual K es de tamaño
N X se hará mediante el siguiente algoritmo:
for (i = 0; i < N; i++)
{
v = 0;
// Solicita el soporte del nodo i
NumeroNodosEnSoporte = GE->Retorna_Soporte_Nodo_Interior(i,arr);
for (k = 0; k < NumeroNodosEnSoporte; k++)
{
l = arr[k];
val = K->Retorna(i, l);
v += val * u->Retorna(l);
}
u->Asigna(i,v);
}
4.3
Resolución de Sistemas Lineales
Para la resolución del sistema lineal resultante
Ku = F
(84)
podemos emplear varios métodos numéricos, pero los más adecuados serán aquellos que no necesiten modi…car el contenido de la matriz virtual K; por ello no
33
es opción el método de Factorización LU o sus derivados. En este caso usaremos
el algoritmo de Gradiente Conjugado (2.3.1).
Implementación Computacional En en la implementación computacional
de método CGM, se usará el mismo algoritmo que para matrices bandadas, y
sólo es necesario tener implementada la operación de multiplicación de la matriz
virtual K con un vector v; la cual fue detallada anteriormente.
34
5
Bibliografía
References
[1] A. Quarteroni y A. Valli; Numerical Approximation of Partial Diferential
Equations. Springer, 1994.
[2] B. D. Reddy; Introductory Functional Analysis - With Applications to
Boundary Value Problems and Finite Elements. Springer 1991.
[3] I. Herrera; Análisis de Alternativas al Método de Gradiente Conjugado
para Matrices no Simétricas. Tesis de Licenciatura, Facultad de Ciencias,
UNAM, 1989.
[4] I. Herrera;Un Análisis del Método de Gradiente Conjugado. Comunicaciones Técnicas del Instituto de Geofísica, UNAM; Serie Investigación, No.
7, 1988.
[5] M.B. Allen III, I. Herrera & G. F. Pinder; Numerical Modeling in Science
And Engineering. John Wiley & Sons, Inc . 1988.
[6] M. Diaz, I. Herrera; Desarrollo de Precondicionadores para los Procedimientos de Descomposición de Dominio. Unidad Teórica C, Posgrado de Ciencias de la Tierra, 22 pags, 1997.
[7] P.G. Ciarlet, J. L. Lions; Handbook of Numerical Analysis, Vol. II. NorthHolland, 1991.
[8] R. L. Burden y J. D. Faires; Análisis Numérico. Math Learning, 7 ed. 2004.
[9] S. Friedberg, A. Insel, and L. Spence; Linear Algebra, 4th Edition, Prentice
Hall, Inc. 2003.
[10] T. J. R. Hughes; The Finite Element Method: Linear Static and Dynamic
Finite Element Analysis. Prentice Hall, 1987.
[11] W. Rudin; Principles of Mathematical Analysis. McGraw-Hill International
Editions, 1976.
[12] Y. Saad; Iterative Methods for Sparse Linear Systems. SIAM, 2 ed. 2000.
[13] Y. Skiba; Métodos y Esquemas Numéricos, un Análisis Computacional.
UNAM, 2005.
35
Descargar