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