Está en la página 1de 64

Solución del problema de convección utilizando

volumen finito y algoritmos paralelos


Luis Miguel de la Cruz Salas
DGSCA–UNAM

2 de junio de 2009

Índice
1. Convección 2
1.1. Ecuación general de transporte . . . . . . . . . . . . . . . . . . . . . . . 2
1.2. Convección natural . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3. Ecuaciones adimensionales . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4. Convección natural turbulenta . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5. Función de estructura selectiva . . . . . . . . . . . . . . . . . . . . . . . 8

2. Método numérico 9
2.1. Método de residuos pesados . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2. Método de volumen finito . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3. Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4. Difusión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4.1. Difusión estacionaria en 1D . . . . . . . . . . . . . . . . . . . . . 12
2.4.2. Difusión estacionaria en 2D y 3D . . . . . . . . . . . . . . . . . . 16
2.5. Linealización del término fuente . . . . . . . . . . . . . . . . . . . . . . . 18
2.6. Condiciones de frontera . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.7. Consideraciones geométricas . . . . . . . . . . . . . . . . . . . . . . . . . 21

3. MVF : Advección–Difusión 22
3.1. Aproximación de los términos difusivos . . . . . . . . . . . . . . . . . . . 24
3.2. Aproximación de los términos advectivos . . . . . . . . . . . . . . . . . . 25
3.2.1. Upwind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2.2. Diferencias centrales (CDS) . . . . . . . . . . . . . . . . . . . . . 26
3.2.3. QUICK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
ÍNDICE 1

4. Acoplamiento presión-velocidad 28
4.1. Mallas desplazadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.2. Ecuación de corrección a la presión . . . . . . . . . . . . . . . . . . . . . 30
4.3. SIMPLEC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

5. Solución de los sistemas lineales 32


5.1. TDMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.2. Aplicación del TDMA en 2 y 3 dimensiones . . . . . . . . . . . . . . . . 34

6. Problemas no estacionarios 36
6.1. Esquema Explı́cito: Forward Euler . . . . . . . . . . . . . . . . . . . . . . 37
6.2. Esquema Implı́cito: Backward Euler . . . . . . . . . . . . . . . . . . . . . 37
6.3. Esquema Crank-Nicolson: Centred Differencing . . . . . . . . . . . . . . 38

7. Paradigmas de programación 39
7.1. Programación Orientada a Objetos . . . . . . . . . . . . . . . . . . . . . 39
7.2. Programación Genérica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

8. Programación paralela 40
8.1. Organización de la memoria . . . . . . . . . . . . . . . . . . . . . . . . . 41
8.2. Modelos de programación . . . . . . . . . . . . . . . . . . . . . . . . . . 42
8.3. Comunicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
8.4. Descomposición del problema . . . . . . . . . . . . . . . . . . . . . . . . 43
8.5. Métricas y otros factores . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
8.6. Balance de carga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
8.7. Métricas de rendimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
8.8. Sobreposición de la comunicación y los cálculos . . . . . . . . . . . . . . 45
8.9. Ley de Amdahl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
8.10. Escalabilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

9. Descomposición de dominio y paralelismo 46


9.1. Algoritmo alternante de Schwarz . . . . . . . . . . . . . . . . . . . . . . 47
9.2. Partición del dominio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

10.Casos de estudio 53
10.1. Convección forzada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
10.2. Convección Natural: régimen laminar . . . . . . . . . . . . . . . . . . . . 54
10.2.1. Benchmark: de Vahl Davis . . . . . . . . . . . . . . . . . . . . . . 54
10.3. Convección Natural: régimen turbulento . . . . . . . . . . . . . . . . . . 55
10.4. Convección forzada en paralelo . . . . . . . . . . . . . . . . . . . . . . . 59
2 ÍNDICE

1. Convección
Considérese los siguientes eventos: el movimiento imperceptible de las placas conti-
nentales de la corteza terrestre, las violentas tormentas magnéticas en la atmósfera solar,
las sorprendentes y destructivas fuerzas que provoca un huracán tropical, el movimiento
del aire en un horno de cocina, el crecimiento de cristales semiconductores usados en la
construcción de microchips. Todos estos fenómenos involucran el movimiento de fluidos
(lı́quidos, gases, plasmas) a escalas muy diferentes. Este movimiento se conoce como
convección: movimiento de partı́culas individuales de fluidos el cual ocurre a través de
procesos de difusión y advección.
Dado que el fenómeno de convección aparece en muchos procesos naturales e indus-
triales, no es sorprendente que en las últimas décadas se haya puesto mucha atención
en entender el movimiento de fluidos y el transporte de cantidades fı́sicas generado o
alterado por la convección.
La convección se clasifica en natural (libre) y forzada. En la primera, el movimiento
del fluido se debe a fuerzas naturales, como por ejemplo el efecto de flotación, el cual se
manifiesta cuando existe una diferencia de temperaturas o densidades en presencia de la
fuerza de gravedad. En la segunda, el fluido se obliga a fluir mediante el uso de fuerzas
externas como un ventilador o el movimiento de una de las paredes que contenga al
fluido. Es posible que exista convección natural y forzada en algunos procesos, en este
caso se le suele llamar convección mixta.
El modelo matemático que describe la convección se basa en las ecuaciones de balance
de masa, cantidad de movimiento y energı́a, ası́ como en las ecuaciones de estado del
fluido. La obtención de estas ecuaciones se puede revisar por ejemplo en [7, 6].
En la sección que sigue, se describe el modelo matemático desde un punto de vista
general y posteriormente se reduce a casos particulares.

1.1. Ecuación general de transporte


Las ecuaciones de la mecánica de fluidos representan leyes de conservación o balance
de cantidades fı́sicas como la masa, cantidad de movimiento (momentum) y energı́a. Para
obtener las ecuaciones se considera el fluido continuo y la conservación de una variable
de flujo general φ (que puede ser por ejemplo la temperatura o una componente de la
velocidad), dentro de un volumen de control puede ser representada como un balance
entre varios procesos que tienden a incrementar o disminuir dicha variable, [3, 6]. En
otras palabras se tiene que:
       
Razón de cambio de Flujo neto de φ Flujo neto de φ Razón neta de
 φ en el volumen de  por advección en  por difusión en   creación de φ 
control con respecto =  el volumen de + el volumen de + en el volumen 
       

al tiempo control control de control


Este balance se puede escribir en forma matemática, para un fluido Newtoniano
[26, 37], como sigue,:
1.2 Convección natural 3

∂(ρφ)  
+ ∇ · ρφu = ∇ · (Γ∇φ) + S, (1)
∂t
donde ρ representa la densidad, u es la velocidad del flujo, Γ es un coeficiente de difusión
y S es el término fuente.
La ecuación (1) se conoce como la ecuación general de transporte para la propiedad
φ. El primer término del lado derecho de esta ecuación es la razón de cambio de φ
con respecto al tiempo, mientras que el segundo término es la componente advectiva
que representa el transporte de φ debido a la velocidad del flujo. En el lado derecho se
tiene el término debido al transporte por difusión y el último término es la contribución
ocasionada por fuentes de φ dentro del campo. La ecuación general de transporte (1) es
usada como punto de partida para desarrollar algunos métodos numéricos, especialmente
el método de volumen finito.
En notación tensorial estas ecuaciones se escriben como sigue:
 
∂(ρφ) ∂   ∂ ∂φ
+ ρuj φ = Γ + S, para j = 1, 2, 3, (2)
∂t ∂xj ∂xj ∂xj
donde φ puede representar a la temperatura (T ), la densidad (ρ) o a alguna compo-
nente de la velocidad ((u1 , u2 , u3 ) ≡ (u, v, w)). El término fuente contiene el gradiente
presiones y términos provenientes de las fuerzas de cuerpo. En esta notación xj repre-
senta coordenadas cartesianas para la posición, y se utiliza la convención de Einstein en
donde ı́ndices repetidos se suman.

1.2. Convección natural


Las ecuaciones que gobiernan este fenómeno son: balance de masa, balance de can-
tidad de movimiento y balance de energı́a. Estas ecuaciones se obtienen tomando en
cuenta la aproximación de Boussinesq [6], es decir la densidad se considera constante
excepto en el término de fuerzas de cuerpo, mientras que las propiedades fı́sicas restantes
del material son consideradas constantes. Por lo tanto, para fluidos newtonianos e in-
compresibles, estas ecuaciones se escriben como sigue:

∂uj
= 0, (3)
∂xj
 
∂ui ∂ui ∂p ∂ 2 ui
ρ0 + uj =− +µ + ρbi , (4)
∂t ∂xj ∂xi ∂xj ∂xj

∂T ∂T ∂2T
+ uj =α , (5)
∂t ∂xj ∂xj ∂xj
donde ρ es la densidad, ρ0 es una densidad de referencia, µ es la viscosidad dinámica y
α es la difusividad térmica. En la ecuación (5) se ha considerado que la energı́a interna
se puede escribir como cV T , con cV el calor especı́fico a volumen constante. También
4 ÍNDICE

∂T
se utiliza la ley de conducción de calor de Fourier, es decir qj = −κ ∂x j
, siendo κ el
coeficiente de conductividad térmica.
Las ecuaciones (3), (4) y (5), se deben complementar con una ecuación de estado
para poder ser resueltas. En general se considera la siguiente relación:

ρ = ρ0 [1 − β(T − T0 )] ,
donde β es el coeficiente de expansión volumétrica y T0 es el valor de la temperatura
cuando ρ = ρ0 . β se define como:
 
1 ∂ρ
β=− .
ρ0 ∂T T =T0
Esta última ecuación describe satisfactoriamente la relación entre la densidad y la
temperatura para un fluido incompresible.

1.3. Ecuaciones adimensionales


Las ecuaciones (3), (4) y (5) generalmente se utilizan en forma adimensional tanto
para su discretización, como para su implementación. En la forma adimensional, apare-
cen parámetros que permiten hacer estudios de flujos en diferentes estados: laminar o
turbulento por ejemplo. Una manera de adimensionalizar las ecuaciones es usando el
siguiente escalamiento:

x′j t′ u′j p′ T ′ − TC 1
xj = , t= 2 , uj = , p= 2
, T = − ,
H H /α α/H ανρ0 /H ∆T 2

donde localmente se han utilizado variables primadas (′) para representar a las variables
con dimensiones. En este escalamiento H es una longitud caracterı́stica, ν la viscosidad
cinemática (ν = µ/ρ0 ) y ∆T = TH − TC representa una diferencia de temperaturas.
Usando el escalamiento anterior tenemos que las ecuaciones, en forma adimensional
se escriben como sigue:

∂uj
= 0, (6)
∂xj

∂ui ∂ui ∂p ∂ 2 ui
+ uj =− + Pr + bi , (7)
∂t ∂xj ∂xi ∂xj ∂xj

∂T ∂T ∂2T
+ uj = , (8)
∂t ∂xj ∂xj ∂xj
donde la ecuación (6) se conoce como la ecuación de continuidad, las ecuaciones (7)
son las ecuaciones de Navier-Stokes y la ecuación (8) es la ecuación de energı́a. bi es
el término fuente que representa a las fuerzas de cuerpo externas que intervienen en el
1.4 Convección natural turbulenta 5

problema, y en este caso sólo se toma en cuenta el efecto de la gravedad apuntando en


la dirección negativa del eje y. Por lo tanto: b1 = 0, b2 = Pr RaT y b3 = 0, donde Pr
y Ra son el número de Prandlt y el número de Rayleigh respectivamente que se definen
como sigue:
ν
Pr = ,
α

gβ∆T L3y
Ra = ,
αν
donde g es la magnitud de la aceleración de la gravedad.

Las ecuaciones (6), (7) y (8) se pueden poner en la forma de la ecuación general (2)
como sigue:

∂ρ ∂  
+ uj ρ = 0, (9)
∂t ∂xj
 
∂ui ∂ ∂p ∂ ∂ui
+ (uj ui ) = − + Pr + Si , (10)
∂t ∂xj ∂xi ∂xj ∂xj
 
∂T ∂ ∂ ∂T
+ (uj T ) = . (11)
∂t ∂xj ∂xj ∂xj
Lo anterior es posible dado que el fluido es incompresible y el número de Prandtl
se considera constante. En la forma antes escrita, es posible hacer una correspondencia
entre las ecuaciones (9),(10) y (11) con la ecuación general de transport (2), como se
muestra en la siguiente tabla.

Ecuación φ Γ Si
Masa ρ = cte. 0 0
∂p
N-S ui Pr − ∂xi + bi
Energı́a T 1 0

Cuadro 1: Correspondencia de las ecuaciones de balance en flujo laminar con la ecuación


general (2). El valor de i varı́a de 1 a 3.

1.4. Convección natural turbulenta


Aunque no existe una definición exacta de turbulencia, se puede decir que un flujo
es turbulento cuando es irregular, consiste de un amplio rango de escalas de movimien-
to, se incrementa la difusividad, es completamente tridimensional, es muy disipativo
y el número de Reynolds es relativamente grande. Una discusión amplia del tema se
6 ÍNDICE

encuentra en [32]. La simulación directa de flujos turbulentos o DNS (Direct Numerical


Simulation), es posible sólo en algunos casos simples, pero en la mayorı́a de las ocasiones
se requieren recursos enormes de cómputo [18]. Algunas técnicas se han desarrollado para
evitar este problema y una de las más conocidas es la Simulación de Vórtices Grandes o
LES (Large-Eddy Simulation). Los detalles de esta técnica se pueden encontrar en libros
de texto como en [11, 37] y en artı́culos de revisión como [33]. Aquı́ sólo describiremos
las propiedades más importantes.
La técnica de LES ayuda a simular flujos turbulentos en mallas gruesas. La base de
esta técnica consiste en la aplicación de un filtro de convolución espacial a las ecuaciones
gobernantes. En este procedimiento se divide la variable turbulenta f (T , ui o p) en
una componente de escalas grandes f¯, y en una componente de escalas pequeñas o de
submalla f ′ . La descomposición y la convolución de f con una función de filtro g sobre
el dominio del flujo Ω se escriben como:

f (xi , t) = f¯(xi , t) + f ′ (xi , t),


con
Z
f¯(xi , t) = g(xi − x′i )f (x′i , t)dx′i .

donde la función del filtro g debe satisfacer la condición de normalización
Z
g(xi − x′i )dx′i = 1.

La aplicación del filtro a las ecuaciones gobernantes del problema de convección
natural, ecuaciones (6),(7) y (8), produce la siguiente descripción del movimiento de las
escalas grandes:
∂ ūj
= 0, (12)
∂xj
∂ ūi ∂ ūi ∂ p̄ ∂ 2 ūi ∂τij
+ ūj =− + Pr + b̄i + , (13)
∂t ∂xj ∂xi ∂xj ∂xj ∂xj
∂ T̄ ∂ T̄ ∂ 2 T̄ ∂hj
+ ūj = + . (14)
∂t ∂xj ∂xj ∂xj ∂xj
los tensores de submalla τij y hj están dados por

τij = ūi ūj − ui uj , (15)


