Simulación Numérica de Yacimientos Capítulo 7. Solución de

Anuncio
Simulación Numérica de
Yacimientos
Dr. Fernando Rodríguez de la Garza
e-mail: [email protected]
Tel: 55508712, 5622 3017 al 19
Capítulo 7.
Solución de Sistemas de
Ecuaciones Lineales
1
7. Solución de Sistemas de Ecuaciones
Lineales.
Se presentan métodos de solución comúnmente
empleados en la simulación numérica de yacimientos.
Los sistemas de ecuaciones que se generan en la
simulación de yacimientos se resuelven mediante:
Métodos Directos
Requieren de un número fijo de operaciones para resolver
un sistema dado.
Métodos Iterativos
No se puede predeterminar el número de operaciones, ya
que la solución consiste en aplicar algoritmos cíclicos. Se
espera que al paso de las iteraciones el método converja a
la solución.
7.1 Métodos Directos.
Como se vio en el Capítulo 5, la solución numérica de las
ecuaciones que de flujo en yacimientos generan sistemas
lineales de ecuaciones con matrices bandadas y dispersas,
en los que el ancho de banda es predecible.
En los métodos directos, el trabajo computacional y el
requerimiento de memoria están directamente
relacionados con el número de ecuaciones o de incógnitas
a resolver.
2
7.1 Métodos Directos…
Entre mayor es el número de ecuaciones, el ancho de
banda es generalmente mayor y la cantidad de memoria
de cómputo y de tiempo de procesamiento son también
mayores.
El número de ecuaciones y de incógnitas, para un
problema dado, depende del número total de bloques o de
celdas, en que se discretiza el dominio de interés y del
número de pseudo componentes considerados.
7.1 Métodos Directos…
Los métodos directos, se basan en el Método de
Eliminación Gaussiana, MEG, y consisten de dos pasos:
Paso 1: En un barrido hacia delante se eliminan
todos los elementos diferentes de cero ubicados
debajo de la diagonal principal: Esto es, se
transforma la matriz de coeficientes en una matriz
triangular superior.
Paso 2: En un barrido hacia atrás (… sustitución hacia
atrás) se se obtiene la solución de las incógnitas.
3
7.1 Métodos Directos…
Existen variaciones del MEG, que han sido motivadas
por las características particulares de los sistemas de
ecuaciones que se generan en algunas aplicaciones de
las ciencias e ingenierías (…como es el caso de la
simulación numérica de yacimientos) .
Dentro de estos métodos, los Algoritmos de Banda y las
Técnicas para resolver sistemas de ecuaciones con
Matrices Dispersas son de interés en la Simulación
Numérica de Yacimientos.
7.1 Métodos Directos.
Los algoritmos de banda toman ventaja de la
estructura bandada de la matriz para confinar las
operaciones de eliminación dentro de la banda.
Las técnicas de matrices dispersas,
reconocen la existencia de un gran número de
ceros en la matriz de coeficientes y evitan su
almacenamiento y operaciones innecesarias.
4
7.1 Métodos Directos.
El trabajo de los algoritmos de banda depende del ancho
de la banda. Para una cierta malla de cálculo, el menor
ancho de banda se obtiene ordenando las ecuaciones e
incógnitas en la dirección del menor número de celdas.
La eficiencia de los métodos directos se mejora
grandemente cuando se emplean técnicas especiales de
ordenamiento de las ecuaciones e incógnitas, como es el
caso del Ordenamiento D4.
7.1.1 Método de Eliminación Gaussiana
El método de Eliminación Gaussiana es la base de todos los métodos
de solución directa de sistemas lineales de ecuaciones. Sus bases se
expondrán con un ejemplo simple:
Considerar el sistema de ecuaciones:
Au = d
Donde
 2 1 1
A =  4 1 0
− 2 2 1
 u1 
; u = u 2 
u3 
1
; d = − 2
 7 
5
7.1.1 Método de Eliminación Gaussiana.
o bien,
 2
 4

 − 2
1
1
2
1
0 
1 
 u1   1 
u  =  − 2 
 2  
 u 3   7 
El método consiste en eliminar, en una primera etapa, los
elementos ubicados debajo de la diagonal principal, mediante
operaciones entre las ecuaciones, y en una segunda etapa, resolver
las incógnitas mediante substitución hacia atrás.
7.1.1 Método de Eliminación Gaussiana.
En el ejemplo, durante la primera etapa se realizan 3 operaciones de
eliminación:
1a. Operación: Restamos 2 veces la primera ecuación de la segunda.
2a. Operación: Restamos –1 veces la primera ecuación de la tercera.
2
0

 0
1
−1
3
1 
− 2 
2 
 u1   1 
u  =  − 4 
 2 

 u 3   8 
6
7.1.1 Método de Eliminación Gaussiana.
3a. Operación: Restamos –3 veces la segunda ecuación de la tercera.
2
0

 0
1
−1
0
1 
− 2 
− 4 
 u1   1 
u  =  − 4 
 2 

 u 3   − 4 
7.1.1 Método de Eliminación Gaussiana.
Haciendo:
2 1 1  u1 
Uu = 0 −1 − 2 u2  ;
0 0 − 4 u3 
1
c = − 4
− 4
El coeficiente del vector u, es un matriz triangular superior, U: “Todos
los valores debajo de la diagonal principal son cero”.
El vector c se obtuvo a partir de
transformaron a A en U.
d con las mismas operaciones que
7
7.1.1 Método de Eliminación Gaussiana.
Cuál es la relación entre A y U?
Veremos primero la forma matricial de las operaciones de eliminación:
Notar que la 1a operación de eliminación es equivalente a efectuar la
siguiente operación sobre
Au=d.
E 21 Au = E 21d
donde,
 1 0 0
E21 =  − 2 1 0 
 0 0 1 
Matriz
Elemental 21
Los subíndices de E indican que la ecuación 2 fue alterada por un
múltiplo de la ecuación 1: El múltiplo de 1 que se restó de la ecuación
2 fue:
–e21= 2.
7.1.1 Método de Eliminación Gaussiana.
relación entre A y U...
O sea que,
1
1   u1 
 1 0 0  2 1 1   u1   2
− 2 1 0  4 1 0 u  =  0 − 1 − 2  u 


  2 
  2
 0 0 1   − 2 2 1  u3  − 2 2
1  u3 
Haciendo ahora,
E 21 d
 1 0 0
− 2 1 0


 0 0 1 
1   1 
− 2  =  − 4 
   
 7   7 
8
7.1.1 Método de Eliminación Gaussiana.
Similarmente, la operación 2 de eliminación se representa
matricialmente como:
E 31 (E 21 A )u = E 31 (E 21 d )
1 0 0 
E31 = 0 1 0 
1 0 1 
Matriz
Elemental 31
Los subíndices de E indican que la ecuación 3 fue alterada por un
múltiplo de la ecuación 1: El múltiplo de 1 que se restó de la ecuación
3 fue:
–e31= -1.
7.1.1 Método de Eliminación Gaussiana.
Esto es:
1 0 0  2 1 1  u1  1 0 0  1 
0 1 0  0 − 1 − 2 u  = 0 1 0 − 4


  2 
 
1 0 1 − 2 2 1  u3  1 0 1  7 
Realizando operaciones:
2
0

 0
1
1 
− 1 − 2 
3
2 
 u1   1 
u  =  − 4 
 2  
 u 3   8 