y

hj = ūj T̄ − uj T . (16)
En la LES se requiere un modelo de submalla o SGM (Subgrid Model ) que parametrize
ambos tensores adecuadamente, de tal manera que el flujo de escalas grandes pueda ser
1.4 Convección natural turbulenta 7

calculado con exactitud. Las simulaciones con el modelo deben producir resultados con
un significado fı́sico y con bajo esfuerzo computacional. El SGM más común supone una
viscosidad turbulenta (hipótesis de Boussinesq) para modelar τij :

τij = 2νt S̄ij , (17)


donde
 
1 ∂ ūi ∂ ūj
S̄ij = + , (18)
2 ∂xj ∂xi
es el tensor de deformación del campo filtrado y νt es la viscosidad turbulenta. De igual
manera tenemos que

∂ T̄
hj = κt , (19)
∂xj
donde la razón entre la viscosidad turbulenta νt y la difusividad turbulenta κt está defini-
da a través del número de Prandtl turbulento
νt
Prt =. (20)
αt
Cuando el número de Prandtl turbulento está dado, solamente la viscosidad turbu-
lenta tiene que ser parametrizada en términos de las cantidades resueltas. Aunque el
valor de Prt no está bien establecido [2], frecuentemente se considera que 31 < Prt < 21 ,
una discusión sobre este punto se encuentra en [10].
Aquı́ se considera el SGM propuesto por Métais y Lesieur [21], en donde la viscosidad
turbulenta se define como
−3/2
p
νt = 0.105Ck ∆ F̄2 , (21)
con una función de estructura filtrada definida como
3  2/3
1 X (i) ∆c
F̄2 (~x, ∆c) = F̄ , (22)
6 i=1 2 ∆xi
con
(i)  
F̄2 = k~u(~x) − ~u(~x + ∆xi~ei )k2 + k~u(~x) − ~u(~x − ∆xi~ei )k2 , (23)
donde ~ei es el vector unitario en dirección xi y ∆c = (∆x1 ∆x2 ∆x3 )1/3 .
Sustituyendo (17) y (19) en las ecuaciones filtradas (13) y (14), y recordando que el
fluido es incompresible, obtenemos el siguiente sistema de ecuaciones:
∂ ūi ∂ ∂ p̄ ∂  
+ (ūj ūi ) = − + (Pr + νt ) 2S̄ij + b¯i , (24)
∂t ∂xj ∂xi ∂xj
  
∂ T̄ ∂  ∂ νt ∂ T̄
+ ūj T̄ = 1+ . (25)
∂t ∂xj ∂xj Prt ∂xj
8 ÍNDICE

1.5. Función de estructura selectiva


En algunos casos el modelo de la función de estructura es muy disipativo. Para
reducir esta dificultad, se han desarrollado varias técnicas entre las que se encuentra
el modelo de función de estructura selectiva [21]. El objetivo es eliminar la viscosidad
turbulenta cuando el flujo no es lo suficientemente tridimensional. El criterio que se
utiliza es como sigue:

1. Se mide el ángulo entre la vorticidad en un punto de la malla y el promedio de las


vorticidades en los seis puntos vecinos.

2. Si este ángulo excede 20o entonces se toma en cuenta la viscosidad turbulenta


calculada mediante (21).

3. En otro caso, sólo se toma en cuenta la viscosidad molecular.

El valor de 20o es el más probable de acuerdo a simulaciones de turbulencia isotrópica


a una resolución de malla de 323 y 643 [21].
De la misma manera en que las ecuaciones del caso laminar se escribieron en forma
general, las ecuaciones (12), (24) y (25) tambien están escritas en la forma (2). En este
caso la correspondencia con la ecuación general de transporte (2) es como sigue:

Ecuación φ Γ Si
Masa ρ̄ = cte 0 0
∂ p̄
N-S ūi Pr + νt − ∂xi + b̄i
νt
Energı́a T̄ 1 + Pr t
0

Cuadro 2: Correspondencia de las ecuaciones de balance en flujo turbulento con la


ecuación general. El valor de i varı́a de 1 a 3.
2 Método numérico 9

2. Método numérico
Las ecuaciones presentadas en la sección anterior son bastante complejas y a pesar
de que se conocen desde hace mucho tiempo, no existe hoy en dı́a un método analı́tico
para encontrar sus soluciones. Por esta razón, se han desarrollado muchos métodos
numéricos con los que es posible encontrar soluciones numéricas aproximadas. Mediante
el uso de las arquitecturas sofisticadas de cómputo y en especial de las arquitecturas
multiprocesador, ha sido posible resolver numéricamente las ecuaciones gobernantes
para diferentes tipos de flujos, con excelente exactitud y precisión.

2.1. Método de residuos pesados


Un método muy poderoso para obtener soluciones numéricas de ecuaciones difer-
enciales parciales es conocido como método de residuos pesados. El concepto básico es
simple: considérese una ecuación diferencial representada por

L(φ) = 0
y una solución aproximada φ̄ definida por

φ̄ = a0 + a1 x + a2 x2 + · · · + am xm
La substitución de esta solución aproximada en (26) produce un residuo R definido
como

R = L(φ̄)
Se desea que este residuo sea pequeño en algún sentido. Se propone que
Z
W Rdx = 0 (26)

donde W es un función de peso y la integración se realiza sobre el dominio de interés Ω.


Seleccionando una sucesión de funciones de peso, se pueden generar tantas ecuaciones
como se requiera para evaluar los parámetros de la ecuación (26). Estas ecuaciones
algebraicas que contienen los parámetros como incógnitas son resueltas para obtener
una solución aproximada.
Diferentes versiones del método resultan de la selección de diferentes tipos de fun-
ciones de peso. La función de peso más simple es W = 1. De esta selección, un número
de ecuaciones de residuos pesados se pueden generar dividiendo el dominio de cálculo
en subdominios o volúmenes de control, y definiendo la funcion de peso igual a la
unidad sobre un volumen de control en un tiempo dado y cero en cualquier otro lugar.
Esta variante del método de residuos pesados es conocida como método de volumen de
control o de volumen finito. Esta formulación implica que la integral del residuo sobre
cada volumen de control debe ser cero.
10 ÍNDICE

2.2. Método de volumen finito


Como se mencionó anteriormente, el método de volumen finito (MVF) es una versión
especial del método de residuos pesados. En esta formulación el dominio de cálculo se
divide en un número de volúmenes de control que no se traslapan, de tal manera que
hay un volumen rodeando a cada punto de la malla. Luego, la ecuación diferencial
se integra sobre cada volumen de control. Se usan funciones continuas por tramos, las
cuales expresan la variación de φ entre los puntos de la malla, para evaluar las integrales.
El resultado es un conjunto de ecuaciones discretas que contienen los valores de φ para
un grupo de puntos de la malla.
La integración sobre los volúmenes de control es lo que distingue al FVM de otros
métodos. Las ecuaciones que resultan de la integración expresa el principio de con-
servación para φ en cada volumen de control, de la misma forma en que la ecuación
diferencial expresa esto mismo para un volumen de control infinitesimal. Esta carac-
terı́stica es válida para cualquier número de puntos en la malla y no solo cuando este
es muy grande. Por lo tanto, aún una solución en una malla gruesa exhibirá un balance
exacto (aunque para obtener buena precisión se requiere de un mayor número de puntos
o esquemas de alto orden). Esta clara relación entre el algoritmo numérico y el principio
fı́sico de conservación es una de las mayores atracciones del MVF.
Las etapas que se pueden enumerar en el MVF son las siguientes:

1. Generación de la malla. El dominio de estudio se discretiza en un número


de volúmenes de control no sobrepuestos, de tal manera que existe un volumen
rodeando a cada punto de la malla, como se muestra en la figura 1.

2. Integración. Se realiza una integración de las ecuaciones gobernantes del prob-


lema sobre cada volumen de control del dominio de estudio.

3. Discretización. Se discretiza cada uno de los diferentes términos resultantes de


la integración usando diferentes esquemas numéricos. Esto produce un sistema
algebraico de ecuaciones.

4. Solución. Se utiliza algún algoritmo para resolver el sistema algebraico de ecua-


ciones. Dado que las matrices son en general dispersas, se prefieren algortimos
iterativos.

2.3. Propiedades
Existen tres conceptos matemáticos que son útiles para determinar el éxito de un
algoritmo numérico: convergencia, consistencia y estabilidad. La convergencia es
la propiedad de un método numérico de producir una solución que se aproxima a la
solución exacta conforme la distancia entre los puntos de la malla tiende a cero. Un
esquema numérico consistente produce sistemas de ecuaciones algebraicas equivalentes a
las ecuaciones gobernantes originales conforme el espaciamiento de los nodos de la malla
2.3 Propiedades 11

Volúmenes de
control

Puntos en el interior

Puntos en la frontera
11111
00000
00000
11111
del dominio

00000
11111
00000
11111 11
00
00000
11111 00
11
00
11
Volumen de control

Nodos de
la malla

Figura 1: Dominio de estudio discretizado usando volúmenes de control en 2D.

tiende a cero. La estabilidad está asociada con la amortiguación del error conforme el
método numérico procede. Si el método no es estable, entonces aún errores de redondeo
en los datos iniciales, pueden causar fuertes oscilaciones o divergencia de la solución.
La convergencia es muy difı́cil de establecer teóricamente y en la práctica se utiliza el
teorema de equivalencia de Lax que dice que para problemas lineales una condición nece-
saria y suficiente para obtener convergencia es que el método sea consistente y estable.
Este teorema es limitado dado que las ecuaciones gobernantes de muchos fenómenos son
no lineales.
En el MVF se pueden obtener esquemas numéricos robustos si dicho esquema posee
la propiedad de ser conservativo, es acotado y además transporta adecuadamente las
propiedades.

Conservativo : El MVF garantiza la conservación de las propiedades de un fluido en


cada volumen de control. Los esquemas numéricos que poseen esta caracterı́stica
también aseguran conservación global para todo el dominio. Esta propiedad es
fı́sicamente importante y se obtiene por medio de expresiones consistentes en los
volúmenes de control.

Acotado : Esta propiedad es similar al requerimiento de estabilidad y requiere que


en un problema lineal sin fuentes, la solución debe estar acotada por los valores
máximo y mı́nimo en las fronteras. Esta propiedad puede obtenerse imponiendo
restricciones sobre la magnitud y los signos de los coeficientes de las ecuaciones
algebraicas.

Transporte : En procesos donde hay flujo de fluidos, se tienen en general efectos ad-
vectivos y difusivos. En fenómenos difusivos, tal como en conducción de calor, un
cambio en la temperatura en un punto, afectará la temperatura más o menos de
12 ÍNDICE

igual manera en todas las direcciones alrededor de dicho punto. Un fenómeno ad-
vectivo involucra influencia exclusivamente en la dirección del flujo. Los esquemas
en MVF deben tomar en cuenta la dirección de influencia del flujo en términos de
los efectos difusivos y los convectivos.

Cuando las propiedades antes mencionadas se utilizan en el diseño de todos los es-
quemas del MVF, se obtienen producen buenas aproximaciones a muchos tipos de prob-
lemas. En el MVF es común usar estas propiedades como alternativas a los conceptos
matemáticos más rigurosos de convergencia, consistencia y estabilidad.

2.4. Difusión
La ecuación gobernante para problemas de difusión se deriva de la ecuación general
(1) para la propiedad φ eliminando el término transitorio y el convectivo:

∇ · (Γ∇φ) + S = 0. (27)

2.4.1. Difusión estacionaria en 1D


Supongamos que se desea resolver el problema de conducción de calor en una barra
en el intervalo [a, b], en donde los valores de la temperatura en los extremos están dados.
A partir de la ecuación (27) obtenemos una ecuación para difusión estacionaria en una
dimensión:
 
d dφ
Γ + S = 0. (28)
dx dx
y condiciones de frontera:

φ(a) = Ta , y φ(b) = Tb
El proceso de aproximar una solución numérica del problema anterior usando MVF
es como sigue:

Paso 1. Generación de la malla.


Para aproximar una solución a la ecuación (28) primero se divide el dominio en
un número finito de volúmenes. En la figura 2 se introduce una notación que se
usará en los ejemplos que siguen. Se define P como un nodo general que tiene nodos
vecinos a la derecha E (east) y a la izquierda W (west). Las caras del volumen que
encierra al nodo P se nombran e y w a la derecha e izquierda respectivamente. Las
distancias de P a W y de P a E se denotan como ∆xw y ∆xe respectivamente. La
distancia entre las caras e y w se define como ∆x. Cuando la malla es uniforme,
se cumple que ∆xe = ∆xw = ∆x
2.4 Difusión 13

Volumen de control
W w P e E

Nodos ∆x
∆xw ∆xe

Figura 2: Definición de los nodos y volúmenes de control en la malla.

Paso 2. Integración.
Ahora se integra la ecuación (28) sobre el volumen de control descrito en la figura
2 para obtener:
Z   Z  dφ   dφ 
d dφ
Γ dx + Sdx = ΓA − ΓA + S̄dx = 0. (29)
∆x dx dx ∆x dx e dx w

donde S̄ es el promedio de S en el volumen de control y A es el área de las caras.


En este caso se considera que A = Ae = Aw = 1. La ecuación (29) dice que el
flujo difusivo que entra por la cara w menos el flujo difusivo que sale por la cara
e es igual a la generación de φ en el volumen de control, es decir, esto constituye
una ecuación de balance para φ sobre el volumen de control.

Paso 3. Discretización.
Para derivar formas discretas de la ecuación anterior, se requiere aproximar Γ y
el gradiente dφ/dx en las caras e y w. La forma más simple es suponer que el
integrando prevalece sobre todo el volumen de control, lo cual da un perfil tipo
escalón como se muestra en la figura 3(a). Sin embargo, para esta aproximación,
la derivada dφ/dx no está definida en las caras e y w. Un perfil lineal, como el que
se muestra en figura 3(b), no sufre de esta desventaja por lo que es el que se usa
en la mayorı́a de los casos.
La aproximación lineal es muy simple y se conoce como diferencias centrales. En
una malla uniforme Γe y Γw están dados por:

ΓW + ΓP Γ + ΓE
Γw = y Γe = P
2 2
Usando el perfil lineal, los términos difusivos se evaluan como sigue:
 dφ  φ − φ 
Γ = Γe E P
(30)
dx e ∆xe
 dφ  φ − φ 
Γ = Γw P W
(31)
dx w ∆xw
14 ÍNDICE

φ φ

w e x w e x
W P E W P E
(a) (b)

Figura 3: Perfiles comunes: (a) escalón; (b) lineal.

A menudo el término fuente está dado en función de la variable dependiente φ, y


por lo tanto es deseable conocer esta dependencia en la construcción de las ecua-
ciones discretas. Es posible tomar en cuenta solamente una dependencia lineal
debido a que las ecuaciones se resolverán usando técnicas para ecuaciones alge-
braicas lineales. El procedimiento consiste en linealizar el término fuente como
sigue:

S̄dx = Su + SP φP (32)

donde Su es la parte constante de S̄, mientras que SP es el coeficiente de la parte


lineal (OJO: SP no significa el valor de S evaluado en el punto P ).
La aparición de φP supone que, cuando se expresa el promedio del valor de S, el
valor de φP prevalece en todo el volumen de control. En otras palabras, se utiliza
el perfil de tipo escalón para el término fuente como el mostrado en la figura 3(a).
Sustituyendo las ecuaciones (30), (31) y (32) en la ecuación (29) se obtiene

φ − φ  φ − φ 
E P
Γe − Γw P W
+ (Su + SP φP ) = 0
∆xe ∆xw

que se puede arreglar en


     
Γe Γw Γw Γe
+ − SP φP = φW + φE + Su . (33)
∆xe ∆xw ∆xw ∆xe

entonces podemos escribir la ecuacion (33) como sigue

aP φP = aW φW + aE φE + Su . (34)
2.4 Difusión 15

en donde los coeficientes aP , aE y aW se escriben de la siguiente manera

aW = Γw/∆xw; aE = Γe/∆xe y aP = aW + aP − S P

Los valores de Su y SP se pueden obtener de la ecuación (32). La ecuación (34)


junto con la definición de los coeficientes aW , aE y aP representan la forma discreta
de la ecuación (28).

Paso 4. Solución.
Una ecuación de la forma (34) debe escribirse para cada volumen de control (nodo).
Las ecuaciones discretas para los volúmenes de control que son adyancentes a la
frontera deben modificarse para tomar en cuenta las condiciones de frontera. El
sistema de ecuaciones resultante se resuelve para obtener una distribución de la
propiedad φ en los centros de los volúmenes.

Ahora se tratará un ejemplo concreto. Supóngase que φ = T , Γ = k, S = 0 y


5 volúmenes de control como se muestra en la figura 4. Aquı́ k es la conductividad
térmica y se considera constante en todo el dominio.

1 2 3 4 5
Ta Tb

∆x

∆x /2 ∆x ∆x ∆x /2

Figura 4: Ejemplo de discretización.

Las ecuaciones discretas y sus coeficientes para los nodos 2, 3 y 4 se escriben como
sigue:

aP TP = aW TW + aE TE .

aW = k/∆x; aE = k/∆x y aP = aW + aP
Su y SP son cero dado que no existen fuentes.
Los nodos 1 y 5 están en la frontera y por lo tanto requieren de un proceso especial.
En el nodo 1, la integración de la ecuación (28) con S = 0 da lo siguiente
T − T  T − T 
E P a
k −k P =0
∆x ∆x/2
que se puede rearreglar como sigue
     
k k k k
+ TP = 0 × TW + TE + Ta .
∆x ∆x/2 ∆x ∆x/2
16 ÍNDICE

Entonces que para el nodo 1 la ecuación discreta se escribe como

aP TP = aW TW + aE TE + Su.
donde

aW = 0; aE = k/∆x; aP = aW + aP − SP ; SP = −2k/∆x; Su = (2k/∆x)Ta

Un tratamiento similar se hace para el nodo 5 y se obtiene la misma ecuación que


en el caso del nodo 1, con los siguientes coeficientes

aW = k/∆x; aE = 0; aP = aW + aP − SP ; SP = −2k/∆x; Su = (2k/∆x)Tb

Juntando las ecuaciones para todos los nodos resulta un sistema lineal tridiagonal
    
aP aE 0 0 0 T1 Su
 aW aP aE 0 0 
  T2   0 
   

 0 aW aP aE 0   T3  =  0 
    
 0 0 aW aP aE   T4   0 
0 0 0 aW aP T5 Su
Cada renglón del sistema presentado arriba corresponde a un volumen de control de
la malla, de tal manera que en principio los coeficients a’s son diferentes de renglón a
renglón. Lo mismo sucede con Su .

2.4.2. Difusión estacionaria en 2D y 3D


La metodologı́a descrita en el ejemplo anterior se puede extender fácilmente a dos y
tres dimensiones. Para ilustrar la técnica, considérese la ecuación de difusión estacionaria
en dos dimensiones:
   
∂ ∂φ ∂ ∂φ
Γ + Γ +S =0 (35)
∂x ∂x ∂y ∂y
La figura 5 muestra un volumen de control en dos dimensiones. Integrando la ecuación
(35) sobre un volumen de control se obtiene:

Z   Z   Z
∂ ∂φ ∂ ∂φ
Γ dV + Γ dV + SdV = (36)
∆V ∂x ∂x ∆V ∂y ∂y ∆V
  dφ   dφ  
ΓeAe − ΓwAw +
dx e dx w
  dφ   dφ  
ΓnAn − ΓsAs +
dx n dx s
S̄∆V = 0.
2.4 Difusión 17

111111111111
000000000000
n ∆yn
000000000000
111111111111
000000000000
111111111111
000000000000
111111111111
W
000000000000
111111111111
000000000000
111111111111
w P e E ∆y
000000000000
111111111111
000000000000
111111111111
000000000000
111111111111
000000000000
111111111111
000000000000
111111111111
000000000000
111111111111
s ∆ys

S
∆x
∆xw ∆xe

Figura 5: Volumen de control en 2D.

Igual que antes, esta ecuación representa el balance entre la generación de φ en un


volumen de control y los flujos a través de sus caras. Usando perfiles lineales es posible
escribir expresiones para los flujos a través de las caras como sigue:

 dφ  φE − φP
ΓeAe = ΓeAe
dx e ∆xe
 dφ  φP − φW
ΓwAw = ΓwAw
dx w ∆xw
 dφ  φ − φP
ΓnAn = ΓnAn N
dx n ∆xn
 dφ  φP − φS
ΓsAs = ΓsAs
dx s ∆xs

Sustituyendo estas expresiones en la ecuación (36) y usando la forma S̄∆V = Su +


SP φP se llega a

aP φP = aW φW + aE φE + aS φS + aN φN + Su . (37)
donde los coeficientes están definidos como sigue:

aW = ΓwAw/∆xw; aE = ΓeAe/∆xe;
aS = ΓsAs/∆xs; aN = ΓnAn/∆xn; aP = aW + aE + aS + aN − SP ;
18 ÍNDICE

donde Ae = Aw = ∆y y An = As = ∆x .
En tres dimensiones el proceso es similar, solo que ahora se tiene la coordenada z, y
por cada volumen de control se tienen seis vecinos W, E, S, N, B, F , véase figura 6.

N
∆x

∆z n
B
b
W w P e E
f
∆y
F
s
∆V = ∆x∆y∆z

Figura 6: Volumen de control en 3D.

La ecuación discreta correspondiente es:

aP φP = aW φW + aE φE + aS φS + aN φN + aB φF + aB φB + Su. (38)
con los siguientes coeficientes:

aW = ΓwAw/∆xw; aE = ΓeAe/∆xe; aS = ΓsAs/∆xs;


aN = ΓnAn/∆xn; aB = ΓbAb/∆xb; aF = Γf Af /∆xf ;
aP = aW + aE + aS + aN + aB + aF − S P

donde Ae = Aw = ∆x∆z, An = As = ∆y∆z y Af = Ab = ∆x∆y.


Los sistemas lineales que resultan para los casos de dos y tres dimensiones son
pentadiagonales y heptadiagonales respectivamente.

2.5. Linealización del término fuente


Cuando el término fuente depende de φ, se expresa la realción en la forma lineal
dada por la ecuación (32). Esto se hace por que la incorporación de una dependencia
lineal es mejor que el tratamiento de S como una constante.
Cuando S es una función no lineal de φ se debe linealizar especificando los valores
de Su y SP , los cuales pueden depender a su vez de φ. Durante cada iteración, Su y SP
2.5 Linealización del término fuente 19

podrı́an ser recalculados a partir de los nuevos valores de φ. Una regla básica es que SP
debe ser negativo, [37].
En el siguiente ejemplo, φ∗P representa el valor de φP en una iteración previa.

Ejemplo Dado S = 4 − 5φ3 algunas posibles linealizaciones son:

1. Su = 4 − 5φ∗P 3 , SP = 0. Esta forma no saca ventaja de la dependencia de S


con respecto a φ
2. Su = 4, SP = −5φ∗P 2 . Aparentemente es la forma correcta, pero la curva S es
más pronunciada.
3. Método recomendado:
 
∗ dS
S=S + (φP − φ∗P ) = 4 − 5φ∗P 3 − 15φ∗P 2 (φP − φ∗P ).

de esta manera Su = 4 + 10φ∗P 3 , SP = −15φ∗P 2 . Esta linealización representa
la tangente a la curva S en el punto φ∗P .
4. Su = 4 + 20φ∗P 3 , SP = −25φ∗P 2 . Esta linealización, que es más pronunciada
que la curva S y ocasiona un decremento en la razón de convergencia.

Las cuatro linealizaciones se muestran en la figura 7, junto con la curva S. Cualquier


lı́nea recta de pendiente positiva viola la regla de que SP debe ser negativa, [37]. De
entre las pendientes negativas, la tangente a la curva es usualmente la mejor elección.
Lı́neas con mayor pendiente que la tangente generalemente reducen la velocidad de
convergencia. Lı́neas con menos pendiente no son deseables, pues no dan la correcta
razón de caı́da de S con respecto a φ.

Figura 7: Linealizaciones del ejemplo anterior.


20 ÍNDICE

2.6. Condiciones de frontera


La discretización de las condiciones de frontera es importante dado que definen la
solución que se obtiene en el interior del dominio de estudio. Para los problemas que se
tratan en este estudio existen básicamente dos tipos de condiciones de frontera:

Dirichlet: en donde el valor del campo se define en la frontera, es decir: φ = φb .

Neumann: en donde el gradiente del campo normal a la frontera es especificado,


es decir ∂φ/∂n = φ′b .

En la figura 8, por ejemplo, el punto E cae fuera del dominio y la cara e del volumen
que rodea a P cae justo en la frontera. Usando las técnicas de discretización descritas
antes, una ecuación para el punto P en términos de sus vecinos se escribe de forma
similar a la ecuación (38). Sin embargo, en este caso algunos de los coeficientes cambian
su forma debido a que el punto E no está dentro del dominio.

W P E
w e

∆ xe

x
S
z

Figura 8: Volumen de control en la frontera.

En el caso de la figura 8, la condición de frontera de tipo Dirichlet es impuesta


de tal manera que φb = φe. El valor de la frontera se puede aproximar mediante una
interpolación lineal simple:
φP + φE
φe = φb ≈ , (39)
2
de donde se obtiene:

φE = 2φb − φP . (40)
Sustituyendo esta última expresión en la ecuación (38) y factorizando se obtiene:

a∗P φP = a∗E φE + aW φW + aN φN + aS φS + aF φF + aB φB + SP∗ , (41)


donde
2.7 Consideraciones geométricas 21

a∗P = aP + aE ,
SP∗ = SP + 2aE φb y
a∗E = 0.

Para las condiciones de tipo Neumann, usando diferencias centrales para aproximar
el gradiente normal a la superficie, se tiene que:
 
′ ∂φ φ − φP
φb = ≈ E , (42)
∂x e ∆xe
de donde se genera:

φE = φP + ∆xeφ′b . (43)
Sustituyendo esta expresión en la ecuación (52) se obtiene una ecuación similar a
(41), con los coeficientes definidos como sigue:

a∗P = aP − aE ,
SP∗ = SP + aE ∆xeφ′b y
a∗E = 0.

De esta manera, las condiciones de frontera, Dirichlet y Neumann, se incorporan en


el sistema de ecuaciones a resolver. Es posible utilizar diferentes aproximaciones para las
condiciones de frontera, y esto depende del orden de aproximación del esquema numérico
utilizado en los puntos interiores, véase [37].

2.7. Consideraciones geométricas


En este documento solo se consideran geometrı́as cartesianas, por lo que los volúmenes
serán siempre rectangulares en 2D y paralelepı́pedos en 3D. Aunque la discretización
del dominio de estudio, generación de la malla, es trivial, resulta importante definir
la ubicación de los volúmenes y de sus caras. En la figura 9 se muestran tres formas
alternativas para ubicar los volúmenes.
Cuando las caras de los volúmenes se ubican a la mitad entre los puntos de la
malla, figura 9(a), es posible calcular el flujo de la variable φ a través de las caras
con mayor precisión cuando se usa una aproximación lineal, sin embargo el valor de
esta aproximación no estará dado en el centro de la cara, sino por ejemplo en el punto
e, veáse figura 9(a). Además, el hecho de que los nodos no estén en el centro de los
volúmenes representa una desventaja, pues el valor de cualquier variable en el nodo no
será representativo para todo el volumen. Esto implica que la suposición de que el valor
de φ prevalece en todo el volumen reduce la precisión.
22 ÍNDICE

En el caso de que los nodos de la malla sean colocados al centro de los volúmenes
de control, figura 9(b), produce mejores aproximaciones pues el valor en el nodo si es
representativo para todo el volumen y el calculo del flujo se hace en el centro de las
caras. Por otro lado, este último cálculo no será preciso si se utiliza una aproximación
lineal dado que las caras no están a la mitad entre los nodos.
Para mallas uniformes ambas distribuciones son equivalentes. También es posible que
los elementos de la malla sean los volúmenes de control, figura 9(c). Es común llamar
Cell-Centered schemes(CC) a los dos primeros casos, figura 9 (a) y 9 (b) y Vertex-
Centered scheme(VC) al 9 (c). En la literatura ambos esquemas son aplicados. En los
ejemplos mostrados en este documento se usa CC, pues es más simple de implementar.

N N

n n

W w P e E W w P e E

s s
S S

(a) (b) (c)

Figura 9: Diferentes ubicaciones de los volúmenes de control.

3. MVF : Advección–Difusión
La ecuación de convección–difusión estacionaria se deriva de la ecuación general de
transporte (1) eliminando el término temporal:
 
∇ · ρφu = ∇ · (Γ∇φ) + Sφ , (44)

Esta ecuación se puede escribir como sigue:

∂ ∂ ∂ ∂  ∂φ  ∂  ∂φ  ∂  ∂φ 
(ρuφ) + (ρvφ) + (ρwφ) = Γ + Γ + Γ + Sφ , (45)
∂x ∂y ∂z ∂x ∂x ∂y ∂y ∂z ∂z

donde u = (u, v, w).


Integrando la ecuación (45) sobre un volumen de control se obtiene:
3 MVF : Advección–Difusión 23

Z h∂ i
∂ ∂
(ρuφ) + (ρvφ) + (ρwφ) = (46)
∆V ∂x ∂y ∂z
Z h 
∂ ∂φ  ∂  ∂φ  ∂  ∂φ 
Γ + Γ + Γ + Sφ
∆V ∂x ∂x ∂y ∂y ∂z ∂z
Asumiendo que las velocidades en las caras w, e, s, n, b, f son conocidas y que este
valor prevalece en toda la cara, se obtiene lo siguiente:

C = D + S, (47)
donde la forma general de los términos C, D y S de la ecuación anterior es como sigue:

C = (ceφe − cwφw) + (cnφn − csφs) + (cf φf − cbφb), (48)

    
∂φ ∂φ
D=Γ − ∆y∆z
∂x e ∂x w
    
∂φ ∂φ
+Γ − ∆x∆z (49)
∂y n ∂y s
"    #
∂φ ∂φ
+Γ − ∆x∆y,
∂z f ∂z b

S = SP ∆V, (50)

donde los términos c de la ecuación (48) están definidos de la siguiente manera:

ce = ue∆y∆z, cw = uw∆y∆z,
cn = vn∆x∆z, cs = vs∆x∆z, (51)
cf = wf ∆x∆y, cb = wb∆x∆y,
Los términos advectivos y difusivos se pueden aproximar usando diferentes esquemas
[37]. Independientemente de la aproximación usada, cuando se insertan estos esquemas
en las ecuaciones (48) y (49), y éstos a su vez en la ecuación (47), se obtienen sistemas
lineales como el siguiente:

aP φP = aE φE + aW φW + aN φN + aS φS + aF φF + aB φB + SP , (52)
donde los coeficientes contienen una parte difusiva y otra advectiva:

aE = DE + CE , aW = DW + CW ,
aN = DN + CN , aS = DS + CS ,
(53)
aF = DF + CF , aB = DB + CB ,
∆V
aP = DP + CP + ∆t
.
24 ÍNDICE

3.1. Aproximación de los términos difusivos


Las derivadas parciales que aparecen en la ecuación (49), se deben evaluar en las
caras del volumen de control. Estas derivadas pueden aproximarse usando un perfil lineal
entre puntos adyacentes de la malla (p. ej. entre P y E). De esta manera se tiene que:
   
∂φ φ − φP ∂φ φ − φW
≃ E , ≃ P ,
∂x e ∆xe ∂x w ∆xw
   
∂φ φ − φP ∂φ φ − φS
≃ N , ≃ P , (54)
∂y n ∆yn ∂y s ∆ys
   
∂φ φ − φP ∂φ φ − φB
≃ F , ≃ P .
∂z f ∆zf ∂z b ∆zb

donde ∆xe, ∆xw, ∆yn, ∆ys, ∆zf y ∆zb, son definidos como se muestra en la figura 10.

Corte en el plano xy Corte en el plano yz

N N

1111111111
0000000000
n
0000000000
1111111111 ∆yn 1111111111
0000000000
n
0000000000
1111111111
0000000000
1111111111
0000000000
1111111111 0000000000
1111111111
0000000000
1111111111
W
0000000000
1111111111
w1111111111
0000000000
P e E B
0000000000
1111111111
b 1111111111
0000000000
P f F
0000000000
1111111111 ∆y
0000000000
1111111111
0000000000
1111111111
0000000000
1111111111 0000000000
1111111111
0000000000
1111111111
0000000000
1111111111
0000000000
1111111111 0000000000
1111111111
0000000000
1111111111
s ∆ys s

S S

∆x ∆z

∆xw ∆x e ∆zb ∆z f
y y

x z
z −x

Figura 10: Cortes del dominio discreto en los planos xy y yz.

Cuando la malla es uniforme (∆xe = ∆xw = ∆x, idénticamente en las direcciones


y y z), se puede demostrar, a partir de la expansión en series de Taylor de φE , φW , φN ,
3.2 Aproximación de los términos advectivos 25

φS , φF y φB , que las expresiones (54) producen una aproximación de orden O(∆x2 ),


[37]. Con estas aproximaciones la parte difusiva de los coeficientes (53) es:

∆y∆z ∆y∆z
DE = Γ , DW =Γ ,
∆xe ∆xw
∆x∆z ∆x∆z
DN = Γ , DS =Γ , (55)
∆yn ∆ys
∆x∆y ∆x∆y
DF = Γ , DB =Γ ,
∆zf ∆zb
DP = DE + DW + DN +DS + DF + DB .

en donde se consideró Γ = cte.

3.2. Aproximación de los términos advectivos


Los términos advectivos son importantes dado que representan la parte no lineal
de la ecuación general (1). En la ecuación (48) se observa que es necesario encontrar
los valores de φ en las caras del volumen de control. Sin embargo, φ representa a una
variable escalar definida en los centros de los volúmenes, como se muestra en la figura
10. A continuación se presentan tres diferentes esquemas para aproximar φ en las caras
de los volúmenes: Upwind, diferencias centrales (CDS) y QUICK.