9
7.1.1 Método de Eliminación Gaussiana.
y la operación 3 de eliminación es:
E 32 (E 31 E 21 A )u = E 32 (E 31 E 21 d )
donde:
E 32
1
=  0
 0
0
0 
1 
0
1
3
Matriz
Elemental 32
Los subíndices de E indican que la ecuación 3 fue alterada por un
múltiplo de la ecuación 2: El múltiplo de 2 que se restó de la ecuación
3 fue:
–e32= -3.
7.1.1 Método de Eliminación Gaussiana.
La operación 3 de eliminación es entonces,
1
0

 0
0
1
3
0
0 
1 
2
0

 0
1
−1
3
1 
− 2 
2 
 u1  1
u  =  0
 2 
u 3   0
0
1
3
0
0 
1 
1
- 4 
 
 8 
y realizando operaciones, se tiene que:
2
0

 0
Resumiendo:
1
−1
0
1 
− 2 
− 4 
 x1   1 
 x  = - 4 
 2  
 x 3   - 4 
Las operaciones de eliminación generaron,
Uu = c
U es una matriz
triangular superior
10
7.1.1 Método de Eliminación Gaussiana.
Eij se parte de la
matriz identidad, I, y se remplaza el cero en la fila i, columna j por
( –lij ) siendo lij el múltiplo de la ecuación j que se resta de la
ecuación i.
Nótese que para formar las matrices elementales
Las 3 operaciones matriciales que convierten a la matriz A en U
son:
E32 E31 E21 A = U
Similarmente:
E32 E31 E21d = c
7.1.1 Método de Eliminación Gaussiana.
Nótese también que se pudo haber realizado, independientemente,
la siguiente operación:
 1 0 0
E32 E31 E21 = − 2 1 0
 − 5 3 1 
matriz triangular inferior
11
7.1.1 Método de Eliminación Gaussiana.
Notar que:
E 32− 1 E 32 E 31 E 21 A = E 32− 1U
Recordando que:
E 32− 1 E 32 = I
Donde:
E 32− 1
1
=  0
 0
0
1
−3
0
0 
1 
7.1.1 Método de Eliminación Gaussiana.
o sea:
1
0

 0
0
1
−3
0
0 
1 
1
0

 0
0
1
3
0  1
0  =  0
1   0
0
1
0
0
0 
1 
De igual forma:
(E
−1
31
)
E 31 E 21 A = E 31− 1 E 32− 1U
Finalmente:
A = E 21− 1 E 31− 1 E 32− 1U
12
7.1.1 Método de Eliminación Gaussiana.
Pero:
E21−1 E31−1 E32−1 = L
Es la matriz que convierte U en A:
1 0 0  1 0 0 1 0 0
L = 2 1 0  0 1 0 0 1 0
0 0 1 − 1 0 1 0 − 3 1 
0 0
1

L=2
1 0
− 1 − 3 1
7.1.1 Método de Eliminación Gaussiana.
Resumiendo:
Au = d
pero A se puede descomponer en el producto LU:
LUu = d
de manera que por eliminación se transformó en:
L−1 (LUu) = L−1d
o sea:
Uu = c
13
7.1.1 Método de Eliminación Gaussiana.
Entonces:
x = U −1c
x = L−1U −1d
ó,
x = A−1b
L y U, es posible obtener la solución x’
para cualquier nuevo d’ en n2 operaciones: n2/2 hacia delante,
para obtener c’ y n2/2 hacia atrás para obtener x’
Una vez que se calculan
7.1.2 Solución de Sistemas Tridiagonales:
Algoritmo de Thomas.
Considerar el siguiente sistema tridiagonal de ecuaciones:
a1u1 + b1u2 = d1
ciui-1 + aiui + biui+1 = di ;
cIuI-1 + aIuI = dI
i=2,3,...,I-1
…(7.1)
o bien,
Au = d
…(7.2)
14
7.1.2 Solución de Sistemas Tridiagonales…Thomas.
donde,
y,
 a1
c
 2


A=





b1
a2
c3
b2
a3 b3
.
.
.
.
.
.
.
.
cI








.
aI 
uT = (u1,u2,...,uI)
dT = (d1,d2,...,dI).
7.1.2 Solución de Sistemas Tridiagonales.. Thomas.
La matriz A se descompone como el siguiente el producto
A = WQ
…(7.3)
Donde,
 w1
c
 2


W =





w2
c3
w3
.
.
.
.
.
.
cI









wI 
15
7.1.2 Solución de Sistemas Tridiagonales… Thomas.
y,
1 q1

1



Q=





q2
1
q3
.





.


. .

1 qI −1 
1 
7.1.2 Solución de Sistemas Tridiagonales… Thomas.
Efectuando el producto WQ e igualando la matriz
resultante, elemento elemento, con la matriz A, se obtiene
un sistema de 2I-1 ecuaciones con 2I-1 incógnitas: w1, w2,...,
wI y q1, q2,..., qI-1. Su solución da lo siguiente:
w1 = a1
q1 =
b1
w1
bi
;
wi
…(7.4)
wi = ai − ci qi −1
…(7.5)
qi =
i = 2,3,...., I
16
7.1.2 Solución de Sistemas Tridiagonales…Thomas.
La solución del sistema tridiagonal se obtiene como sigue:
Au = WQu = Wg
donde
…(7.6)
g = Qu
Es decir,
 w1
c
 2







w2
c3
w3
.
.
.
.
.
.
cI









wI 
(ν )
 g1 
g 
 2
g3 
 
. 
. 
 
. 
 g I 
(ν +1)
 d1 
d 
 2
d 3 
 
= . 
. 
 
. 
d I 
(ν )
7.1.2 Solución de Sistemas Tridiagonales…Thomas.
y en un barrido hacia delante se resuelve g:
g1 =
d1
w1
gi =
d i − ci g i −1
;
wi
…(7.7)
i = 2,3,...., I
Finalmente se puede resolver Qu=g como sigue:
1 q1

1








q2
1
q3
.
.
.







.

1 q I −1 
1 
(ν )
 u1 
u 
 2
u3 
 
.
.
 
.
u I 
(ν +1)
 g1 
g 
 2
 g3 
 
= . 
. 
 
. 
 g I 