3.2.1. Upwind
Este es un esquema que proporciona una aproximación de primer orden O(∆x), y
consiste en tomar el valor de la variable escalar en la cara del volumen de control, igual
al valor de φ en el punto de la malla de donde proviene el flujo (upstream). Por ejemplo,
si ce > 0 =⇒ φe = φP y si cw > 0 =⇒ φw = φW , la figura 11 muestra este caso.
Las funciones que definen este esquema para φe y φw, son:
( (
φP si ce > 0, φW si cw > 0,
φe = y φw = (56)
φE si ce ≤ 0, φP si cw ≤ 0.
Funciones similares se definen para φn, φs, φf y φb. Ahora, si se define JA, BK como
el máximo entre A y B, entonces, los términos advectivos en este esquema se expresan
de la siguiente manera:

   
ceφe = φP Jce, 0K − φE J−ce, 0K , cwφw = φW Jcw, 0K − φP J−cw, 0K ,
   
cnφn = φP Jcn, 0K − φN J−cn, 0K , csφs = φS Jcs, 0K − φP J−cs, 0K , (57)
   
cf φf = φP Jce, 0K − φF J−ce, 0K , cbφb = φB Jcb, 0K − φP J−cb, 0K .
26 ÍNDICE

Corte en el plano xy

11111111111
00000000000
n
00000000000
11111111111
00000000000
11111111111
∆yn

00000000000
11111111111
WW ww W
00000000000
11111111111
00000000000
11111111111
w P e E ee EE
00000000000
11111111111 ∆y
00000000000
11111111111
00000000000
11111111111
00000000000
11111111111
00000000000
11111111111
s ∆ys

y ∆x

∆xw ∆x e
x
z

Figura 11: Esquema Upwind para el caso: ce > 0 =⇒ φe = φP y cw > 0 =⇒ φw =


φW .

Sustituyendo estas definiciones en (48) se obtiene la siguiente forma para la parte


advectiva de los coeficientes (53):

CE = J−ce, 0K, CW = Jcw, 0K, CN = J−cn, 0K,


CS = Jcs, 0K, CF = J−cf , 0K, CB = Jcb, 0K, (58)
CP = CE + CW +CN + CS + CF +CB + (ce − cw) + (cn − cs) + (cf − cb).

Como se verá más adelante, la expresión (ce − cw) + (cn − cs) + (cf − cb), es la versión
discreta de la ecuación de continuidad.

3.2.2. Diferencias centrales (CDS)


Una manera simple de evaluar φ en las caras, es mediante una interpolación lineal
usando valores de puntos vecinos. Por ejemplo, en la cara e se tiene que:

φe = φE λe + φP (1 − λe), (59)
donde el factor de interpolación λe se define como:
3.2 Aproximación de los términos advectivos 27

xe − xP
λe = . (60)
xE − xP
Cuando la malla es uniforme λe = 0.5. La precisión de la ecuación (59) es de segundo
orden (O(∆x2 )) como puede mostrase a través de una expansión en series de Taylor de
φE alrededor del punto P . Este es el esquema de segundo orden más simple y corresponde
a la aproximación de diferencias centrales de la primera derivada en los métodos de
diferencias finitas.
Con este esquema los coeficientes son de la forma:

CE = −ceλe, CW = ceλw, CN = −ceλn,


CS = ceλs, CF = −ceλf , CB = ceλb, (61)
CP = CE + CW +CN + CS + CF +CB + (ce − cw) + (cn − cs) + (cf − cb).

3.2.3. QUICK
El esquema QUICK (Quadratic Upstream Interpolation for Convective Kinematics)
desarrollado por Leonard [20] es un esquema tipo Upwind de tercer orden para interpolar
flujos advectivos (convectivos)1 en las caras de los volúmenes de control. En este caso,
se seleccionan tres puntos de la malla para construir un polinomio de segundo grado.
La selección de los puntos se hace de acuerdo con la dirección de la velocidad en la cara
correspondiente del volumen de control.
La fórma cuadrática de interpolación de los términos advectivos ceφe y cwφw, en el
esquema QUICK, para mallas uniformes tiene la siguiente forma:

     
φP + φE
ceφe = ce − cep φW − 2φP + φE − cem φE E − 2φE + φP , (62)
2
     
φP + φW
cwφw = cw − cwp φW W − 2φW + φP − cwm φE − 2φP + φW , (63)
2

en donde cep, cem, cwp y cwm son funciones que dependen de ce y cw. La forma de cep
y cem se muestra en la ecuación (64) y en la figura 12; definiciones similares se hacen
para cwp y cwm. Los términos cnφn, csφs, cf φf y cbφb se aproximan de igual manera.

( (
ce
f 8
si ce > 0, g 0 si ce ≥ 0,
cep = = cem = = (64)
8 0 si ce ≤ 0, 8 − c8e si ce < 0.

Usando las definiciones anteriores, los coeficientes convectivos toman la forma sigu-
iente:
1
Se ha usado en este documento el término advección para denotar a los términos que tienen que
ver con el movimiento del fluido. Algunos autores utilizan el término convección.
28 ÍNDICE

f g

1 ce − |ce |
g(ce ) = 2

0
ce 0
ce
−1 1 2 3 −3 −2 −1 1

ce + |ce |
f(ce ) = 2 −1

Figura 12: Definición de las funciones f y g.

ce cw
CE = − + cep − 2cem + cwm, CW = + 2cwp − cwm + cep,
2 2
cn cs
CN = − + cnp − 2cnm + csm, CS = + 2csp − csm + cnp,
2 2
cf cb
CF = − + cfp − 2cfm + cbm, CB = + 2cbp − cbm + cfp, (65)
2 2
CP =CE + CW + CN + CS + CF + CB +cem − cwp + cnm − csp + cfm − cbp+
(ce − cw) + (cn − cs) + (cf − cb).
El orden de aproximación de este esquema es de O(∆x3 ), véase [20].

4. Acoplamiento presión-velocidad
La advección de una variable escalar φ depende de la magnitud y dirección de la ve-
locidad. En general, la velocidad no se conoce y debe calcularse como parte del proceso
de solución junto con las otras variables del flujo. Las ecuaciones para cada compo-
nente de la velocidad — ecuaciones de cantidad de movimiento — pueden derivarse de
la ecuación general (1). En el caso de flujos incompresibles, la velocidad debe satisfac-
er la ecuación de continuidad. Para describir el método de solución, reescribimos las
ecuaciones de cantidad de movimiento y de continuidad como sigue:

∂u ∂u ∂u ∂u ∂p ∂ 2u ∂2u ∂ 2u
+u +v +w = − + Γ 2 + Γ 2 + Γ 2 + Su ,
∂t ∂x ∂y ∂z ∂x ∂x ∂y ∂z
∂v ∂v ∂v ∂v ∂p ∂ 2v ∂ 2v ∂ 2v
+u +v +w = − + Γ 2 + Γ 2 + Γ 2 + Sv , (66)
∂t ∂x ∂y ∂z ∂y ∂x ∂y ∂z
2 2
∂w ∂w ∂w ∂w ∂p ∂ w ∂ w ∂2w
+u +v +w = − + Γ 2 + Γ 2 + Γ 2 + Sw .
∂t ∂x ∂y ∂z ∂z ∂x ∂y ∂z
4.1 Mallas desplazadas 29

∂u ∂v ∂w
+ + = 0. (67)
∂x ∂y ∂z
La solución de estas ecuaciones presenta algunos problemas:
Los términos advectivos de las ecuaciones de cantidad de movimiento son canti-
dades no lineales.
Las ecuaciones están fuertemente acopladas debido a que cada componente de la
velocidad aparece en cada ecuación de cantidad de movimiento.
El problema más complejo es resolver el papel que juega la presión: no existe
explı́citamente una ecuación para la presión.
Estos problemas, asociados con la no linealidad de las ecuaciones, pueden resolverse
adoptando una estrategia de solución iterativa. El método SIMPLEC (Semi-Implicit
Method for Pressure Linked Equations – Consistent) [9] es usado aquı́ y se presenta más
adelante.

4.1. Mallas desplazadas


La forma más sencilla de aproximar el gradiente de presiones, que aparece en las
ecuaciones (66), es mediante una interpolación lineal. Por ejemplo, para la ecuación en
dirección x se tiene, de la figura 11, que:
   
pE +pP pP +pW
 
∂p pe − pw 2
− 2 p − pW
≈ = = E . (68)
∂x P ∆x ∆x ∆x
En la ecuación anterior se observa que el valor de la presión en el nodo central P ,
no aparece. Esto puede ocasionar campos de presiones con oscilaciones no realistas.
Es claro entonces, que si las velocidades están definidas en los puntos centrales de la
malla, la influencia de la presión no estará representada correctamente. Un remedio
a este problema es utilizar mallas desplazadas (staggered grids) para las componentes
de la velocidad. La idea es evaluar las variables escalares, tales como la presión y la
temperatura en los centros de los volúmenes de control; mientras que las velocidades
se evaluan en las caras de los mismos volúmenes. El arreglo para las tres componentes
de la velocidad se muestra en la figura 13. Se observa que el punto central P , para
la componente u de la velocidad, se desplaza a la cara w. Para las otras componentes
se hace un desplazamiento similar. Con este arreglo, el gradiente de presiones, en la
ecuación para u se calcula de la siguiente forma:
 
∂p p − pW
≈ P . (69)
∂x w ∆x
Una ventaja adicional de las mallas desplazadas es que genera velocidades en los
lugares exactos donde se requiere para las ecuaciones escalares y por lo tanto no es
necesario realizar interpolaciones.
30 ÍNDICE

Corte en el plano xy Corte en el plano yz

N N

11111111111
00000000000
00000000000
11111111111
00000000000
11111111111
n
∆yn 11111111111
00000000000
00000000000
11111111111
n
00000000000
11111111111
00000000000
11111111111
00000000000
11111111111
00000000000
11111111111
00000000000
11111111111
00000000000
11111111111
00000000000
11111111111
00000000000P
11111111111 00000000000
11111111111
B 11111111111
w 111111111111111111111
000000000000000000000
W 11111111111
00000000000
00000000000
11111111111
e E 00000000000
b 111111111111111111111
000000000000000000000
00000000000
11111111111
P f
F
000000000000000000000
111111111111111111111
00000000000
11111111111
00000000000
11111111111
000000000000000000000
111111111111111111111
00000000000
11111111111
00000000000
11111111111
∆y
000000000000000000000
111111111111111111111
00000000000
11111111111
000000000000000000000
111111111111111111111
000000000000000000000
111111111111111111111
00000000000
11111111111
00000000000
11111111111 00000000000
11111111111
000000000000000000000
111111111111111111111
00000000000
11111111111
000000000000000000000
111111111111111111111
00000000000
11111111111
00000000000
11111111111 000000000000000000000
111111111111111111111
00000000000
11111111111
000000000000000000000
111111111111111111111
00000000000
11111111111
00000000000
11111111111
000000000000000000000
111111111111111111111
00000000000s
11111111111 ∆ys
000000000000000000000
111111111111111111111
00000000000
11111111111
000000000000000000000
111111111111111111111
000000000000000000000
111111111111111111111 000000000000000000000
111111111111111111111
s
000000000000000000000
111111111111111111111
000000000000000000000
111111111111111111111 000000000000000000000
111111111111111111111
000000000000000000000
111111111111111111111
000000000000000000000
111111111111111111111 000000000000000000000
111111111111111111111
000000000000000000000
111111111111111111111
S 000000000000000000000
111111111111111111111
S

∆x ∆z

∆xw ∆xe ∆zb ∆z f


y y

x z
z −x

111
000
000
111 VC para u 111111
000000 1111
0000
000
111 000000
111111 VC para v 0000
1111 VC para w

Figura 13: Malla y volúmenes de control (VC) para las componentes de la velocidad.

4.2. Ecuación de corrección a la presión


Una relación para calcular la presión se puede obtener a partir de las ecuaciones (66)
y (67). Aplicando el método de volumen finito a la ecuación de cantidad de movimiento
para u en una malla desplazada como se muestra en la figura 13, se obtiene:
X
a P uP = anb unb + bu + Au (pW − pP ), (70)
nb

donde se escribe explı́citamente el gradiente de presiones. En esta ecuación nb = E , W , N , S , F , B ,


Au = ∆y∆z es el área de la cara w del volumen de control y bu es el término fuente.
Ahora, dado que no conocemos la presión, definimos p∗ como una presión aproxima-
da. Esta presión produce una velocidad aproximada u∗ . Por lo tanto se produce:
X
aP u∗P = anb u∗nb + bu + Au (p∗W − p∗P ). (71)
nb

Para obtener u y p correctas se deben corregir los valores aproximados mediante


4.3 SIMPLEC 31

p = p∗ + p′ y u = u∗ + u′ . Una relación entre p′ y u′ se obtiene restando las ecuaciones


(70) y (71):
X
aP u′P = anb u′nb + Au (p′W − p′P ). (72)
nb

En los métodos del tipo SIMPLE se encuentra una ecuación discreta ya sea para la
presión p o para la corrección a la presion p′ y se resuelve dentro del ciclo global del
método.

4.3. SIMPLEC
En el SIMPLE se realiza una aproximación consistente P que genera una expresión
′ ′
sencilla para p . En este algoritmo se resta el término anb uP en ambos lados de la
ecuación (72), de tal forma que se tiene:
X X
(aP − anb )u′P = anb (u′nb − u′P ) +Au (p′W − p′P ). (73)
nb
|nb {z }
≈0

La diferencia (u′nb −u′P ) es aproximadamente igual a cero, para todo nb y para mallas
relativamente finas. Por lo tanto, es posible eliminar este término de la ecuación, de tal
manera que la velocidad corregida estará dada por:

uP = u∗P + u′P = u∗P + du (p′W − p′P ), (74)


donde
X
de = Ae/(aP − anb ). (75)
Las correciones para las componentes v y w se escriben como:

vP = vP∗ + vP′ = vP∗ + dv (p′S − p′P ), (76)

wP = wP∗ + wP′ = wP∗ + dw (p′B − p′P ), (77)


La ecuación para p′ se obtiene sustituyendo las ecuaciones (74), (76) y (77) en la
ecuación (67) :

aP p′P = aE p′E + aW p′W + aN p′N + aS p′S + aF p′F + aB p′B + bp , (78)


donde los coeficientes están definidos como sigue:

a′E = du Au , a′W = du Au , a′N = dv Av ,


a′S = dv Av , a′F = dw Aw , a′B = dw Aw ,
bp = −(u∗e − u∗w )∆y∆z − (vn∗ − vs∗ )∆x∆z − (wf∗ − wb∗ )∆x∆y (79)
32 ÍNDICE

De esta manera se tiene una ecuación para la corrección a la presión, con la que se
completa el sistema de ecuaciones. La definición de bp es exactamente la forma discreta
de la ecuación de continuidad para u∗ , v ∗ y w∗ , que produce el método de volumen finito.
Cuando este coeficiente es igual a cero, significa que dichas velocidades cumplen con la
ecuación de continuidad. Este es el criterio de convergencia que se usa en los ejemplos
mostrados al final de este texto.
En problemas de convección natural la diferencia de temperaturas es la que promueve
el movimiento, por lo tanto es importante resolver primero la ecuación de energı́a y luego
las ecuaciones de cantidad de movimiento y la de corrección a la presión. Entonces, los
pasos que sigue el método SIMPLEC, adaptado a problemas de convección natural son:

1. Se inicia con campos aproximados: T ∗ , p∗ , u∗ , v ∗ y w∗

2. Se resuelve la ecuación de energı́a para obtener T .

3. Se resuelven las ecuaciones de cantidad de movimiento usando los campos de pre-


sión y velocidad iniciales aproximados (p∗ , u∗ , v ∗ , w∗ ) y el campo de temperaturas
T.

4. Se calculan los coeficientes de la ecuación de presión pnb usando los coeficientes


de las ecuaciones de cantidad de movimiento.

5. Se resuelve la ecuación de corrección a la presión.

6. Se corrige la presión mediante p = p∗ + p′ .

7. Se corrige la velocidad mediante ecuaciones (74), (76) y (77).

8. Se verifica el criterio de convergencia:

a) Si bp ≤ ǫs ir al paso 9.
b) Si bp > ǫs regresar al paso 2

donde ǫs es la tolerancia especificada.

9. Fin

5. Solución de los sistemas lineales


La discretización de las ecuaciones gobernantes produce sistemas lineales como el
mostrado en la ecuación (52). La complejidad y tamaño del conjunto de ecuaciones
depende de la dimensión del problema, el número de puntos de la malla y la estrate-
gia de discretización. Aunque es posible utilizar cualquier procedimiento válido para
resolver el conjunto de ecuaciones algebraicas, los recursos de cómputo disponibles son
una restricción muy fuerte. Existen dos familias de métodos para resolver los sistemas:
5.1 TDMA 33

directos e iterativos. Los métodos iterativos son generalmente mucho más económicos
que los directos y por ello son preferidos cuando la matriz es dispersa. En este trabajo se
ha usado un método iterativo que se basa en el algoritmo directo de Thomas o TDMA
para matrices tridiagonales.

5.1. TDMA
El TDMA es un método directo para resolver de manera simple y eficiente sistemas
tridiagonales. En una dimensión, la matriz del sistema es tı́picamente tridiagonal, por
lo tanto el TDMA es aplicado directamente, véase figura 14.

TDMA en 1D Sistema lineal en 1D

A x b

W P E

Puntos en la frontera del dominio Puntos donde se resuelve

Figura 14: TDMA en 1D.

El TDMA puede resumirse como sigue: Considérese el siguiente sistema tridiagonal


de N × N :
    
a1 b1 0 0 0 ... x1 d1

 c2 a2 b2 0 0 ... 
 x2  
  d2 


 0 c3 a3 b3 0 ... 
 x3  
  d3 

 0 0 c4 a4 b4 ...  x4 = d4 
    

 0 0 0 c5 a5 ... 
 x5  
  d5 

.. .. .. .. .. .. .. ..
. . . . . . . .

Para encontrar la solución del sistema anterior se realizan los siguientes pasos:

1. Calcular P1 = b1 /a1 y Q1 = d1 /a1

2. Desde i = 2 hasta i = N, calcular lo siguiente:


bi di + ci Qi−1
Pi = , Qi = . (80)
ai − ci Pi−1 ai − ci Pi−1
34 ÍNDICE

3. Hacer xN = QN

4. Desde i = N-1 hasta i = 1, hacer la sustitución hacia atrás:

xi = Pi xi+1 + Qi (81)

5.2. Aplicación del TDMA en 2 y 3 dimensiones


El TDMA puede ser aplicado iterativamente, lı́nea por lı́nea, para resolver problemas
en 2 y 3 dimensiones y es ampliamente usado en problemas de CFD. Considérese la figura
15 y una ecuación discreta que tiene la forma:

aP φP = aE φE + aW φW + aN φN + aS φS + SP . (82)

TDMA en 2D Sistema lineal en 2D

A x b

N
j+1

W P E
j
y

Puntos donde se resuelve Puntos en la frontera Puntos donde los valores


del dominio se consideran conocidos

Figura 15: TDMA en 2D.

Para resolver el sistema, el TDMA es aplicado a lo largo de lı́neas horizontales o


verticales. Por ejemplo, en la dirección x la ecuación (82) se rearregla de la siguiente
forma:

− aW φW + aP φP − aE φE = aN φN + aS φS + SP . (83)
El lado derecho de esta última ecuación se supone conocido, y los valores de φN y
φS se toman de la iteración anterior. La ecuación (83) representa un sistema tridiagonal
donde b = aE , c = aW , a = aP y d = aN φN + aS φS + SP . De esta manera el sistema
puede resolverse a lo largo de la dirección x. Una vez resuelto el sistema en la lı́nea
5.2 Aplicación del TDMA en 2 y 3 dimensiones 35

j, se actualizan los valores de φ y se resuelve la lı́nea siguiente j + 1. La secuencia en


que las lı́neas se van resolviendo se conoce como la dirección de barrido, en este caso,
dicha dirección es +x. El mismo procedimiento se realiza en la dirección y. El cálculo
es repetido varias veces hasta obtener convergencia.
Para problemas tridimensionales el método se aplica lı́nea por lı́nea sobre un plano
determinado y luego se pasa a un plano paralelo y se continúa el cálculo. Por ejemplo,
para resolver a lo largo de la dirección x en un plano xz, véase figura 16, la ecuación
discreta se escribe como sigue:

− aW φW + aP φP − aE φE = aN φN + aS φS + aF φF + aB φB + SP . (84)

TDMA en 3D
Sistema lineal en 3D

A x b

j
N
B

k P
W E
k+1
F

Puntos en la frontera
del dominio
Puntos donde se resuelve

Puntos donde los valores


y
se consideran conocidos

Figura 16: TDMA en 3D.

Los valores en N , S, F y B, del lado derecho, se consideran conocidos y son tomados


de la iteración anterior. Ası́, los valores φ se calculan a lo largo de la dirección x mediante
el TDMA. Luego, el cálculo se mueve de la lı́nea k a la k + 1 hasta cubrir todo el plano
j. Después, se mueve el cálculo al plano j + 1 hasta cubrir todo el dominio.
En dos y tres dimensiones la convergencia puede ser acelerada alternando la dirección
de barrido de tal manera que toda la información de las condiciones de frontera se
36 ÍNDICE

transporte efectivamente dentro del dominio de estudio.

6. Problemas no estacionarios
La ecuación general de transporte (1) se puede escribir como sigue:

∂φ ∂ ∂ ∂
+ (uφ) + (vφ) + (wφ) =
∂t ∂x ∂y ∂z
∂  ∂φ  ∂  ∂φ  ∂  ∂φ 
Γ + Γ + Γ + Sφ
∂x ∂x ∂y ∂y ∂z ∂z
Integrando la ecuación anterior en un volumen de control, ∆V , y en un intervalo de
tiempo, ∆t, se obtiene

Z Z k+1 Z k+1 Z h i
∂φ ∂ ∂ ∂
dtdV + (uφ) + (vφ) + (wφ) dV dt =
∆V k ∂t k ∆V ∂x ∂y ∂z
Z k+1 Z h    
∂ ∂φ ∂ ∂φ ∂  ∂φ  i
Γ + Γ + Γ + Sφ dV dt
k ∆V ∂x ∂x ∂y ∂y ∂z ∂z
donde k ≡ t y k + 1 ≡ t + ∆t.
Considerando que el valor de φ prevalece sobre todo el volumen, entonces la primera
integral del lado izquierdo se puede calcular fácilmente de tal manera que es posible
escribir:
Z k+1 Z k+1
 k+1 k

φP − φP ∆V + Cdt = [D + S] dt.
k k
donde se han agrupado los términos convectivos, difusivos y el fuente en C, D y S,
respectivamente.
Para evaluar las integrales sobre el tiempo, es necesario hacer algunas suposiciones
acerca de la variación de φ en cada volumen de control con respecto al tiempo. Es posible
usar el valor de φ en el tiempo t, en el tiempo t + ∆t o una combinación de ambos.
Lo anterior se generaliza mediante el uso de un parámetro de peso, θ, cuyo valor
está en el intervalo [0, 1]. Esto se conoce como esquema θ y se escribe:
Z k+1
 
f dt = θf k+1 + (1 − θ)f k ∆t
k

k
Zk+1 f ∆t para θ = 0

=⇒ f dt = f k+1 ∆t para θ = 1
k 
 k+1 
f + f k ∆t
2
para θ = 1
2

Ahora, tomando en cuenta que el término fuente se linealiza mediante S̄∆V =


Su + SP φkP , se tiene:
6.1 Esquema Explı́cito: Forward Euler 37

  ∆V  
φk+1 − φkP = θ D(φk+1
nb ) − C(φk+1
nb ) + S u + S P
φk+1
P
∆t P

 
+(1 − θ) D(φknb) − C(φknb) + Su + SP φkP

Aquı́ C y D son funciones de φnb evaluado en el instante k y/o k + 1, dependiendo


del valor de θ. La forma de dichas funciones depende de los esquemas numéricos que se
usen en la aproximación de los diferentes términos. El subı́ndice nb = E, W , N , S, F , B
indica en que punto vecino se evalúa φ.

6.1. Esquema Explı́cito: Forward Euler


En este esquema se toma θ = 0

 k+1  ∆V
φP − φkP = D(φknb) − C(φknb) + Su + SP φkP
∆t

De aquı́ se obtiene:

∆t  
φk+1 = φkP + D(φknb) − C(φknb) + Su + SP φkP
P
∆V
La ecuación anterior es trivial, pues se obtiene el valor de φk+1
P
mediante valores de φ
conocidos del tiempo anterior k. Este esquema es condicionalmente estable y en general
no es muy recomendable.

6.2. Esquema Implı́cito: Backward Euler


En este esquema se toma θ = 1

  ∆V
φk+1 − φkP = D(φk+1 k+1 k+1
nb ) − C(φnb ) + Su + SP φP
P
∆t

De aquı́ se obtiene:

∆V ∆V
φk+1 + C(φk+1 k+1 k+1
nb ) − D(φnb ) − SP φP = φkP + Su
P
∆t ∆t
Como se puede observar, es necesario resolver un sistema de ecuaciones en cada paso
de tiempo. Este esquema es incondicionalmente estable para cualquier paso de tiempo.
Sinembargo, debido a que el esquema es de primer orden en el tiempo, es necesario usar
pasos de tiempo pequeños para obtener buena precisión en la solución. Este esquema es
recomendable para problemas no estacionarios.
38 ÍNDICE

6.3. Esquema Crank-Nicolson: Centred Differencing


En este esquema se toma θ = 1/2
 k+1  ∆V 1 
φP − φkP = D(φk+1 k+1 k+1
nb ) − C(φnb ) + Su + SP φP
∆t 2
1 
+ D(φknb) − C(φknb) + Su + SP φkP
2
De aquı́ se obtiene:
∆V 1 
φk+1 − D(φk+1 k+1
nb ) − C(φnb ) + SP φP
k+1
=
P
∆t 2
∆V 1 
φkP + D(φknb) − C(φknb) + SP φkP + Su
∆t 2
En este esquema también es necesario resolver un sistema de ecuaciones en cado
paso de tiempo. Este esquema, conocido como Crank-Nicholson, es condicionalmente
estable, aunque las limitaciones en el paso de tiempo son menos restrictivas que en
el caso explı́cito. Crank-Nicolson es de segundo orden en tiempo dado que se basa en
diferencias centrales.
7 Paradigmas de programación 39

7. Paradigmas de programación
El cómputo cientı́fico ha evolucionado rápidamente en las últimas décadas alacan-
zando un alto grado de complejidad. Los vastos avances en el desarrollo de nuevas
arquitecturas de hardware y en el desarrollo de métodos numéricos modernos proveen
de una herramienta para resolver cada vez problemas más complicados. Como resultado,
varios problemas importantes para la sociedad se han podido resolver con un alto grado
de precisión, de tal manera que hoy en dı́a el cómputo cientı́fico es indispensable en
muchas áreas del conocimiento.
La solución de estos problemas requiere de la implantación de algoritmos numéricos
sofisticados, los cuales necesitan ser transportables entre las diferentes arquitecturas de
cómputo existentes, y además tener una alta eficiencia. Estos tres elementos: sofisti-
cación, hardware y eficiencia, demandan un nivel de abstracción alto en los códigos sin
pérdida en el desempeño de los mismos.
La mayorı́a de los códigos desarrollados en cómputo cientı́fico se construyen usando
lenguajes estructurados como F77 o C, pues con estos lenguajes se obtiene alto de-
sempeño sin mucho esfuerzo. Pero por otro lado, el nivel de abstracción que se puede
alcanzar es relativamente bajo, y es posible que no exista relación directa de las con-
strucciones del código con las entidades del dominio del problema. Esto último ocasiona
que el código sea de difı́cil lectura y frecuentemente es muy complicado, y en algunas
ocasiones imposible, darle una buena organización, y por lo tanto el mantenimiento y
la extensión de dicho código resultan en procesos largos, tediosos y sobre todo costosos.
Lo anterior inhibe la reutilización de partes del código.
Las complicaciones descritas antes caraterizan lo que se conoce como la crisis del
software : incapacidad de desarrollar software que sea lo suficientemente simple para
ser entendido, mantenido y extendido por cualquier desarrollador, y que además sea
capaz de proveer soluciones a problemas muy complejos, véase [4].
Una manera de evitar los problemas de la crisis del software, es siguiendo alguna
técnica ordenada de desarrollo, como por ejemplo la descrita en [16], en combinación
con paradigmas de programación actuales. En los últimos años se ha observado que me-
diante el uso de los paradigmas de programación de orientación a objetos, programación
genérica y programación en paralelo, es posible construir software con las caracterı́sti-
cas necesarias para reutilizarlo en diferentes situaciones y además con un rendimiento
comparable al que se obtiene con los lenguajes estructurados.

7.1. Programación Orientada a Objetos


El paradigma de programación orientada a objetos (POO) tiene como principal ob-
jetivo el manejo de la complejidad del software. Los conceptos básicos de abstracción,
encapsulación, mensajes, polimorfismo y herencia, permiten desarrollar programas de
fácil manejo y control, tanto para el desarrollador como para el usuario final. Mu-
chos esfuerzos se han realizado para generar sistemas de software cientı́fico usando este
paradigma, véase [25].
40 ÍNDICE

En la POO se construyen abstracciones para modelar alguna entidad del dominio


del problema, y en ellas se encapsula la información relevante de ésta y las funciones
u operaciones que se realizarán sobre dicha información. Una referencia clásica de este
paradigma de programación es el libro de Grady Booch [4].

7.2. Programación Genérica


La POO puede ir más allá mediante la construcción de abstracciones genéricas. Este
es el objetivo principal de la programación genérica (PG), en donde además poder re-
utilizar estas abstracciones en un amplio rango de aplicaciones, se mantiene la eficiencia
de los códigos.
Mediante la construcción de componentes genéricas se reduce el número de lı́neas
de código y se contruyen programas que se pueden adaptar a cualquier tipo de dato
abstracto. Para más información acerca de este paradigma, se recomienda revisar [36].
En el lenguaje C++, la herramienta de plantillas o templates permite construir código
genérico.
En la biblioteca estándar de plantillas de C++ (STL), que es el ejemplo más conocido
de programación genérica, existen estructuras de datos que se conocen como contene-
dores y cumplen con ciertos requisitos para funcionar con algoritmos genéricos a través
de iteradores contenidos en la misma STL [1, 17, 23]. Por ejemplo, el algoritmo ac-
cumulate(), que suma el valor de las entradas de un contenedor, se puede usar como
sigue:

double x[10];
vector<double> y[10];
list<complex<double>> z(10);

a = accumulate(x, x+10, 0.0);


b = accumulate(y.begin(), y.end(), 0.0);
c = accumulate(z.begin(), z.end(), 0.0);

En este ejemplo se observa como el algoritmo accumulate() puede ser usado indepen-
diente de la estructura de datos que se le pasa como argumento.
Usando algoritmos genéricos y modelos, se reduce el código: si se tienen M algoritmos
y N modelos (estructuras de datos), la cantidad de código que se debe construir en el
paradigma de programación estructurada (F77 y/o C) es O(M × N ), mientras que en
la programación genérica la cantidad de código serı́a de O(M + N ).

8. Programación paralela
Las computadoras tradicionales, con un solo procesador, están basadas en el modelo
introducido por John von Neumann [5]. Este modelo consiste de una unidad central de
procesamiento (CPU) y una memoria. Este tipo de computadoras toma una secuencia
8.1 Organización de la memoria 41

simple de instrucciones y opera sobre secuencias simples de datos. Las computadoras de


este tipo se conocen como SISD (Single Instruction Single Data). La velocidad de una
computadora SISD está limitada básicamente por dos factores: velocidad del procesador
y capacidad de memoria. La velocidad del procesador se incrementa según la ley de
Moore [22], pero existe un lı́mite fı́sico: la separación entre transistores no puede ser
menor que la separación entre partı́culas elementales. La capacidad y velocidad de acceso
a la memoria se mejoran mediante diferentes tecnologı́as (que incluyen cache, memory
interleaving y pipelining) pero también existen limitaciones [19].
Una manera alterna para mejorar la velocidad de ejecución es el uso de múltiples
CPUs con su memoria, interconectados de alguna manera. En teorı́a, la razón de proce-
samiento crecerá conforme se incremente el número de procesadores. Las computadoras
que contienen múltiples procesadores se conocen como computadoras parallelas y exis-
ten diferentes tipos que se clasifican de acuerdo a su arquitectura. La clasificación de
Flynn [12] es la más conocida y consiste de las siguientes categorı́as:

SISD (Single Instruction, Single Data) : Computadoras tradicionales que procesan in-
strucciones de manera serial.

SIMD (Single Instruction, Multiple Data) : Computadoras con varios procesadores que
trabajan concurrentemente y ejecutan las mismas instrucciones sobre conjuntos de
datos diferentes.

MISD (Multiple Instruction, Single Data) : Computadoras con varios procesadores


donde cada uno de ellos puede modificar los datos antes de pasar al siguiente
procesador, el cual realiza otro tipo de operaciones sobre los mismos datos.

MIMD (Multiple Instruction,Multiple Data): Computadoras en las que cada proce-


sador es capaz de ejecutar conjuntos de instrucciones diferentes independiente de
los otros procesadores.

8.1. Organización de la memoria


Resolver un problema en un ensamble de procesadores requiere de la interacción
entre procesadores. Esta interacción está determinada por los dos tipos básicos de ar-
quitecturas: memoria compartida y memoria distribuida.

Memoria compartida : Los diferentes procesadores comparten un espacio de memo-


ria global a la cual acceden mediante un canal o bus de datos de alta velocidad.
Este espacio de memoria global permite a los procesadores intercambiar o com-
partir datos. El número de procesadores usado en una arquitectura de este tipo
está limitado por el ancho de banda del bus de datos que conecta a los proce-
sadores.

Memoria distribuida : Cada procesador tiene su propia memoria local o privada.


Todos los procesadores o nodos tienen acceso rápido a su memoria local y pueden
42 ÍNDICE

acceder a la memoria de otros nodos a través de una red, la cual debe permitir
comunicaciones de alta velocidad. Los datos que se intercambian entre los nodos
son enviados como mensajes sobre la red.

8.2. Modelos de programación


La programación en una arquitectura multiprocesador se puede hacer básicamente
de dos maneras:

Paralelismo de memoria compartida, por medio de directivas. Este tipo de pro-


gramación puede ser implementado con HPF (High Performance Fortran) [14] o
con OpenMP [24], donde un código serial se paraleliza adicionando directivas (las
cuales aparecen como comentarios cuando se realiza una ejecución serial) que le
dicen al compilador como distribuir los datos y el trabajo entre los procesadores.
Los detalles de la distribución de los datos y comunicaciones son realizados por
el compilador. Estas implementaciones se realizan usualmente en arquitecturas de
memoria compartida debido a que el espacio global de memoria simplifica grande-
mente la escritura de los compiladores.

Progamación en envı́o de mensajes, mediante llamadas a funciones. Este segundo


enfoque puede implementarse en ambos tipos de arquitectura de memoria. En este
caso el programador es responsable de dividir explı́citamente los datos y el traba-
jo entre los procesadores, ası́ como manejar las comunicaciones entre ellos. Este
enfoque es muy flexible y portable a diferentes tipos de máquinas. Se puede im-
plementar con PVM (Parallel Virtual Machine) [28] y con MPI (Message Passing
Interface) [13, 31].

8.3. Comunicaciones
El hardware que permite a los procesadores comunicarse es un aspecto crı́tico en
ambos tipos arquitecturas de memoria. Desde un punto de vista abstracto no hace mucha
diferencia si se conectan procesadores al bus de memoria o si se conectan computadoras
entre sı́. El papel que juega la red en un cluster de PCs es comparable al papel del bus
de datos en una computadora de memoria compartida.
En general, un programador no necesita conocer la topologı́a de interconección de
los procesadores para construir un programa paralelo. El software que maneja la red y el
hardware de las computadoras paralelas actuales esconden los detalles de bajo nivel de la
red, permitiendo a los códigos enviar trabajos a cualquier procesador de la computadora.
Sin embargo, es útil tomar en cuenta dos aspectos de las redes que son relevantes para
el diseño de un algoritmo.

1. Razón de transferencia de datos. El modelo estándar de una red involucra dos


parámetros:
8.4 Descomposición del problema 43

La latencia (network latency) L(seg), que es el tiempo necesitado para iniciar


la conección entre dos procesadores.
El ancho de banda (bandwidth) B( bytes
seg
), que es la razón a la cual los datos
son intercambiados después de que se ha iniciado una conección.

El tiempo td para transferir b bytes de datos es:

b
td = L + (85)
B

De lo anterior se observa claramente que es mejor enviar un mensaje largo, en vez


de un conjunto de mensajes cortos, aún si la cantidad total de datos transferidos
es la misma.

2. Comunicaciones locales y globales. Los diferentes modelos de programación par-


alela permiten comunicaciones uno a uno, todos a uno y todos a todos. Cada uno
de estos tipos de comunicación P
tiene sus costo. Un ejemplo tı́pico es el producto
punto entre dos vectores u·v = N i=1 ui vi . Si cada uno de los P procesadores tiene
un subconjunto de las componentes de ambos vectores, estos realizan una suma
parcial local sin necesidad de comunicaciones. Pero el resultado final involucra
necesariamente comunicaciones globales, que dependendiendo de P y L pueden
ser más caras que las sumas parciales realizadas en paralelo.

8.4. Descomposición del problema


El primer paso en el diseño de un algoritmo paralelo es descomponer el problema
en subproblemas más simples. Luego, cada uno de estos subproblemas se asignan a
diferentes procesadores en donde se resuelven simultáneamente. Existen básicamente
dos tipos de descomposición: descomposición de dominio y descomposición funcional.

Descomposición de Dominio (DD) : En el modelo de descomposición de dominio o


paralelismo de datos, los datos se dividen en porciones de aproximadamente el mis-
mo tamaño que se mapean a diferentes procesadores. Cada procesador trabaja con
la porción de datos que le fue asignada. En algunos problemas los procesadores
necesitarán comunicarse periódicamente para intercambiar información. Un al-
goritmo en este modelo consiste de una secuencia de instrucciones elementales
aplicadas a los datos. La arquitectura SIMD se acopla a este tipo de paralelismo,
donde copias del mismo código se ejecutan sobre diferentes porciones de datos en
diferentes procesadores. La estrategia DD se emplea comúnmente en algoritmos
para resolver ecuaciones diferenciales parciales con valores a la frontera, donde los
procesadores pueden operar independientemente sobre porciones de datos grandes,
comunicando sólo una pequeña parte de datos (la frontera) en cada iteración.
44 ÍNDICE

Descomposición Funcional (DF) : Frecuentemente, la estrategia de descomposición


de dominio resulta no ser la más eficiente para un programa en paralelo. Esto
sucede cuando las porciones de datos asignadas a los diferentes procesadores re-
quieren de espacios de tiempo muy distintos para ser procesadas. Entonces, el
rendimiento del código está limitado por la velocidad del procesador más lento.
Los procesadores que terminan primero permanecen inactivos hasta que el proce-
sador más lento finaliza su trabajo. En este caso, la descomposición funcional o
paralelismo de tareas es más efectivo que la descomposición de dominio. En el
paralelismo de tareas, el problema se descompone en un número grande de tar-
eas pequeñas, las cuales se van asignando a los procesadores conforme estós estén
disponibles. A los procesadores que terminan su trabajo más rápido simplemente
se les asigna otra tarea. El paralelismo de tareas se implementa en un modelo de
cliente-servidor. Las tareas se distribuyen entre un grupo de procesadores esclavos
por un procesador maestro, el cual también puede realizar algunas tareas. El mod-
elo de cliente-servidor puede ser implementado virtualmente a cualquier nivel del
programa. Por ejemplo, si se desea ejecutar un programa con diferentes entradas,
una implementación cliente-servidor puede ejecutar múltiples copias del código
serial, con el servidor asignando las diferentes entradas a cada proceso cliente.
Conforme cada procesador vaya terminando su tarea se le asignará una nueva
con una entrada diferente. Un ejemplo donde este tipo de descomposición es útil
es en aplicaciones que se ejecutan en tiempo real, que es el caso de sistemas de
visualización interactiva y realidad virtual.

8.5. Métricas y otros factores


El principal objetivo de un programa paralelo es resolver un problema en menos
tiempo comparado con la versión serial del mismo. En el diseño de un código paralelo se
deben considerar algunos factores importantes para obtener el mejor rendimiento posible
dentro de las restricciones del problema que se esté resolviendo. Para medir el beneficio
del paralelismo existen algunas parámetros estándares que son usados ampliamente y
que se describen a continuación.

8.6. Balance de carga


El trabajo total de cálculo que se realizará para resolver el problema, debe ser dividi-
do equitativamente entre el número de procesadores disponibles. Esto se hace fácilmente
cuando el mismo conjunto de operaciones es realizado por todos los procesadores, sobre
diferentes porciones de datos. En el caso de DD el balance de carga es obtenido au-
tomáticamente si las porciones de datos son iguales, aunque en algunos casos se deben
considerar las condiciones en las que esto es válido. Por ejemplo si un procesador debe
resolver la capa lı́mite de un flujo, éste tardará más que otros procesadores que no lo
hacen, aun cuando trabajen sobre porciones de datos del mismo tamaño. En el caso
de la DF, el balance de carga es más importante, pues es necesario asignar tareas del
8.7 Métricas de rendimiento 45

mismo peso a cada procesador para evitar que haya procesadores ociosos, mientras que
otros trabajan al 100 %.

8.7. Métricas de rendimiento


Algunas de las métricas que se utilizan frecuentemente para medir el rendimiento de
programas paralelos son las siguientes:

Tiempo de ejecución : El tiempo de ejecución de un programa serial se denota por


Ts El tiempo de ejecución en paralelo se mide a partir del momento en que el
cálculo en paralelo inicia hasta que el último procesador termina su ejecución, y
se denota por Tp . El tiempo total de ejecución de un programa en paralelo debe
tomar en cuenta el tiempo de cálculo, el tiempo de inactividad y el tiempo de
comunicación.

Aceleración (Speedup) : Es una medida que captura el beneficio relativo de resolver


un problema en paralelo. Se define como la razón del tiempo que se lleva resolver
el problema en un solo procesador entre el tiempo requerido para resolver el mis-
mo problema con np procesadores idénticos. Entonces, la aceleración se calcula
mediante S = Ts /Tp . Una aceleración ideal para np procesadores serı́a S = np .

Eficiencia : La eficiencia mide la fracción de tiempo que un procesador pasa realizando


operaciones del algoritmo paralelo, es decir, sin incluir comunicaciones, tiempos
de espera, etc. Se define como E = S/np . Una eficiencia ideal serı́a E = 1.

Costo : Se define el costo de resolver un problema en paralelo como el producto del


tiempo de ejecución en paralelo Tp por el número de procesadores usados np .
Este número refleja la suma del tiempo que cada procesador gasta resolviendo el
problema. Se tiene un costo óptimo si es es proporcional a Ts .

8.8. Sobreposición de la comunicación y los cálculos


Existen varias formas de minimizar el tiempo inactivo entre los procesadores, y un
ejemplo es sobreponer los cálculos con las comunicaciones. Esto implica ocupar un proce-
sador con una o más tareas nuevas mientras se espera a que termine la comunicación con
otros procesadores. El uso cuidadoso de comunicaciones no bloqueables (non-blocking)
hacen posible lo anterior. Sin embargo, es muy difı́cil, en la práctica, intercalar comuni-
caciones y cálculos.

8.9. Ley de Amdahl


La ley de Amdahl se escribe como sigue:
 
Pp
Tp = Ts + Ps (86)
np
46 ÍNDICE

donde Ps es la porción del programa que se ejecuta en serie; Pp es la porción del programa
que se ejecuta en paralelo; np es número de procesadores. Además se cumple que Ps +
Pp = 1. De la ecuación (86) tenemos que una medición de la aceleración es:
 −1
Ts Pp
S= = + Ps (87)
Tp np
La siguiente tabla muestra el comportamiento de la aceleración de acuerdo con la
ley de Amdahl.

Pp S (2) S (4) S (8) S (16)


80 % 1.6 2.5 3.3 4.0
90 % 1.8 3.0 4.7 6.4
95 % 1.9 3.5 5.9 9.0
98 % 1.96 3.7 7.0 12.3

Cuadro 3: Aceleración en función del número de procesadores y del porcentaje de par-


alelización del código.

Se observa que la aceleración es muy sensitiva a la porción paralela PP y al número


de procesadores. Además, S no crece linealmente conforme el número de procesadores
se incrementa. La recomendación es paralelizar códigos en donde PP ≥ 70 %

8.10. Escalabilidad
En general un número alto de procesadores disminuye la eficiencia. Por otro lado, se
ha observado que en algunos casos el incremento del tamaño del problema incrementa la
eficiencia. Entonces deberı́a ser posible mantener la eficiencia constante cuando, tanto
el número de procesadores ası́ como el tamaño del problema se incrementan simultánea-
mente. Esta habilidad de mantener la eficiencia constante se conoce como escalabilidad.
La escalabilidad de un programa paralelo es la medida de su capacidad de incrementar
la aceleración en proporción al número de procesadores. Se dice que un programa es
escalable cuando su eficiencia es mayor a 0.5.

9. Descomposición de dominio y paralelismo


El término descomposición de dominio (DD) es utilizado de forma diferente por
especialistas en análisis numérico de ecuaciones diferenciales parciales. En general, DD
es un nombre genérico que es usado para describir varios tipos de algoritmos. Asuı́ se
usa el término DD para referirnos al caso en el que el dominio espacial es dividido en
varios bloques o subdominios los cuales pueden asignarse a procesadores independientes.
Existen varias motivaciones para utilizar DD:
9.1 Algoritmo alternante de Schwarz 47

La paralelización es fácil y se puede obtener un buen escalamiento.

Se pueden simplificar problemas en geometrı́as complejas.

Se pueden utilizar diferentes modelos en diferentes subdominios.

Se pueden refinar las mallas localmente en cada subdominio.

Se reducen los requerimientos de hardware (memoria y cpu), pues cada subdominio


es mucho más pequeño que el dominio global.

Se pueden encontrar diferentes clasficaciones para métodos de DD. En general se


tienen dos tipos de métodos en DD: subdominios con traslape y subdominios sin traslape.
En los primeros cada subdominio puede traslaparse con sus vecinos y los algoritmos
empleados se basan en el algoritmo alternante de Schwarz. En los segundos, no hay
traslape y se utiliza la matriz complemento de Schur en el diseño de los algoritmos. Más
detalles de esta clasificación se puede encontrar en [29, 30]

9.1. Algoritmo alternante de Schwarz


El método de Schwarz fue introducido por primera vez en 1870, que aunque no
es originalmente un método numérico, puede ser usado para resolver numéricamente
ecuaciones diferenciales parciales.
Considere el dominio que se muestra en la figura 17, en donde se desea resolver el
siguiente problema:

LΦ = F en Ω, (88)
Φ = G sobre δΩ.

donde L es un operador diferencial, Φ es una variable escalar, F es un término fuente y


G es el valor de Φ en la frontera. En esta descripción solo se consideran condiciones de
frontera de tipo Dirichlet, aunque se pueden incluir otro tipo de condiciones fácilmente.
El dominio se descompone en dos subdominios: Ω = Ω1 ∪ Ω1 . La nomenclatura que
se usa en lo que sigue es la siguiente, véase figura 18:

Los dominios Ω, Ω1 , Ω1 no contienen su frontera.

δΩ es la frontera real de Ω.

Ω̄ = Ω ∪ δΩ es la cerradura del dominio.

Γi es una frontera artificial y es parte de la frontera de Ωi que está en el interior


de Ω.

δΩi \Γi es la frontera de Ωi sin la parte de Γi .


48 ÍNDICE

∂Ω

∂ Ω2

Ω1 Ω2

∂ Ω1

Figura 17: Dominio de estudio y su descomposición

Φni denota la solución aproximada en Ω̄i después de n iteraciones.

Φni |Γj es la restricción de Φni en Γj , donde i 6= j.

∂ Ω1 | Γ1

Γ2 Γ1

∂ Ω2 | Γ2

Figura 18: Dominios usados en el algoritmo alternante de Schwarz.

El método alternante de Schwarz comienza seleccionando una solución inicial en Ω2 ,


que se denota Φ02 . Entonces, se resuelve iterativamente el siguiente par de problemas,
para n = 1, 2, 3, ... :
9.1 Algoritmo alternante de Schwarz 49

LΦn1 = F en Ω1
Φn1 = G sobre ∂Ω1 \Γ1
Φn1 = Φ2n−1 |Γ1 sobre Γ1

para Φn1 , seguido por la solución del problema

LΦn2 = F en Ω2
Φn2 = G sobre ∂Ω2 \Γ2
Φn2 = Φn1 |Γ2 sobre Γ2

De esta manera, en la mitad de cada iteración del método alternante de Schwarz, se


resuelve un problema en el subdominio Ωi con la condición g en la frontera real ∂Ωi \Γi ,
y valores de la iteración anterior en la frontera Γi .
Ss supone ahora que las ecuaciones han sido discretizadas usando algún método,
volumen finito por ejemplo. Entonces para el vector Φi se tiene el vector discreto de
coeficientes:
 
φΩi
φi =  φ∂Ωi \Γi  (89)
φΓi
Los coeficientes φ∂Ωi \Γi son conocidos, y están dados por los valores del dominio Ωj
con i 6= j. Los vectores discretos correspondientes a F y G son fi y gi respectivamente.
La matriz de coeficientes Ai es la discretización del operador L en Ωi . Esta matriz tiene
tres componentes: A = (AΩi , A∂Ωi \Γi , AΓi ). La forma discreta de φni |Γj la escribimos
como Wjn . Entonces, en forma discreta, un algoritmo alternante de Schwarz se escribe
como sigue:

Algoritmo alternante de Schwarz

01 W10 ← 0.
02 For n = 1, ...
03 Resolver para φn1 :
04 A1 φn1 = f1 en Ω1
05 φn∂Ω1 \Γ1 = g1 sobre ∂Ω1 \Γ1
06 φnΓ1 = W1n−1 sobre Γ1
07 W2n ← Φn1 |Γ2
08 Resolver para φn2 :
09 A2 φn2 = f2 en Ω2
10 φn∂Ω2 \Γ2 = g2 sobre ∂Ω2 \Γ2
11 φnΓ2 = W2n sobre Γ2
50 ÍNDICE

12 W1n ← Φn2 |Γ1


13 Checar la convergencia:
14 Si ||W1n − W1n−1 || ≤ tolΓ1 y ||W2n − W2n−1 || ≤ tolΓ2 Fin.
15 Si ||φn1 − φ1n−1 || ≤ tolΩ1 y ||φn2 − φ2n−1 || ≤ tolΩ2 Fin.
16 End For

Nótese que este algoritmo es serial, en donde cada iteración se divide en dos partes:
en la primera se resuleve el problema en el Ω1 , y en la segunda en el Ω2 . Esto corresponde
a una iteración del tipo Gauss-Seidel por bloques, en donde cada bloque corresponde
a un subdominio. Por lo tanto, un algoritmo paralelo se obtiene usando las mismas
estrategias usadas en la paralelización del algoritmo de Gauss-Seidel, véase [29].
Otra manera es usar una versión del algoritmo arriba descrito en términos de una
iteración de Jacobi por bloques. En este algoritmo, se suponen conocidas las condiciones
en la fronteras internas, Γi , y se resuelve de manera simult’anea un problema similar
en cada subdominio. Un algoritmo paralelo de este caso, para K subdominios, es el que
sigue:
Algoritmo paralelo alternante de Schwarz
01 Particionar el dominio
02 Definir el problema en cada subdominio
03 W10 ← 0, ..., WK0 ← 0
04 Parallel For k = 1, ..., K
05 For n = 1, ...
06 Resolver para φnk :
07 Ak φnk = fk en Ωk
08 φn∂Ωk \Γk = gk sobre ∂Ωk \Γk
09 φnΓk = Wkn−1 sobre Γk
10 Checar la convergencia :
11 Si ||Wkn − Wkn−1 || ≤ tolΓk Fin
12 Si ||φnk − φkn−1 || ≤ tolΩk Fin
13 End For
14 Wait
15 Enviar φnk |Γk −1 a los subdominios vecinos
16 Wk0 ← φnnb |Γk
17 End Parallel For

9.2. Partición del dominio


Para resolver un problema en paralelo, primero se genera el dominio global de estudio,
después se determina el tipo de partición conveniente. La partición se aplica sobre el
dominio global y se definen las condiciones en las interfases para cada subdominio. Un
esquema de una partición tı́pica se muestra en la figura 19.
9.2 Partición del dominio 51

Subdominios
Dominio global 2 3

2 3

Partición

1 4
x

1 4
(a)

Puntos de la malla
Intercambio de información Puntos en la frontera real
Puntos en las fronteras "fantasma" (ghost)

(b)

Figura 19: Descomposición tipo tablero de ajedrez y correspondencia de las fronteras


fantasma.

La partición mostrada en la figura 19 se puede construir fácilmente dentro del entorno


de programación de envı́o de mensajes conocido como MPI [31, 13]. Se utiliza un arreglo
cartesiano de tal manera que se asignan coordanadas a cada subdominio, de tal manera
que éste último conocerá de antemano conocer los subdominios vecinos con los que se
debe comunicar, véase figura 20.
52 ÍNDICE

Topología Virtual

2 5 8
(0,2) (1,2) (2,2)

Comunicación entre subdominios


(I, J+1)

1 4 7 (I−1, J) (I, J) (I+1, J)


(0,1) (1,1) (2,1)

(I, J−1)

(I, J) Coordenadas de la Topología Virtual

0 3 6
J
(0,0) (1,0) (2,0)

Figura 20: Topologı́a Virtual (TV) en 2D generada por la partición por bloques. Se
muestra la numeración de los subdominios en términos de las coordenadas de la TV.
10 Casos de estudio 53

10. Casos de estudio


En esta sección se presentan algunos ejemplos de solución numérica de problemas
de convección natural usando el método de volumen finito presentado anteriormente.
Para este efecto se construyó el software TUNA::FVM (Template Units for Numerical
Applications:: Finite Volume Method), el cual puede ser obtenido gratuitamente en
http://www.dci.dgsca.unam.mx/lmcs o enviando un correo a luiggi@unam.mx.

10.1. Convección forzada


La ecuación a resolver es la siguiente:
∂T ~ ∇T = ∇2 T.
+U (90)
∂t
~ = (u, v, w) es conocida y tiene la forma:
en donde la velocidad U

~ = (−A cos(πy) sin(πx), A sin(πy) cos(πx), 0)


U (91)
que representa una celda convectiva que gira en el sentido horario y además cumple con
la ecuación de continuidad. Las condiciones de frontera para el caso de dos dimensiones
son las que se muestran en la figura 21.
∂T
=0
∂y

T = 0.5 T = −0.5

∂T
=0
∂y

Figura 21: Dominio de estudio y condiciones de frontera para el problema de convección


forzada en 2D.

En dos dimensiones para una malla de 242 se hizo una comparación entre los tres
esquemas CDS, Upwind y QUICK. El resultado se presenta en la figura 22 en donde
se muestran contornos de temperatura y una comparáción entre los tres esquemas en
y = 0,5.
54 ÍNDICE

0.5
Upwind
0.3 CD
0.4 0.4 Quick

0.2
0.3

0.2
0.1
0.1

T
0
0.0

-0.1
−0.1
-0.2

-0.3
−0.2
-0.4
−0.3 −0.4
-0.5
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

eje x
(a) (b)

Figura 22: (a) Contornos de temperatura. (b) Corte en y = 0,5, se observa que para los
esquemas CD y QUICK el resultado es muy similar.

10.2. Convección Natural: régimen laminar


En este ejemplo se muestra la solución de un problema de convección natural en
un prisma cúbico. Las paredes verticales se mantienen a una diferencia de temperatura
constante, mientras que las paredes horizontales son adiabáticas. Las ecuaciones que se
deben resolver son (6), (7) y (8). En este caso se utiliza el algoritmo SIMPLEC para
resolver el problema no lineal y desacoplar la presión y velocidad de las ecuaciones de
Navier-Stokes.
La figura 23 muestra el resultado en tres dimensiones para una malla de 483 , un paso
en el tiempo de 10−4 , un número Prandtl de 0.71 que corresponde al aire y un número
de Rayleigh de 105 .

10.2.1. Benchmark: de Vahl Davis


En este ejemplo se resuelve el problema descrito en el benchmark publicado por
de Vahl [8]. Es un problema de convección natural en dos dimensiones, en donde se
considera el aire como fluido de estudio cuyo número de Prandtl es igual a 0.71. Las
cantidades que se calculan y comparan son:

Umax velocidad horizontal máxima en la lı́nea x = 0.5.

y coordenada vertical donde ocurre Umax .

Vmax velocidad vertical máxima en la lı́nea y = 0.5.


10.3 Convección Natural: régimen turbulento 55

Figura 23: Convección natural en tres dimensiones.

x coordenada horizontal donde ocurre Vmax .

N u Número de Nusselt en la pared vertical x = 0

El problema se resuelve en una malla de 812 y los resultados numéricos se muestran


en la tabla 4.
La diferencia porcentual máxima de todas las cantidades calculadas es de 1.7 %.
Contornos de velocidad y temperatura, ası́ como varias trayectorias de partı́culas se
muestran en la figura 24.

10.3. Convección Natural: régimen turbulento


En este ejemplo se resuelve el modelo de turbulencia descrito en la sección 1.5. El
dominio del problema se muestra en la figura 25.
Las condiciones de frontera que se consideran son:
56 ÍNDICE

Ra = 103 Ra = 104 Ra = 105 Ra = 106


dVD[8] BibClas dVD[8] BibClas dVD[8] BibClas dVD[8] BibClas
Umax 3.649 3.649 16.178 16.184 34.722 34.824 64.630 65.451
y 0.813 0.814 0.823 0.827 0.855 0.864 0.850 0.852
Vmax 3.697 3.698 19.617 19.633 68.590 68.684 219.360 218.098
x 0.178 0.179 0.119 0.117 0.066 0.068 0.0379 0.0375
Nu 1.117 1.118 2.238 2.248 4.509 4.546 8.817 8.970

Cuadro 4: Comparación con el benchmark publicado por de Vahl Davis [8]. Los resul-
tados numéricos fueron obtenidos usando el esquema QUICK, en una malla de 81 × 81.

112
80
−27
64
16 −27
48
32 0
0.0 0

−32 0
27
−48
−16
−64 −80 27
−112

(a) (b)

0.44 0.37
0.31
0.25
0.19
0.12
0.06
0.0 2
−0.06 3
−0.12 1
−0.19
−0.25

−0.31
−0.37 −0.44
(c) (d)

Figura 24: Resultado para Ra = 106 con el esquema QUICK en una malla de 812 . (a)
Componente u de la velocidad, (b) componente v de la velocidad, (c) temperatura y (d)
Trayectoria de partı́culas: 1=(0.247,0.370), 2=(0.197,0.556), 3=(0.827,0.444).

u=0 y T =0.5 para x=0 0 ≤ y ≤ Ly 0 ≤ z ≤ Lz ,


u=0 y T =-0.5 para x = Lx 0 ≤ y ≤ Ly 0 ≤ z ≤ Lz ,
u=0 y ∂T /∂z = 0 para 0 ≤ x ≤ Lx 0 ≤ y ≤ Ly z = 0, Lz ,
u=0 y ∂T /∂y = 0 para 0 ≤ x ≤ Lx y = 0, Ly 0 ≤ z ≤ Lz .
10.3 Convección Natural: régimen turbulento 57

Lx

Ly
TH TC
TH > TC

Lz = 2 Lx = 2Ly

Lz

Figura 25: Geomtrı́a del dominio donde se resuelve el problema de turbulencia

Este problema ha sido resuelto numéricamente usando diferentes modelos de turbu-


lencia por otros autores, véase por ejemplo [15, 27]. Además, existen datos experimen-
tales con los que se pueden comparar los resultados numéricos [34, 35]. En este caso
se realizaron dos ejemplos para mallas de 64 × 64 × 48 y 96 × 96 × 64. Se utilizó el
esquema CDS en todas las ecuaciones, pues es menos dispersivo que el Quick. La figura
26 muestra el número de Nusselt calculado en la pared derecha (el resultado es similar
para la pared izquierda).
Para hacer una comparación con los resultados experiementales, se calculó el número
de Nusselt en las cuatro paredes y se graficó el resultado en sentido horario. En la figura
27 los puntos representan los resultados numéricos publicados en [34] y la lı́nea continua
es el número de Nusselt que se obtuvo en una malla de 160 × 160 × 80 volúmenes.
Como se puede apreciar, el modelo captura la forma cualitativa de la transferencia de
calor local, pero falla en la parte de los picos que se generan cerca de las esquinas. La
diferencia cuantitativa que existe entre los resultados numéricos y los experimentales
se debe a que, se utiliza una malla gruesa que no resuelve adecuadamente los detalles
cerca de las paredes. Para capturar y resolver la capa lı́mite que se genera cerca de las
paredes, es necesario agregar más puntos en esas zonas, y esto se puede lograr mediante
el uso de una malla no uniforme.
58 ÍNDICE

50
64 X 64 X 48
96 X 96 X 64

40

Nusselt
30

20

10
0 5000 10000
Iteraciones

Figura 26: Número de nusselt para mallas de 64 × 64 × 48 y 96 × 96 × 64.

<Nu>
150

100

50

-50
0 1 2 3 4
η

Figura 27: Número de nusselt promedio alrededor de las cuatro paredes para una malla
de 160 × 160 × 80.

Un ejemplo del flujo dentro de la cavidad se da en la figura 28 donde se grafica el


flujo promedio y el flujo secundario en la esquina superior izquierda del plano z =0.5.
La figura 29 muestra la distribución de la viscosidad turbulenta, véase ecuación (21).
Las figuras 28 y 29 demuestran que la mayorı́a del proceso turbulento está presente en
la capa lı́mite cerca de las paredes.
10.4 Convección forzada en paralelo 59

1 51
1
0.3

0.351
0.
35
1
0.351

0.351
0.351
0.351

0.351
−0.866

1
35
0.
1.57
0.351

51
.3
0.3510
−0.86
60.351

0.5 0.5
(a) (b)

Figura 28: (a) Flujo secondario instantáneo e isolines de la viscosidad turbulenta νt . (b)
flujo promedio.

Figura 29: Distribución de la viscosidad turbulenta. Razón de aspecto de la cavidad


1:1:0.5, Ra = 1.59 ×109 and Pr = 0.7.

10.4. Convección forzada en paralelo


En esta ejemplo se muestra la solución del problema de convección forzada en par-
alelo usando la estratégia descrita en la sección 7. El resultado de este ejemplo, en dos
dimensiones, se muestra en la figura 30, donde se puede observar el campo de temper-
aturas calculado en 9 subdominios. La malla utilizada fue de 48 × 48.
El mismo problema se resolvió en tres dimensiones en una malla de 128 × 128×.
Este ejemplo se utilizó para hacer un cálculo de la aceleración en función del número de
60 ÍNDICE

Figura 30: Resultado del cálculo en dos dimensiones para 9 procesadores.

procesadores. El resultado de este experimento numérico se muestra en la tabla siguiente.

N. Proc. Tiempo (segs.) Aceleración Eficiencia Costo


1 9121.73 1.0 1.0 9121.73
2 4680.84 1.95 0.97 9361.68
4 2559.71 3.56 0.89 10238.84
6 1555.19 5.87 0.98 9331.14
8 1230.70 7.41 0.92 9845.60
9 1065.94 8.56 0.95 9593.46
12 873.16 10.45 0.87 10477.92

Cuadro 5: Desempeño para la solución en paralelo del problema de convección natural


forzada en 3D en una computadora SGI ONIX 350 con 12 procesadores R16K. El modelo
de memoria de esta computadora es de memoria compartida (NUMAFlex).
REFERENCIAS 61

Referencias
[1] M. H. Austern. Generic Programming and the STL: Using and Extending the C++
Standard Template Library. Addison–Wesley, 1999.

[2] R. Bastiaans, C. Rindt, F.Ñieuwstadt, and A. van Steenhoven. Direct and large–
eddy simulation of the transitional of two– and three–dimensional plane plumes in
a confined enclosure. Int. J. Heat and Mass Trans, 43:2375–2393, 2000.

[3] G. K. Batchelor. An Introduction to Fluid Dynamics. Cambridge University Press,


1970.

[4] G. Booch. Object-Oriented Analysis and Design with Applications. Benjamin–Cum-


mings, Redwood City, CA, 1994.

[5] A. Burks, H. Goldstine, and J. von Neumann. Preliminary Discussion of the Log-
ical Design of an Electronical Computing Instrument, volume 5 of In: Taub, A.H.
(Editor), Collected Works of John von Neumann. New York, Macmillan, 1963,
1946.

[6] S. Chandrasekhar. Hydrodinamic and Hidromagnetic Stability. Clarendon Press,


1961.

[7] I. G. Currie. Fundamentals Mechanics of Fluids. McGraw–Hill, 1974.

[8] G. de Vahl Davis. Natural convection of air in a square cavity: a bench mark
numerical solution. Int J Numer Methods Fluids, 3:249–264, 1983.

[9] J. V. Doormal and G. D. Raithby. Enhancements of the simple method for pre-
dicting incompressible fuiod flows. Num. Heat Transfer, 7:147–163, 1984.

[10] T. Eidson. Numerical simulation of the turbulent rayleigh–bénard problem using


subgrid modelling. J. Fluid Mech, 158:245–268, 1985.

[11] J. H. Ferziger and M. Peric. Computational Methods for Fluid Dynamics. Springer–
Verlag, second edition edition, 1999.

[12] M. J. Flynn. Some computer organizations and their effectiveness. IEEE Transac-
tions on Computers, C-21(9):948–960, 1972.

[13] W. Gropp, S. Huss-Lederman, A. Lumsdaine, E. Lusk, B.Ñitzberg, W. Sapir, and


M. Snir. MPI: The Complete Reference: Volume 2, The MPI-2 Extensions. The
MIT Press, Cambridge, Massachusetts, London, second edition edition, 1998.

[14] High performace fortran. http://www.crpc.rice.edu/HPFF/.

[15] K. Hsieh and F. Lien. Numerical modelling of buoyancy-driven turbulent flows in


enclosures. Int. J. Heat and Fluid, 25:659 – 670, 2004.
62 REFERENCIAS

[16] I. Jacobson, G. Booch, and J. Rumbaugh. The Unified Software Development


Process. Addison–Wesley, 1999.
[17] N. M. Josuttis. The C++ Standard Library: A Tutorial and Reference. Addison–
Wesley, 1999.
[18] J. Kim, P. Moin, and R. Moser. Turbulence statistics in fully developed chanel flow
at low reynolds number. J. of Fluid Mech., 177:133–166, 1987.
[19] V. Kumar, A. Grama, A. Gupta, and G. Karypis. Introduction to Parallel Com-
puting. Benjamin–Cummings, Redwood City, CA, 1994.
[20] B. P. Leonard. A stable and accurate conevctive modelling procedure based on
quadratic upstream interpolation. Comp. Meth. in App. Mech. and Engineering,
19:59–98, 1979.
[21] M. Lesieur and O. Métais. New trends in large-eddy simulations of turbulence.
Annu. Rev. Fluid Mech., 28:45–82, 1996.
[22] G. Moore. Cramming more components onto integrated circuits. Electronics, 38(8),
1965.
[23] D. R. Musser, G. J. Derge, and A. Saini. STL Tutorial and Reference Guide.
Addison–Wesley, 2001.
[24] Openmp : Simple, portable, scalable smp programming. http://www.openmp.org/.
[25] The object-oriented numerics page. http://www.oonumerics.org/.
[26] S. V. Patankar. Numerical Heat Transfer and Fluid Flow. McGraw–Hill, 1980.
[27] S.-H. Peng and L. Davidson. Large eddy simulation for turbulent buoyant flow in
a confined cavity. Int. J. Heat and Fluid, 22:323–331, 2001.
[28] Parallel virtual machine. http://www.csm.ornl.gov/pvm/pvm home.html.
[29] Y. Saad. Iterative Methods for Sparse Linear Systems. Boston: PWS Publishing
Company, 2000.
[30] B. F. Smith, P. E. Bjorstad, and W. D. Gropp. Domain Decomposition: Parallel
Multilevel Methods for Elliptic Partial Differential Equations. Cambridge Univer-
sity Press, 1996.
[31] M. Snir, S. Otto, S. Huss-Lederman, D. Walker, and J. Dongarra. MPI: The Com-
plete Reference: Volume 1, The MPI Core. The MIT Press, Cambridge, Mas-
sachusetts, London, second edition edition, 1998.
[32] H. Tennekes and J. L. Lumley. A Firts Course in Turbulence. MIT Press Camb-
drige, 1972.
REFERENCIAS 63

[33] Thomas B. Gatski (NASA Langley Research Center), M. Youssuff Hussaini


(ICASE), and Jonh L. Lumley (Cornell University), editors. Simulation and Mod-
eling of Turbulent Flows, New York, 1996. Oxford University Press.

[34] Y. Tian and T. Karayiannis. Low turbulence natural convection in an air filled
square cavity, part i: The thermal and fluid flow fields. International Journal of
Heat and Mass Transfer, 43:849 – 866, 2000.

[35] Y. Tian and T. Karayiannis. Low turbulence natural convection in an air filled
square cavity, part ii: The thermal and fluid flow fields. International Journal of
Heat and Mass Transfer, 43:867 – 884, 2000.

[36] D. Vandevoorde and N. M. JosuttisOB. C++ Templates. Addison–Wesley, 2003.

[37] H. Versteeg and W. Malalasekera. An introduction to computational fluid dynamics:


The finite volume method. Longman, 1995.

También podría gustarte