(ν )
17
7.1.2 Solución de Sistemas Tridiagonales: Algoritmo de
Thomas.
y en un barrido hacia atrás se obtiene la solución deseada:
uI = gI
ui = gi - qiui+1;
…(7.8)
i= I-1, I-2,…, 1
Resumiendo:
Para resolver el sistema tridiagonal Au = d, es necesario
calcular primero los elementos qi, wi y gi mediante las Ecs.
7.4, 7.5 y 7.7 y posteriormente obtener la solución de ui
mediante las Ecs. 7.8.
7.1.3 Algoritmos de matrices dispersas:
Descomposición LDU.
18
7.2 Métodos Iterativos.
Los métodos iterativos adquieren interés en el caso de problemas
multidimensionales, donde el número de ecuaciones a resolver es
relativamente grande. Básicamente existen dos tipos:
1. Métodos iterativos por punto, (MIP).
2. Métodos iterativos por línea o bloque, (MIL/B).
En los métodos iterativos por punto, MIP, las incógnitas de cada nodo
se resuelven explícitamente en cada iteración.
En los métodos iterativos por línea/bloque, MIL/B, las incógnitas de un
grupo de celdas se resuelven simultáneamente (ó implícitamente).
7.2 Métodos Iterativos.
Entre mayor sea el número de íncógnitas que se resuelven
simultáneamente, o dicho de otra manera, entre más implícito sea
el MIL/B, la convergencia a la solución será más rápida (...se
necesitarán menos iteraciones).
A mayor implicitud se requerirá , sin embargo, una mayor capacidad
de memoria de cómputo y un mayor esfuerzo computacional por
iteración.
Por lo anterior, en la implementación de un método iterativo por
bloques, es necesario hacer un balance entre implicitud y
simplicidad para resolver el sistema de ecuaciones generado por los
bloques.
19
7.2 Métodos Iterativos.
Los métodos iterativos están ligados a parámetros de iteración, que
se introducen en el algoritmo para acelerar la convergencia a la
solución.
El ritmo de convergencia de un algoritmo dado, depende de varios
factores, como son:
–
–
–
–
Las características de la malla de cálculo,
La anisotropía y las heterogeneidades de la formación,
La estimación inicial de la solución
El criterio de convergencia
7.2 Métodos Iterativos.
A continuación se presentan algunos de estos métodos.
Considérese el siguiente sistema de ecuaciones:
f ij ui , j −1 + cij ui −1, j + aij ui , j + bij ui +1, j + eij ui , j +1 = d ij
…(7.9)
i = 1,2,..., I
j = 1,2,..., J
Dentro de los métodos iterativos que han recibido atención en la
simulación numérica de yacimientos están el PSOR, LSOR, BSOR y
algunas variantes de estos.
Otros métodos son el ADIP y SIP.
Ninguno de estos métodos es universal: algunos funcionan bien bajo
algunas circunstancias y mal bajo otras.
20
Como antecedentes a los métodos SOR
se presenta primeramente los métodos
de:
Jacobi y de Gauss Seidel.
7.2.1 Método de Jacobi.
La solución del sistema de ecuaciones, Ec. 7.9, mediante el método de
Jacobi consiste en la aplicación sucesiva del siguiente proceso
iterativo:
ui(,mj +1) =
1
{d i, j − f i, j ui(,mj−)1 − ci, j ui(−m1), j − bi, j ui(+m1), j − ei, j ui(,mj+)1 }
ai , j
…(7.10)
donde m+1 y m son los niveles iterativos, desconocido y conocido
respectivamente.
21
7.2.1 Método de Jacobi.
Nótese que la solución de las incógnitas se obtienen puntualmente, o
explícitamente y que el orden en que estas se resuelven es irrelevante.
Como cualquier proceso iterativo, se requiere de una estimación inicial
de la solución y se espera que en la medida en que las iteraciones
avancen, el método converja a la solución.
La converjencia ocurre cuando los cambios iterativos de las incógnitas
en todos los nodos sean, en valor absoluto, menor que una
tolerancia preestablecida.
7.2.2 Método de Gauss-Seidel.
Se observa que si en el método de Jacobi se establece un orden en
la solución de las incógnitas mediante, el ordenamiento normal por
ejemplo, en la medida que se avanza la solución, existe ya en los
nodos barridos una mejor estimación de la solución.
El método de Gauss-Seidel reconoce este hecho y modifica el
algoritmo iterativo de Jacobi de la siguiente manera:
ui(,mj +1) =
1
{
d i , j − f i , j ui(,mj−+11) − ci , j ui(−m1+, 1j ) − bi , j ui(+m1), j − ei , j ui(,mj+)1 }
ai , j
(7.11)
donde el barrido se hace por renglones. Esto es, en orden creciente
de j , y para cada renglón j se barre en orden creciente de i.
El método de Gauss-Seidel es computacionalmente más
simple que el método de Jacobi y converge más rápido a la
solución.
22
7.2.3 Método de SOR en Punto o PSOR.
El método iterativo del PSOR es en una modificación del método de
Gauss-Seidel, donde se introduce el uso de un parámetro de iteración,
con el objeto de acelerar el proceso de convergencia a la solución. Si
se denomina a la solución obtenida mediante el método de GaussSeidel en la iteración m+1, el método PSOR se define como:
u i(,mj +1) = (1 − ω )u i(,mj ) + ω u i*(,jm +1)
…(7.12)
1≤ ω ≤ 2
donde ω es un parámetro de sobrerrelajación que, como ya se
mencionó, acelera el ritmo de convergencia de la solución. El
parámetro adquiere valores en el rango de 1 a 2. Mas adelante se
darán algunos criterios para la estimación de este parámetro.
7.2.4 Método de SOR en Línea o LSOR.
Se establecen, en cada iteración, sistemas de ecuaciones similares a
los generados en problemas lineales: Se resuelven simultáneamente
las incógnitas correspondientes a una línea o columna de celdas
En la solución de las incógnitas de una línea determinada, se emplean
los nuevos valores de las incógnitas obtenidos en líneas anteriores.
Como una extensión del método de Gauss-Seidel, para cada j se
establece el siguiente sistema de ecuaciones:
ci , j ui*−(1m, +j 1) + ai , j ui*,(jm+1) + bi , j ui*+(1m, +j 1) = d i , j − f i , j ui(,mj−+11) − ei , j ui(,mj+) 1
(7.13)
i = 1,2,....,I para cada j
23
7.2.4 Método de SOR en Línea o LSOR.
El sistema de ecuaciones generado con la Ec. 7.13 es tridiagonal. Se
puede entonces resolver mediante el algoritmo de Thomas. Una vez
que se obtiene la solución de las incógnitas , i=1,2,...,I para la línea j,
esta se sobrerrelaja como en la Ec. 7.12, esto es:
ui(,mj+1) = (1 − ω )ui(,mj ) + ωui*(,jm +1)
…(7.14)
1≤ ω ≤ 2
El ritmo de convergencia del método LSOR, depende del valor
del parámetro de sobrerelajación. Existe un valor óptimo de este
parámetro, que se puede obtener por ensaye y error, como se verá
posteriormente.
7.2.4 Método de SOR en Línea o LSOR.
El proceso iterativo LSOR comienza con la siguiente estimación inicial:
δ u i(,0j) = δ u in, j
(7.15)
y termina cuando los cambios iterativos de las incógnitas son, en valor
absoluto, menores que una cierta tolerancia estipulada, esto es:
δ u i(,mj + 1 ) − δ u i(,mj ) ≤ tolerancia
(7.16)
Para todo
i = 1 , 2 ,..., I
j = 1 , 2 ,..., J
24
7.2.5 Método de SOR en Bloque o BSOR.
La idea principal de este método consiste en rearreglar por planos el
sistema de ecuaciones generado para un problema tridimensional:
hi , j ,k ui , j ,k −1 + f i , j ,k ui , j −1,k + ci , j ,k ui −1, j ,k + ai , j ,k ui , j ,k
+ bi , j ,k ui +1, j ,k + ei , j ,k ui , j +1,k + gi , j ,k ui , j ,k +1 = di , j
(7.17)
i = 1,2,...,I ; j = 1,2,...,J ; k = 1,2,…,K
El problema tridimensional, Ec. 7.17, se resuelve mediante una serie
de barridos bidimensionales, empleando los nuevos valores de las
incógnitas de los planos previamente resueltos.
7.2.5 Método de SOR en Bloque o BSOR.
El método de sobrerelajación en Bloque, BSOR, aplicado a la solución
del sistema lineal de ecuaciones definido por la Ec. 7.17, consiste en
conservar en el lado izquierdo de la ecuación a los términos
correspondientes a dos direcciones así como a la diagonal principal y
pasar al lado derecho los términos correspondientes a una dirección y
a los términos de residuos, con lo que se establece el siguiente
proceso iterativo:
f i , j ,k ui*,(jm−1+,1k) + ci , j ,k ui*−(1m, +j ,1k) + ai , j ,k ui*,(jm,k+1) + bi , j ,k ui*+(1m, +j ,1k) + ei , j ,k ui*,(jm+1+,1k)
= di , j − hi , j ,k ui(,mj ,+k1−)1 − gi , j ,k ui(,mj ,)k +1
(7.18)
Para cada plano, k = 1,2,…,K
Se resuelven simultáneamente: i = 1,2,...,I ; j = 1,2,...,J
25
7.2.5 Método de SOR en Bloque o BSOR.
El problema bidimensional, Ec. 7.18, genera para un ordenamiento
normal, una matriz de coeficientes pentadiagonal que se resuelve más
eficientemente que el problema original.
Cada uno de estos problemas reducidos, se resuelve empleando un
esquema directo de solución, con lo que se genera una solución
intermedia que sirve de base para obtener la solución al nivel de
iteración desconocido, (m+1). Una vez que se obtiene la solución
intermedia de las incógnitas , i=1,2,...,I y j=1,2,….,J
correspondientes al plano k, ésta se sobrerrelaja como la Ec. 7.14.
7.2.5 Método de SOR en Bloque o BSOR.
En problemas donde el método LSOR no converge debido, por
ejemplo, a que la formación es altamente heterogénea y anisotrópica,
el método BSOR tiene un mejor comportamiento.
Las propiedades de convergencia de estos método iterativos mejoran a
medida que el número de ecuaciones resueltas simultáneamente
aumenta. Esto; sin embargo, ocasiona un aumento en el trabajo
computacional realizado en cada iteración.
Al igual que el método anterior, el método BSOR comienza con una
estimación inicial dada por la Ec. 7.15 y termina cuando alcanza la
convergencia estipulada, dada por la Ec. 7.16
26
7.2.6 Algoritmo para el cálculo del parámetro
de sobrerelajación.
Una forma de obtener el valor óptimo de ω a emplear en LSOR y
BSOR es mediante ensaye y error:
Se realizan corridas de sensibilidad con diferentes valores de ω y se
gráfica ω contra el No. de Iteraciones requeridas en la solución. El ω
óptimo, ωópt , es aquel que requiere el menor número de iteraciones.
7.2.6 Algoritmo para el cálculo del parámetro de
sobrerelajación.
Otra manera de obtener
ωopt es a través del procedimiento siguiente:
Se parte de considerar que cualquier esquema iterativo para resolver el
sistema de ecuaciones puede expresarse de la siguiente forma:
u ( m+1) = A* u ( m ) + d *
donde
(7.19)
m+1 es el nivel iterativo desconocido y m el conocido.
El valor óptimo de está en función del radio espectral de la matriz A*,
ρ(Α∗) , de la siguiente manera:
ωb =
[
2
( )]
1 + 1 − ρ A*
2
1
2
(7.20)
donde ωb es el parámetro de sobrerelajación óptimo.
27
7.2.6 Algoritmo para el cálculo del parámetro de
sobrerelajación.
El radio espectral de la matriz A*,
ρ (A* )=
ρ (A * )
(θ + ω − 1)
ωθ
1
2
, está definido como:
(7.21)
donde θ es el valor promedio del ritmo al cual converge la solución,
θ (m +1) el cual se calcula con la siguiente expresión:
θ ( m +1 ) =
δ u ( m +1 )
δu (m )
(7.22)
( m +1 )
donde δ u
es el vector de los cambios iterativos de la solución,
definido como:
(7.23)
δ u ( m +1 ) = u ( m +1 ) − u ( m )
y
δu
es la norma del vector solución de los cambios iterativos.
7.2.6 Algoritmo para el cálculo del parámetro de
sobrerelajación.
Los valores de θ (m +1) deben estar muy próximos a un valor límite de θ
y este valor se usa como una aproximación en el cálculo del radio
espectral.
También se requiere un valor inicial de ω en la Ec. 7.21 para
(m +1 )
obtener el vector solución δ u
. Por tal motivo, se requiere que este
proceso iterativo se inicialice con ω = 1 y se cumpla con la siguiente
condición:
θ (m +1) − θ (m ) ≤ tolerancia
(7.24)
De tal manera que este proceso iterativo se detiene hasta lograr la
convergencia estipulada, Ec. 7.24. Cabe mencionar, que este proceso
(m )
converge solo si el valor de ω
es menor que el nuevo valor de
( m +1calculado.
)
De
otra
forma,
los
valores
deθ ( m ) oscilarán y no se podrá
ω
obtener una aproximación correcta del radio espectral, ρ ( A ) . En este
último caso, debe
reducirse hasta que θ ( m ) logre la convergencia.
ω
28
7.2.7 Método ADIP (Procedimiento
Iterativo de Dirección Alternada).
Peaceman, D.W. y Rachford, H.H.:” The Numerical Solution of Parabolic and
Elliptic Differential Equations,” SIAM J. Numerical Analysis (1955) 3, 28-41
El desarrollo del método ADIP, comienza por reconocer que en
problemas de flujo bidimensional, el coeficiente aij de la ecuación
7.9 puede descomponerse como la suma de las contribuciones de
los términos de flujo en x, y y del término de acumulacion, esto es:
f ij ui , j −1 + cij ui −1, j + (a x ,ij + a y ,ij + aac ,ij )ui , j
+ bij ui +1, j + eij ui , j +1 = d ij
i = 1,2,..., I
j = 1,2,..., J
Matricialmente, podemos escribir este sistema de ecuaciones
como sigue:
7.2.7 Método ADIP ...
( H + V + S )u = d
Donde:
H = Matriz que contiene las contribuciones del término de flujo en x
V = Matriz que contiene las contribuciones del término de flujo en y
S = Matriz que contiene la contribución del término de acumulación
ax b

c a b

x




c ax b


c ax b




c ax b


c
a
b

x

H =

c ax b


c ax b




c ax b



c ax b



c
a
b
x


c ax 

e
ay



ay
e




ay
e


f
a
e
y




f
ay
e


f
ay
e


V =

f
ay
e


f
ay
e



f
ay
e



f
ay



f
a
y



f
ay 

aac

 a

ac




aac


aac




aac


aac


S =

aac


aac




aac



aac



a
ac


aac

29
7.2.7 Método ADIP ...
El sistema matricial ------ puede rearreglarse como:
(H + V +
S S
+ )u = d
2 2
y se suma y resta la constante r (parámetro de iteración) en la
diagonal principal (o sea la matriz rI, donde I es la matriz identidad):
(H + V +
S S
+ + rI − rI )u = d
2 2
El algoritmo iterativo del ADIP consiste de resolver las incógnitas de
la iteración m+1 en dos barridos. En el primer barrido, en x, se obtiene
una solución intermedia, u* , rearreglando ---- como sigue:
(V +
S
S
+ r ( m +1) I )u *( m +1) = d − ( H − + r ( m+1) I )u ( m )
2
2
7.2.7 Método ADIP ...
En el segundo barrido, en y, se obtiene la solución de la iteración m+1 :
(H +
S
S
+ r ( m+1) I )u ( m+1) = d − (V − + r ( m +1) I )u *( m )
2
2
Al final de cada iteración se verifica la convergencia, esto es, se habrá
alcanzado la solución solo si para todo i,j se cumple que:
uij( m +1) − uij( m ) ≤ ε
Nótese que la ecuación matricial ---- que representa el primer
barrido se puede escribir equivalentemente como:
30
7.2.7 Método ADIP ...
1
a ac ,ij + r ( m +1) )u i*,, (j m +1) + bij u i*,+(1m, j+1)
2
1
= d ij − f ij u i(,mj−) 1 − ( a y ,ij + a ac ,ij − r ( m +1) )u ij( m ) − eij u i(,mj+) 1
2
c ij u i*,−(1m, j+1) + ( a x ,ij +
i = 1,2,..., I
j = 1,2,..., J
Al escribir esta ecuación en cada j y todas las i’es ( i=1,2,...I) se
genera un subsistema de I ecuaciones con I incógnitas, similar al
que se resulta de problemas de flujo 1D:
cij ui*,−(1m, j+1) + a (Xm,ij+1)ui*,,(j m +1) + bij ui*,+(1m, j+1) = d ij*,( m )
1=1 2
i = 1,2,..., I
j dada
I
j=1
2
Primer Barrido:
Solución
Intermedia u*i,j
J
7.2.7 Método ADIP ...
Similarmente, la ecuación ---- del segundo
barrido se escribe como:
1
f ij ui(,mj−+11) + (a y ,ij + aac ,ij + r ( m +1) )ui(,mj +1) + eij ui(,mj++11)
i = 1,2,..., I
2
j = 1,2,..., J
1
= d ij − cij ui*,−(1m, j) − (a y ,ij + aac ,ij − r ( m +1) )uij*,( m ) − bij ui(+m1), j
2
Vemos de nuevo que esta ecuación escrita en cada i, para toda j
( j=1,2,...J) genera subsistemas de J ecuaciones con J incógnitas
f ij ui(,mj−+11) + aY( m,ij+1)ui(,mj +1) + eij ui(,mj++11) = d ij**,( m )
i=12
j=1
2
J
I
j = 1,2,..., J
i dada
Segundo Barrido:
Solución ui,j(m+1)
31
7.2.7 Método ADIP ...
Los parámetros de iteración se calculan mediante una progresión
geométrica:
r ( m +1) = ω r ( m )
r
ω =  max
 rmin
m=1,2,...,M-1
1
 M −1


Bjordammen y Coats, (1969) sugieren calcular rmax y rmin como:
rmax = 1
rmin



= min 
i, j
 2 
 2 I 1 +


π
2
π
,
 ∆ x  k y 
2J


 ∆ y  k x  i , j
2
2
2
2


 1 +  ∆ y  k x 

 ∆ x  k y  i , j








7.2.7 Método ADIP ...
La aplicación de estos parámetros durante el proceso iterativo de
solución es cíclica. Esto es, si se requiere un número iteraciones
mayor que M, los parámetros de iteración se repiten nuevamente,
r(1), r(2), ...., hasta alcanzar la convergencia.
El número de parámetros de iteración, M, se determina generalmente
por ensaye y error: Típicamente M = 6
32
7.2.8 Método SIP (Procedimiento
Fuertemente Implícito)
Stone, H.L.:”Iterative Solution of Implicit Approximations of Multidimensional
Partial Differential Equations,” SIAM J. Numerical Analysis (1968) 5, 530-58.
Fue el primer método de factorización aproximada empleado en la
SNY. La solución se obtiene mediante un proceso de eliminación
que trabaja sobre una versión modificada de la matriz original.
Sea nuevamente el problema a resolver el siguiente:
Au = d
Se busca reemplazar A por A*, siendo esta última tal que pueda
factorizarse mas fácilmente en el producto de dos matrices, LU,
triangular inferior y triangular superior, respectivamente.
7.2.8 Método SIP ...
En problemas bidimensionales, L y U se condicionan a tener sólo
tres elementos diferentes de cero en cada renglón. Esto se traduce
en menos trabajo computacional para resolver el sistema por
eliminación.
La definición del algoritmo iterativo parte de sumar y restar A*u al
sistema original:
Au = A*u − A*u + d
y se rearregla iterativamente como:
A*u ( m+1) − A*u ( m) = Au(m) − d
o bien,
A*δu ( m+1) = R( m)
33
7.2.8 Método SIP ...
donde:
δu (m+1) = u ( m+1) − u ( m)
y,
R( m) = Au( m) − d
pero,
A* = LU
entonces,
LUδu ( m+1) = R( m)
7.2.8 Método SIP ...
Si hacemos:
Uδu ( m+1) = v( m+1)
tenemos que podemos resolver el vector v(m+1) hacia adelante,
Lv( m+1) = R( m)
Una vez resuelto v(m+1) la solución de δu(m+1) se obtiene mediante
substitución hacia atrás,
Se procede luego a verificar la convergencia, y se dará por concluido
el proceso iterativo cuando de solución cuando
uij( m +1) − uij( m ) ≤ ε
34
7.2.8 Método SIP ...
Se derivará el algoritmo del SIP mediante un problema bidimensional.
Considérese nuevamente el sistema problema:
f ij ui , j −1 + cij ui −1, j + aij ui , j
i = 1,2,..., I
+ bij ui +1, j + eij ui , j +1 = d ij
j = 1,2,..., J
i=1
2
3
4
j=1
1
2
3
4
2
5
6
7
8
3
9
10
11
12
7.2.8 Método SIP ...
Se tiene entonces, siguiendo el ordenamiento indicado:
a1,1
c
 2,1
0

0
 f1,2

0
0

0
0

0

0
 0
b1,1
a2,1
c3,1
0
0
f2,2
0
0
b2,1
a3,1
c4,1
0
0
f3,2
0
0
b3,1
a4,1
0
0
0
0
0
0
0
0
0 f4,2
0 0
0 0
0 0
0 0
e1,1
0
0
0
a1,2
c2,2
0
0
e2,1
0
0
b1,2
a2,2
c3,2
0 0
f1,3 0
0 f2,3
0 0
0 0
0  u1,1  d1,1 
0  u2,1 d2,1
0  u3,1 d3,1
   
0  u4,1 d4,1
0  u1,2  d1,2 
   
0  u2,2 d2,2
=
0  u3,2 d3,2
   
c4,2 a4,2 0 0 0 e4,2  u4,2 d4,2
0 0 a1,3 b1,3 0 0  u1,3  d1,3 
   
0 0 c2,3 a2,3 b2,3 0  u2,3 d2,3
   
f3,3 0 0 c3,3 a3,3 b3,3  u3,3 d3,3
0 f4,3 0 0 c4,3 a4,3 u4,3 d4,3
0
0
e3,1
0
0
b2,2
a3,2
0 0 0 0
0 0 0 0
0 0 0 0
e4,1 0 0 0
0 e1,2 0 0
0 0 e2,2 0
b3,2 0 0 e3,2
35
7.2.8 Método SIP ...
Si definimos L como:
 A1,1 0 0 0 0 0 0 0 0 0 0 0 
C A 0 0 0 0 0 0 0 0 0 0 
 2,1 2,1

 0 C3,1 A3,1 0 0 0 0 0 0 0 0 0 


 0 0 C4,1 A4,1 0 0 0 0 0 0 0 0 
F1,2 0 0 0 A1,2 0 0 0 0 0 0 0 


 0 F2,2 0 0 C2,2 A2,2 0 0 0 0 0 0 
L= 
0 0 F3,2 0 0 C3,2 A3,2 0 0 0 0 0 


 0 0 0 F4,2 0 0 C4,2 A4,2 0 0 0 0 
0 0 0 0 F 0 0 0 A 0 0 0
1,3
1,3


 0 0 0 0 0 F2,3 0 0 C2,3 A2,3 0 0 


 0 0 0 0 0 0 F3,3 0 0 C3,3 A3,3 0 
 0 0 0 0 0 0 0 F4,3 0 0 C4,3 A4,3
7.2.8 Método SIP ...
y U como:
 |1 B1,1 0 0 E1,1 0 0 0 0 0 0 0 
0 1 B 0 0 E 0 0 0 0 0 0
2,1
2,1


 0 0 1 B3,1 0 0 E3,1 0 0 0 0 0 


 0 0 0 1 0 0 0 E4,1 0 0 0 0 
 0 0 0 0 1 B1,2 0 0 E1,2 0 0 0 


0 0 0 0 0 1 B2,2 0 0 E2,2 0 0 

U=
0 0 0 0 0 0 1 B3,2 0 0 E3,2 0 


 0 0 0 0 0 0 0 1 0 0 0 E4,2
0 0 0 0 0 0 0 0 1 B 0 0
1,3


 0 0 0 0 0 0 0 0 0 1 B2,3 0 


 0 0 0 0 0 0 0 0 0 0 1 B3,3
 0 0 0 0 0 0 0 0 0 0 0 1 
36
7.2.8 Método SIP ...
Entonces tenemos:
a1*,1
*
c2,1
0

0
f*
 1,2
0
A* = LU = 
0

0

0
0

0
0

b1*,1 0 0 e1*,1 0 0 0 0
a2*,1 b2*,1 0 g2*,1 e2*,1 0 0 0
c3*,1 a3*,1 b3*,1 0 g3*,1 e3*,1 0 0
0 c4*,1 a4*,1 0 0 g4*,1 e4*,1 0
h1*,2 0 0 a1*,2 b1*,2 0 0 e1*,2
f2*,2 h2*,2 0 c2*,2
0 f3*,2 h3*,2 0
0 0 f4*,2 0
0 0 0 f1*,3
0 0 0 0
0 0 0 0
0 0 0 0
a2*,2
c3*,2
0
h1*,3
f2*,3
0
0
b2*,2
a3*,2
c4*,2
0
h2*,3
f3*,3
0
0 g2*,2
b3*,2 0
a4*,2 0
0 a1*,3
0 c2*,3
h3*,3 0
f4*,3 0
0

0
0

0
0

e2*,2 0 0 
g3*,2 e3*,2 0 

0 g4*,2 e4*,2 

b1*,3 0

a2*,3 b2*,3 0 

c3*,3 a3*,3 b3*,3 
0 c4*,3 a4*,3 
0
0
0
0
0
0
0
0
0
0
7.2.8 Método SIP ...
donde:
f i *,j = Fi , j
hi*, j = Fi , j Bi , j −1
ci*, j = Ci , j
ai*, j = Fi , j Ei , j −1 + Ci , j Bi −1, j + Ai , j
bi*, j = Ai , j Bi , j
g i*, j = Ci , j Ei −1, j
ei*, j = Ai , j Ei , j
37
7.2.8 Método SIP ...
Vemos entonces que se tiene ahora lo siguiente:
f i *,j ui , j −1 + hi*, j ui +1, j −1 + ci*, j ui −1, j + ai*, j ui , j
+ bi*, j ui +1, j + g i*, j ui −1, j +1 + ei*, j ui , j +1 = d ij
i = 1,2,..., I
j = 1,2,..., J
Donde aparecen dos incógnitas adicionales en los nodos i-1.j-1
e i+1,j+1:
i-1,j-1 i,j-1
i-1,j
i,j
i+1,j
i,j+1 i+1,j+1
7.2.8 Método SIP ...
Ahora bien, si modificamos ligeramente el sistema original de
ecuaciones como sigue:
f i , j ui , j −1 + hi , j [ui +1, j −1 − α (ui +1, j + ui , j −1 − ui , j )] + ci , j ui −1, j + ai , j ui , j
+ bi , j ui +1, j + g i , j [ui −1, j +1 − α (ui , j +1 + ui −1, j − ui , j )] + ei , j ui , j +1 = d ij
Nótese que
ui +1, j −1 ≈ ui +1, j + ui , j −1 − ui , j
y
ui −1, j +1 ≈ ui , j +1 + ui −1, j − ui , j
Aproximaciones que se obtienen como sigue:
38
7.2.8 Método SIP ...
ui −1, j +1 = ui , j +1 − ∆xi
ui , j = ui −1, j + ∆xi
∂u
+ O(∆x 2 )
∂x i −1, j
ui +1, j −1 = ui +1, j − ∆y j
ui , j = ui , j −1 + ∆y j
∂u
+ O(∆x 2 )
∂x i , j +1
∂u
+ O(∆y 2 )
∂y i +1, j
∂u
+ O(∆y 2 )
∂y i , j −1
restando, y considerando
∂u
∂u
= ∆xi
que ∆xi
∂x i , j +1
∂x i −1, j
se obtiene la aproximación
para ui-1,j+1
restando, y considerando
∂u
∂u
= ∆y j
que ∆y j
∂y i +1, j
∂y i , j −1
se obtiene la aproximación
para ui+1,j-1
7.2.8 Método SIP ...
La ecuación modificada se escribe entonces como:
( f i, j − αhi , j )ui, j −1 + hi , j ui +1, j −1 + (ci , j − αgi , j )ui −1, j
+ (ai , j + αhi, j + αgi , j )ui , j + (bi , j − αhi , j )ui +1, j
+ gi, j ui −1, j +1 + (ei , j − αgi , j )ui, j +1 = dij
Comparando esta ecuación con la obtenida previamente del
producto A*=LU encontramos las siguientes equivalencias:
39
7.2.8 Método SIP ...
f i *,j = f i , j − αhi , j
hi*, j = hi , j
ci*, j = ci , j − αg i , j
ai*, j = ai , j + αhi , j + αg i , j
bi*, j = bi , j − αhi , j
g i*, j = g i , j
ei*, j = ei , j − αg i , j
7.2.8 Método SIP ...
y de acuerdo a la definición de
elementos de L y U, tenemos:
f*, h*, c*..., en términos de los
f i , j − αhi , j = Fi , j
hi , j = Fi , j Bi , j −1
ci , j − αg i , j = Ci , j
ai , j + αhi , j + αg i , j = Fi , j Ei , j −1 + Ci , j Bi −1, j + Ai , j
bi , j − αhi , j = Ai , j Bi , j
Sistema de 7
ecuaciones
con 7
incógnitas:
G,C,A,B,F,h,e
g i , j = Ci , j Ei −1, j
ei , j − αg i , j = Ai , j Ei , j
40
7.2.8 Método SIP ...
Resolviendo se obtiene que:
Sistema de 7
ecuaciones con 7
incógnitas:
f i , j − αhi , j = Fi , j
hi , j = Fi , j Bi , j −1
G,C,A,B,F,h,e
ci , j − αg i , j = Ci , j
ai , j + αhi , j + αg i , j = Fi , j Ei , j −1 + Ci , j Bi −1, j + Ai , j
bi , j − αhi , j = Ai , j Bi , j
g i , j = Ci , j Ei −1, j
Si se introduce hij y
gij en el resto, se
reduce a 5
ecuaciones con 5
incógnitas:
ei , j − αg i , j = Ai , j Ei , j
G, C, A, B, F
7.2.8 Método SIP ...
Resolviendo se obtiene:
Fi , j =
Ci , j =
fi, j
1 + αBi , j −1
ci , j
1 + αEi −1, j
Ai , j = ai , j + Fi , j (αBi , j −1 − Ei , j −1 ) + Ci , j (αEi −1, j − Bi −1, j )
Bi , j =
Ei , j =
bi , j − αFi , j Bi , j −1
Ai , j
ei , j − αCi , j Ei −1, j
Ai , j
41
7.2.8 Método SIP ...
Hemos entonces encontrado la manera de calcular los elementos de
las matrices L y U en términos de los elementos de la matriz original.
Regresando entonces a,
Lv( m+1) = R( m)
vemos que se escribe como:
Fi, j vi(,mj−+11) + Ci , j vi(−m1+, j1) + Ai, j vi(,mj+1) = Ri(,mj)
y se resuelve por substitución hacia adelante:
7.2.8 Método SIP ...
( m+1)
Una vez resuelto vi , j
, resolvemos mediante substitución hacia
atrás las incógnitas de la iteración (m+1)
Uδu ( m+1) = v( m+1)
lo que es igual a:
δui(,mj+1) + Bi , jδui(+m1+, j1) + Ei , jδui(,mj++11) = vi(,mj)
Entonces
δui(,mj+1) = vi(,mj) − Bi , jδui(+m1+, j1) − Ei , jδui(,mj++11)
42
7.2.8 Método SIP ...
Stone recomienda usar una secuencia de parámetros de iteración, de
manera cíclica como en el ADIP. Los parámetros se espacían
geométricamente entre 0 y αmax donde,




2
2


π
π

(1 − α max ) = min 
,
2
2
i, j


 2   ∆ x  k y 

k
y
∆


2 J 2 1 + 

 x  
 2 I  1 + 

∆y  k x 
  ∆ x  k y  i , j 

 
i, j
y los parámetros se calculan como:
(1 − α m ) = (1 − α max )
m
M −1
m=0,1,2,..., M-1
M es el No. de parámetros por ciclo: Stone recomienda M = 4 y usar
cada parámetro dos veces en cada ciclo
7.3 Solución de Sistemas de Ecuaciones
estructurados en Bloques.
Los métodos directos e iterativos descritos previamente se extienden en
forma natural a la solución de sistemas estructurados en bloques.
La diferencia estriba en que en lugar de operar con escalares, como hasta
ahora se ha mostrado, debe hacerse operaciones matriciales.
El orden de las operaciones es entonces importante en este caso.
Se toma como ejemplo la extensión del algoritmo de Thomas a la solución
de sistemas tridiagonales en bloques, como los generados en la aplicación
del método de Newton a la linealización de las ecuaciones de flujo
multifásico en diferencias. Se puede representar el sistema como:
a1u1 + b1u2 = d1
ciui-1 + aiui + biui+1 = di ;
cIuI-1 + aIuI = dI
i=2,3,...,I-1
(7.25)
43
7.3 Solución de Sistemas de Ecuaciones estructurados
en Bloques.
Au = d
o bien:
…(7.26)
donde,
 a1
c
 2








A=
b1
a2
c3
b2
a3 b3
.
.
.
así como uT = (u1,u2,...,uI) y
.
.
.
.
.
cI








.
aI 
dT = (d1,d2,...,dI).
Los elementos ai, bi y ci son para el caso de flujo trifásico de fluidos tipo
beta, aceite, gas y agua, submatrices de (3x3). Los elementos ui y di
son entonces subvectores de orden 3.
En forma similar con el procedimiento establecido anteriormente, la solución
del sistema tridiagonal en bloque consiste en descomponer la matriz A en el
producto WQ. Por lo que se establece el sistema g=Qu, como paso intermedio
de la solución. En este caso, las matrices W y Q se definen como sigue:
 w1

w4
w7

  c1
 c4

 c7




W =














w3 
w5 w6 

w8 w9 1
c2 c3 
c5 c6 

c8 c9  2
w2
 w1
w
 4
w7
c1
c
 4
c7
w3 
w5 w6 

w8 w9  2
c2 c3 
c5 c6 

c8 c9 3
w2
 w1 w2 w3 
w w w 
5
6
 4
w7 w8 w9  3
c1 c2 c3 
c c c 
 4 5 6
c7 c8 c9  I
 w1 w2
w w
5
 4
w7 w8























w3  

w6  

w9  I 
44
7.3 Solución de Sistemas de Ecuaciones
estructurados en Bloques.
y,
Q=
I









q1
I
q2
I
q3
.
.
.
.
I








q I −1 
I 
donde I es la matriz identidad de orden (3x3),
1 0 0
I =  0 1 0


0 0 1
Las submatrices wi, qi y el subvector gi se obtienen como:
w1 = a1
q1 = w1−1b1
qi = wi−1bi ;
i = 2,3,...., I
wi = ai − ci qi −1 ;
i = 2,3,..., I
…(7.27)
7.3 Solución de Sistemas de Ecuaciones
estructurados en Bloques.
y,
g1 = w1−1d 1
g i = wi−1 (d i − ci g i −1 );
i = 2,3,..., I
(7.28)
La solución de u se obtiene en un barrido hacia atrás como sigue:
uI = g I
u i = g i − q i u i +1 ;
i = I − 1, I − 2 , ...., 1
(7.29)
45
7.4 Métodos Directos Versus Métodos
Iterativos.
En los métodos directos convencionales, eliminación Gaussiana o
descomposición LU por ejemplo, el requerimiento de memoria y el
tiempo de cómputo aumentan drásticamente en la medida que
aumenta el número de ecuaciones.
Por esta razón, los métodos directos son generalmente preferidos
cuando el número de ecuaciones no es muy grande. ¿Qué es grande y
qué es pequeño?: es una pregunta difícil de contestar.
Con el desarrollo de las denominadas supercomputadoras el
calificativo puede ser demasiado subjetivo. Lo que antes era un
sistema grande, puede ahora considerársele un sistema pequeño.
7.4 Métodos Directos Versus Métodos Iterativos.
Es también indudable que con el desarrollo de los métodos de matrices
dispersas y de técnicas especiales de ordenamiento, los métodos
directos tienen ahora un mayor potencial de aplicación: el tamaño de
los sistemas de ecuaciones que puede resolverse eficientemente
mediante estos métodos es cada vez mayor, y lo seguirá siendo en la
medida en que los sistemas de cómputo sean más poderosos.
Una desventaja de los métodos iterativos es la falta de metodologías
para el cálculo de los parámetros de iteración óptimos. Los métodos
existentes para el cálculo de estos parámetros han sido desarrollados
bajo una serie de simplificaciones. En algunas situaciones los
parámetros teóricos no solo no resuelven eficientemente el problema,
sino que provocan problemas de convergencia en el método.
46
SOLUCIÓN DE SISTEMAS LINEALES
DE ECUACIONES
Básicamente Existen dos métodos de solución
1. Métodos Directos: Requieren de un número
fijo de operaciones para resolver un sistema
dado
2. Métodos Iterativos: Consiste en aplicar
algoritmos cíclicos, en espera de que el paso
de las iteraciones se obtenga una mejor
aproximación de la solución. El número de
operaciones por ciclo es predecible, sin
embargo, el número de iteraciones es
impredecible.
ORDENAMIENTO D4
Price H. S ξ coats k. h “Direct methods on reservoir simulation” trans SPE of AIME, 257, pp 295 - 308
IDEA BÁSICA: ordenar las ecuaciones por líneas/planos diagonales
alternados de forma tal que se reduzca el trabajo requerido durante la
solución mediante eliminación gaussiana.
i=1
I=5
J=4
K=1
J=1
1
2
3
3
12 4
4
8
15 6
7
7
19 8
18 8
10 9
99
20 10
11 4
3
3
2
14 6
6
4
13 6
5
17 8
5
7
5
16 6
5
2
5
4
7
7
No. Planos
NP. = (I+J+K) – 2
NP = 8 planos
Suponer que:
I>J>K
47
ORDENAMIENTO D4
•
•
Cada plano se identifica con el número m
Los nodos asociados al plano m son tales que
i + j + k =m
Y
m = 3, 4, 5, …M
Donde
M=I+J+K
•
Si M es par el orden de los planos es
3, 5, 7, …, M -1 , 4, 6, 8, … M
•
Si M es impar
3, 5, 7, …, M , 4, 6, 8, …, M -1
ORDENAMIENTO D4
• Los nodos en el plano deben numerarse en orden
decreciente de k y para cada k cte., en orden
decreciente de j y creciente de i.
En el ejemplo M =10 (8 planos) el orden de los planos es:
3, 5, 7, 9, 4, 6, 8, 10
48
PLANO
INDICES DEL NODO
# DEL NODO (ORD. 4)
i
j
k
3
1
1
1
1
5
1
3
1
2
5
2
2
1
3
5
3
1
1
4
7
2
4
1
5
7
3
3
1
6
7
4
2
1
7
7
5
1
1
8
9
4
4
1
9
9
5
3
1
10
4
1
2
1
11
4
2
1
1
12
6
1
4
1
13
6
2
3
1
14
6
3
2
1
15
6
4
1
1
16
8
3
4
1
17
8
4
3
1
18
8
5
2
1
19
10
5
4
1
20
ORDENAMIENTO D4
Jk+4
Jk+1
ELIMINACIÓN DE ALL
AUL
AUR
XU
bU
AUL
AUR
XU
bU
ALL
ALR
XL
bL
0
ALR*
XL
b L*
49
ORDENAMIENTO D4
Donde ALR* es una matriz bandada con ancho total de banda
2 jk+1
(i>j>k)
BOAST
(DOE Franehi)
Subrutina D4INI
Sub. D4
calcula índices de ordenamiento y llena
la matriz de coef. Y el vector de términos
independientes del sistema de ecs. a
resolver
eliminación Gaussiana de ALL
Sub. Band
resuelve
ALR* XL = bL*
en D4 se resuelve XU por substitución hacia atrás
i=
1
2
1,1
J=1
1,2
2
1,3
3
1,4
4
1,5
5
1
2,2
6
2,3
11
2,4
16
2,5
21
i=
4
7
12
17
3,3
3,4
3,5
2,2
4
9
3
4,2
8
13
18
2,3
2,4
4,3
4,4
4,5
23
3
3,2
5
10
13
17
4
5,2
9
5,3
14
5,4
19
5,5
NX = 5
5
NY = 5
10
ORDENAMIENTO
NORMAL
15
20
25
4
5
4,1
2
4,2
6
3,4
3,5
5,1
24
3,1
1
5
4,1
2
2,5
5
3,2
2,1
1,3
3
2
1
1,2
4
3,1
22
J=1
2
3
2,1
4,3
4,4
14
18
4,5
3
7
11
15
ORDENAMIENTO
NORMAL
5,2
5,3
5,4
8
12
Celda activa
Celda inactiva
16
19
50
i=
J=1
2
1
3
1,4
4
1,5
3
2,1
1
1,2
1,3
5
2
1,1
15
4
19
9
2,2
2,3
2,4
2,5
3,1
14
3
18
8
23
3,2
3,3
3,4
3,5
4
5
4,1
2
17
7
22
12
4,2
4,3
4,4
4,5
5,1
16
6
21
11
25
5
5,2
5,3
5,4
5,5
ORDENAMIENTO
20
D4
10
24
13
Esquema de ordenamiento D4 y un
algoritmo de Banda.
Este ordenamiento y el algoritmo de banda constituyen un
método directo de solución para resolver un sistema de
ecuaciones lineales de la forma:
Pδ X p = − rp
Donde:
P es la matriz de coeficientes
δXp es el vector de incógnitas
rp
es el vector de términos conocidos
51
De acuerdo con este ordenamiento, este sistema de
ecuaciones se puede particionar como:
 P1

P3
 r p1 
P 2   δ X p1 
= − 


P 4  δ Xp 2 
 rp 2 
Donde P1 → y → P 4 son submatrices diagonales, y
P 2 → y → P3 son submatrices bandadas
Aplicando el proceso de eliminación hacia adelante en la
mitad inferior de la matriz P, es posible reducir la
submatriz P3 a una matriz nula.
Esto es:
 P1 P 2   δXp1 
 rp1 
=
−




 *
*
 rp 2 
 O P 4  δXp 2 
En el proceso de eliminación, la submatriz diagonal P4 se transforma en
una submatriz bandada, P4* y el vector rp2 en rp2*, ahora es posible resolver
[ ]
P4 * δ X p 2 = − r p 2* ⇒ δ X p 2 = − P4 *
−1
rp 2 *
El cual se resuelve mediante un algoritmo de banda para obtener el vector
δXp 2 y después se calcula el vector δXp1 mediante una sustitución
regresiva, ya que la submatriz P1 es una submatriz diagonal. Esto último
se expresa como:
P1 δ X p1 + P2 δ X p 2 = − r p1
52
Se puede expresar por lo tanto como:
δXp1 = −[P1 ] [rp1 + P2 δXp 2 ]
−1
NSPIV, ELIMINACIÓN GAUSSIANA DE MATRICES
DISPERSAS CON PIVOTEO PARCIAL
Este método permite resolver un sistema lineal de ecuaciones en
forma directa, tomando ventaja de la esparcidad de la matriz de
coeficientes para eliminar operaciones con elementos iguales a cero.
El procedimiento de solución es el siguiente:
•
Considérese el sistema lineal de ecuaciones expresado de la forma:
Ax = b
•
La eliminación Gaussiana se efectúa con intercambios de columnas
en la matriz A para obtener una factorización de la forma:
AQ = LU
53
• Donde:
Es una matriz triangular inferior
es una matriz triangular superior
U
Q
es una matriz de permutación
Por lo que se puede establecer el siguiente sistema:
L
T
LU Q x = b
Este sistema se puede descomponer en los siguientes
subsistemas:
Ly = b
y
T
UQ x = y
Se resuelve primero el subsistema L y = b mediante
una sustitución hacia delante para obtener el vector y
y posteriormente se calcula el vector x , del
T
subsistema U Q x = y mediante una sustitución hacia
atrás.
Este método requiere de 3 vectores para almacenar los
elementos diferentes de cero de la matriz
54
Descargar