You are on page 1of 35

DINAMICA DE FLUIDOS

COMPUTACIONALES
TALLER 1: DIFERENCIAS FINITAS
VALERIA DENISSE BENALCAZAR REALPE

16 de abril de 2018
RESUMEN

En el primer caso e determino la primera y segunda derivada de una función analítica


mediante esquemas numéricos. Para su solución se aplico diferencias nitas centradas
de segundo, cuarto y sexto grado de exactitud. En el segundo caso, se aplicaron tres
esquemas de diferencias nitas para encontrar la solución numérica de la ecuación de
velocidad en estado estacionario, incluyendo una malla no estructurada. En el tercer caso
se encontró la solución numérica para el la ecuación de velocidad en estado transitorio,
utilizando esquema de Euler hacia adelante y Runge Kutta para el avance temporal. En
los tres casos se analiza el efecto del tipo de esquema utilizado, su grado de exactitud,
estabilidad..
INTRODUCCIÓN

El método de diferencias nitas es uno de los métodos numéricos mas utilizados para
encontrar la solución numérico de las ecuaciones que gobiernan el modelo matemático de
un sistema continuo, como en el caso del ujo de uidos. A manera de descripción general,
en una solución obtenida por diferencias nitas, las derivadas son remplazadas por apro-
ximaciones en diferencias nitas convirtiendo un problema de ecuaciones diferenciales de
solución compleja a un problema algebraico que tiene una complejidad mucho menor en
su resolución, generalmente es necesario hacer uso del álgebra matricial. La aplicación
de los métodos numéricos en la resolución de problemas de ujo comienza con el modelo
matemático que describe su comportamiento, el cual muchas veces es de gran comple-
jidad, y su solución mediante las diferencias nitas comienza con una discretización del
dominio, del cual se obtienen puntos llamados nodos en los cuales en los cuales la ecua-
ción es aproximada remplazando las derivadas parciales por aproximaciones en términos
de los valores nodales de la función. Mediante la resolución del esquema podemos obte-
ner una solución del problema cuya aproximación a la real dependerá del principalmente
de las consideraciones que se tomaron para reducir el problema a un sistema de fácil
tratamiento, del grado de exactitud del esquema utilizado, del tipo de malla utilizado,
así como la capacidad de procesamiento de la herramienta utilizada para la solución, la
cual introduce un error adicional a la solución. Debe de considerarse que el método de
diferencias nitas presenta algunos inconvenientes en garantizar la conservación si no se
discretiza adecuadamente el dominio de mallas no uniformes.

3
1 EXACTITUD DE ESQUEMAS DE DIFERENCIAS

FINITAS

1.1. ESQUEMAS DE DIFERENCIAS FINITAS

El esquema de diferenciación utilizado para obtener la f 0 (x)y f 00 (x) de la función


f (x)es el centrado de segundo, cuarto y sexto grado de exactitud, para los nodos internos.
Se utilizo un esquema de Euler hacia adelante para iniciar la aproximación y un Euler
hacia atrás para nalizarla, ambos esquemas con un grado de exactitud de cuarto grado.

f (x) = exp (sin(x)) + 0,5 cos(k1 x) − 0,8 sin(k2 x) (1.1.1)

Primera derivada numérica

f 0 (x) = cos(x) exp (sin(x)) − 0,5k1 sin(kx) − 0,8k2 cos(k2 x) (1.1.2)

Segunda derivada numérica

f 00 (x) = (cos(x))2 − sin(x) exp (sin(x)) − 0,5k12 cos(k1 x) + 0,8k22 sin(k2 x) (1.1.3)
 

1.1.1. Primera derivada

Los esquemas de segundo y cuarto orden se obtuvieron mediante el desarrollo de las


series de Taylor a diferentes avances espaciales, el esquema de sexto orden se lo obtiene
de literatura. Las series de Taylor utilizadas son:

M x2 00 M x3 000 M x4 4 M x5 5 M x6 6 M x7 7
fi+1 = fi + M x f 0i + fi + fi + fi + fi + fi + fi (1.1.4)
2! 3! 4! 5! 6! 7!

M x2 00 M x3 000 M x4 4 M x5 5 M x6 6 M x7 7
fi−1 = fi − M x f 0i + fi − fi + fi − fi + fi − fi
2! 3! 4! 5! 6! 7!
(1.1.5)

4
(2 M x)2 00 (2 M x)3 000 (2 M x)7 7
fi+2 = fi +2 M x f 0i + fi + fi +....+(2 M x)6 fi 6 + fi (1.1.6)
2! 3! 7!

(2 M x)2 00 (2 M x)3 000 (2 M x)6 6 (2 M x)7 7


fi−2 = fi −2 M x f 0i + fi − fi +....+ fi − fi (1.1.7)
2! 3! 6! 7!

(3 M x)2 00 (3 M x)3 000 (3 M x)7 7


fi+3 = fi +3 M x f 0i + fi + fi +....+(3 M x)6 fi 6 + fi (1.1.8)
2! 3! 7!

(3 M x)2 00 (3 M x)3 000 (3 M x)7 7


fi−3 = fi −3 M x f 0i + fi − fi +....+(3 M x)6 fi 6 + fi (1.1.9)
2! 3! 7!
Esquema centrado de 2do orden.

El esquema se obtiene de restar la ecuación 1.1.4 de la 1.1.5. Para obtener el segundo


orden es necesario que el desarrollo de la serie se lo realice unicamente hasta la tercera
derivada, para obtenerse:

0 fi+1 − fi−1 M x2 000
fi = + fi (1.1.10)
 2Mx 3!

Esquema centrado de 4to orden

Para obtener el esquema centrado de 4 orden se utilizan un molécula de 5 nodos, utili-


zando las ecuaciones de la 1.1.4 a la 1.1.7, las cuales al ser sumadas y/o restadas deben
de dar como resultado la primera derivada de cuarto grado de exactitud, para esto de-
ben eliminarse los términos de segunda, tercera y cuarta derivada para su eliminación se
plantea un sistema de ecuaciones en los cuales estos términos deben de ser igual a cero
con la nalidad de encontrar los coecientes con los cuales al ser multiplicadas y sumadas
den como resultado el esquema esperado.
Del sistema de ecuaciones planteado se obtiene el siguiente sistema de ecuaciones que es
resuelto mediante un sistema matricial.
    
1,0 −1,0 2 −2 a −1
 1/4 1/4 2 2  b  0 
 1/6 −1/6 4/3 −4/3  c  =  0 
     (1.1.11)
1/24 1/24 2/3 2/3 d 0
La solución del sistema de ecuaciones 1.1.11 utilizando el método LU se obtienen los
siguientes coecientes:

a = −2/3, b = 2/3, c = 1/12, d = −1/12

5
Se realiza las siguientes operaciones para obtener el esquema deseado
0
fi = a fi+1 + b fi−1 + c fi+2 + d fi−2 (1.1.12)

0 4 M x5 5 2 1
− M xfi + fi = (fi−1 − fi+1 ) + (fi+2 − fi−2 ) (1.1.13)
5! 3 12

0 fi−2 − 8 fi−1 + 8 fi+1 − fi+2 M x4 5
fi = + fi (1.1.14)
 12 M x 30

Esquema centrado de 6to orden

El esquema de sexto orden se obtiene de [2]:



0 −fi−3 + 9 fi−2 − 45 fi−1 + 45 fi+1 − 9 fi+2 + fi−3
fi = + (M x6 )O (1.1.15)

60 M x

1.1.2. Segunda derivada

Para obtener la segunda derivada de los esquemas de segundo cuarto, sexto se multipli-
ca aplica la denición de derivada en la cual D corresponde a la matriz de diferenciación
la cual esta denida por los coecientes que conforman la matriz del sistema 1.1.11.
Aplicando la denición de derivación obtenemos:

f 0 (x) = D f (x) (1.1.16)

f 00 (x) = 2 D f (x) (1.1.17)

f 00 (x) = D0 f (x) (1.1.18)

D' corresponde al producto de la matriz de diferenciación de la primera derivada por


2.0. De esta forma se obtienen los esquemas para la segunda derivada
Esquema centrado de 2do orden.


00 fi+1 − 2 fi + fi−1
fi = + (M x2 )O (1.1.19)

M x2
Esquema centrado de 4to orden.

6

00 −fi−2 + 16 fi−1 − 30 fi + 16 fi+1 − fi+2
fi = + (M x4 )O (1.1.20)

12 M x2

Esquema centrado de 6to orden.

 

0 1 3 3 49 3 3 1
fi = fi−3 − fi−2 + fi−1 − fi + fi+1 − fi+2 + fi−3 +(M x6 )O (1.1.21)
 90 20 2 18 2 20 90 

7
2 ECUACIÓN DE DIFUSIÓN-CONVENCIÓN 1D

Se tiene la siguiente ecuación de difusión- convencional estacionaria:


 
∂ρuφ ∂ ∂φ
= Γ (2.0.1)
∂x ∂x ∂x
El sistema esta condicionado en las fronteras por las condiciones de Dirichlet dadas por:

φ(x = 0) = φ0 (2.0.2)

φ(x = L) = φL (2.0.3)

considerando que L = 1,0, ρ = 1,0, u = 1,0, Γ = 0,01667, φ0 = 0, φL = 1,0,


El sistema descrito en el modelo 2.0.1se resolverá mediante métodos numéricos en espe-
cico con esquemas de diferencias nitas upwind, centradas uniformes y no uniformes de
segundo grado de exactitud para obtener el perl φ0 = (x).

El uido es incompresible por lo tanto ρ = cte

El termino difusivo es constante a lo largo del dominio Γ = cte

La velocidad es constante u = cte


   2 
∂φ ∂ φ
ρu =Γ (2.0.4)
∂x ∂x2
 2   
∂ φ ρuL ∂φ
L = (2.0.5)
∂x2 Γ ∂x
ρuL
Pe = (2.0.6)
Γ

P e = 59,988 (2.0.7)

∂2φ
   
∂φ
= Pe (2.0.8)
∂x2 ∂x

8
Solución analítica:

La ecuación diferencial 2.0.8se resuelve con el método por sustitución y utilizando las
condiciones de frontera para determinar el valor de las constantes que resultan en la
solución general.

φ00 − P eφ0 = 0 (2.0.9)

φ0 = y

y 0 − P ey = 0

φ = c1 exp(P e x) + c2

Evaluando en las condiciones de frontera

0 = c1 + c2

1 = c1 exp(P eL) + c2
1
c1 = exp(P e)−1

exp(P e/L x)
φ= exp(P e)−1

2.1. MODELO UPWIND

Para el modelo upwind se utiliza CDS para el termino difusivo, para el termino con-
vectivo depende de la dirección de la velocidad, el cual puede ser determinarse con Euler
hacia atrás cuando la dirección es positiva y con Euler hacia atrás cuando la dirección
sea positiva[1], en las condiciones del problema de ujo la velocidad es positiva. por lo
tanto se discretiza el termino convectivo con el esquema de Euler hacia atrás.
 
∂φ φi−1 − φi
≈ (2.1.1)
∂x Mx
 2 
∂ φ φ − 2 φi + φi−1
2
≈ i+1 (2.1.2)
∂x M x2
Sustituyendo las ecuaciones 2.1.1 y 2.1.2 en la ecuación 2.0.8obtenemos el modelo upwind:

φi+1 − 2 φi + φi−1 φ − φi
2
− P e i−1 =0 (2.1.3)
Mx Mx

φi+1 − (2 + a)φi + (a + 1)φi−1 = 0 (2.1.4)

a =M x P e

9
El desarrollo del algoritmo computación para modelo 2.1.4 se aplica para el nodo 2 al
N-1, puesto que se las condiciones de frontera sustituyen las ecuaciones para el nodo 1 y
el N. Obteniéndose la siguiente sistema discreto:

N=2

φ3 − (2 + a)φ2 = 0

N=N-1

−(2 + a)φN −1 + (a + 1)φN −2 = −1

   
φ2 0

−(2 + a) 1
 .   . 
 (a + 1) −(2 + a)
 1 
 ..   .. 
(a + 1) −(2 + a) 1   ..   . 
   
  .. 

.

. . .

.. .. ..
..  =  .. 
 
    

(a + 1) −(2 + a) 1
 .   . 
 .   . 
   
  ..    .. 

 (a + 1) −(2 + a) 1
(a + 1) −(2 + a) φN −1 −1
(2.1.5)
El sistema 2.1.5 se resolvió mediante el método de LU, con el cual se obtiene el perl de
velocidad a lo largo del dominio.

2.2. MODELO CENTRADO UNIFORME

Para el modelo utiliza CDS de segundo grado tanto para el termino difusivo como para
el termino convectivo.
 
∂φ φi+1 − φi−1
≈ (2.2.1)
∂x 2Mx
 2 
∂ φ φ − 2 φi + φi−1
≈ i+1 (2.2.2)
∂x2 M x2
Sustituyendo las ecuaciones 2.2.1 y 2.2.2 en la ecuación 2.0.8obtenemos el modelo cen-
trado uniforme para el problema de ujo:

φi+1 − 2 φi + φi−1 φ − φi
2
− P e i−1 =0 (2.2.3)
Mx 2Mx

(1 − a)φi+1 − 2φi + (a + 1)φi−1 = 0 (2.2.4)


Mx P e
a= 2

10
El desarrollo del algoritmo computación para modelo 2.2.4 se aplica para el nodo 2 al
N-1, puesto que se las condiciones de frontera sustituyen las ecuaciones para el nodo 1 y
el N. Obteniéndose la siguiente sistema discreto:

N=2

(1 − a)φ3 − 2φ2 = 0

N=N-1

−2φN −1 + (a + 1)φN −2 = −(1 − a)

   
φ2 0

−2 (1 − a)
(1+a) −2 (1-a) ..   ... 
.
  

+ (1-a)

(1 a) −2  ..   .. 
   
 .   . 

. . ..

.. .. (2.2.5)
  
.  .  =  . 

  ..   .. 

+ (1-a)

(1 a) −2

 .  .
   
(1+a) (1-a)  ..   .. 

−2
   
(a + 1) −2 φN −1 (a − 1)

El sistema 2.2.5 se resolvió mediante el método de LU, con el cual se obtiene el perl de
velocidad a lo largo del dominio.

2.3. MODELO CENTRADO NO UNIFORME

La característica de un modelo centrado no uniforme, radica en el espaciamiento de


los nodos que conforman la malla, esta va varia respecto a una relación de expansión
geométrica (re) o una relación con respecto a una malla base ya existente. La relación de
expancion corresponde a la relación entre el un punto i a uno i+1 respecto al tamaño de
paso del intervalo anterior:
M xi+1
re = (2.3.1)
M xi

M xi+1 = xi+1 − xi (2.3.2)

M xi = xi − xi−1 (2.3.3)
El esquema centrado no uniforme se obtiene del desarrollo de la serie de Taylor extendido
y aplicando el mismo procedimiento descrito en el caso 1 obteniendose de esta manera
la discretizacion tanto para el termino difusivo como para el termino convectivo.
 
∂φ φi+1 − φi−1
≈ (2.3.4)
∂x M xi (re + 1)

11
∂2φ φi+1 − (re + 1) φi + reφi−1
 
≈2 (2.3.5)
∂x2 re M x2
Sustituyendo las ecuaciones 2.3.4 y 2.3.5 en la ecuación 2.0.8obtenemos el modelo cen-
trado uniforme para el problema de ujo:

φi+1 − (re + 1) φi + reφi−1 φ − φi−1


2 2
− P e i+1 =0 (2.3.6)
re M x M xi (re + 1)

(1 − a)φi+1 − (re + 1)φi + (a + re)φi−1 = 0 (2.3.7)


Mxi P e re
a= 2

El desarrollo del algoritmo computación para modelo 2.3.7 se aplica para el nodo 2 al
N-1, puesto que se las condiciones de frontera sustituyen las ecuaciones para el nodo 1 y
el N. Obteniéndose la siguiente sistema discreto:

N=2

(1 − a)φ3 − (re + 1)φ2 = 0

N=N-1

−(re + 1)φN −1 + (a + re)φN −2 = −(1 − a)

  φ  
0

−(re + 1) (1 − a) 2
. .
 (a + re) −(re + 1) (1 − a)  .   . 
  .
   . 
(a + re) −(re + 1) (1 − a)  . .
   
 .   .

 . .

.. .. ..
  

. . .  . = 
.

 .  
.

 . .

(a + re) −(re + 1) (1 − a)
   
  
(1 − a)   ... .
 
(a + re) −(re + 1) .
  
.
   
(a + re) −(re + 1) φ (a − 1)
N −1
(2.3.8)

El sistema 2.3.8 se resolvió mediante el método de LU, con el cual se obtiene el perl
de velocidad a lo largo del dominio.

12
3 ECUACIÓN DE DIFUSIÓN-CONVENCIÓN

TRANSITORIA 1D

Se tiene la siguiente ecuación de difusión- convencional transitoria :


 
∂ρφ ∂ ∂φ ∂ρuφ
= Γ − (3.0.1)
∂t ∂x ∂x ∂x
El sistema esta condicionado en las fronteras por las condiciones de Dirichlet dadas por:

φ(x = 0) = φ0 (3.0.2)

φ(x = L) = φL (3.0.3)

Considerando que L = 1,0, ρ = 1,0, u = 1,0, Γ = 0,025, φ0 = 0, φL = 1,0.


Las condiciones iniciales para el estado transitorio son:
π π
φ(x, 0) = φ0 cos(x ) + φL sin(x ) (3.0.4)
2 2
El sistema descrito en el modelo 3.0.1se resolverá mediante métodos numéricos en espe-
cico con esquemas de diferencias nitas centradas uniformes y no uniformes de segundo
grado de exactitud para el avance espacial y esquemas tipo Euler hacia adelante y Runge
Kutta para el avance temporal con la nalidad de obtener el perl φ0 = (x, t).

El uido es incompresible por lo tanto ρ = cte

El termino difusivo es constante a lo largo del dominio Γ = cte

La velocidad es constante u = cte


 2   
∂φ ∂ φ ∂φ
ρ =Γ − ρu (3.0.5)
∂t ∂x2 ∂x

Γ ∂2φ
   
∂φ ∂φ
= 2
−u (3.0.6)
∂t ρ ∂x ∂x
Γ
P e∗ = (3.0.7)
ρ
 2   
∂φ ∂ φ ∂φ
= P e∗ − u (3.0.8)
∂t ∂x2 ∂x

13
3.1. AVANCE TEMPORAL: EULER HACIA DELANTE

3.1.1. MODELO CENTRADO UNIFORME

Para este modelo utiliza CDS de segundo grado tanto para el termino difusivo como
para el termino convectivo y para el termino transitorio se utiliza Euler hacia adelante

φn+1 − φni
 
∂φ
≈ i (3.1.1)
∂t Mt
φn − φni−1
 
∂φ
≈ i+1 (3.1.2)
∂x 2Mx

φni+1 − 2 φni + φni−1


 2 
∂ φ
≈ (3.1.3)
∂x2 M x2
Sustituyendo las ecuaciones 3.1.1, 3.1.2 y 3.1.3 en la ecuación 2.0.8 obtenemos el modelo
centrado uniforme transitorio para el problema de ujo:

φn+1 − φni φ − 2 φi + φi−1 φ − φi


i
= P e∗ i+1 2
− u i−1 (3.1.4)
Mt Mx 2Mx

φn+1
i = (a − b)φni+1 + (1 − a)φni + (a + b)φni−1 (3.1.5)

Mt P e∗ Mt u
a= Mx2
b= Mx

El desarrollo del algoritmo computación para modelo 3.1.5 se aplica para el nodo 2 al
N-1, puesto que se las condiciones de frontera sustituyen las ecuaciones para el nodo 1 y
el N. Obteniéndose la siguiente sistema discreto:
N=2
(a − b)φ3 + (1 − a)φ2 = φn+1
2
N=N-1
(1 − a)φN −1 + (a + b)φN −2 + (a − b) = φn+1
N −1

 n+1  n  
φ2 φ2 0

(1 − a) (a − b)
..  (a+b) (1 − a) (a − b) ..   ... 
. .
    
  
(a+b) (1 − a) (a − b)

.. ..   .. 
      
.  .   . 
  
.. .. ..
     
= . . .   .  + . 

..
 
 
.   ..   .. 
+

(a b) (1 − a) (a − b)
  
..  .  .
     
.
(a+b) (1 − a) (a − b)  .   .  .

.
      
 
φN −1 (a+b) (1 − a) φN −1 (a − b)
(3.1.6)

14
El sistema 3.1.6 da como resultado un esquema del tipo φn+1 = Aφn + BC , el cual se
=
soluciona utilizando el álgebra matricial básica.

3.1.2. MODELO CENTRADO NO UNIFORME

El esquema no uniforme se aplica unicamente a la malla geométrica y no a la transitoria.

φn+1 − φni
 
∂φ
≈ i (3.1.7)
∂t Mt
φn − φni−1
 
∂φ
≈ i+1 (3.1.8)
∂x M xi (re + 1)

∂2φ φni+1 − (re + 1) φni + reφni−1


 
≈2 (3.1.9)
∂x2 re M x2
Sustituyendo las ecuaciones 3.1.8 y 3.1.9 en la ecuación 2.0.8 obtenemos el modelo
centrado uniforme para el problema de ujo:

φn+1 − φni φ − (re + 1) φi + reφi−1 φ − φi−1


i
= 2 P e ∗ i+1 2
− u i+1 (3.1.10)
Mt re M x M xi (re + 1)

φn+1
i = (a − b)φi+1 + (1 − (re + 1) a)φi + (re a + b) φi−1 (3.1.11)
2Mt P e∗ Mt u
a= reMx2
b= (re+1)Mx

El desarrollo del algoritmo computación para modelo 3.1.11 se aplica para el nodo 2
al N-1, puesto que se las condiciones de frontera sustituyen las ecuaciones para el nodo
1 y el N. Obteniéndose la siguiente sistema discreto:

N=2

(a − b)φ3 + (1 − (re + 1))φ2 = φn+1


i

N=N-1

(1 − (re + 1))φN −1 + (re a + b)φN −2 + (a − b) = φn+1


i
n+1 n
φ2 φ2 0
   

.. ..   .. 


. .   . 
  (1 − (re + 1)) 
  (a − b) 
(1 − (re + 1)) (a − b)
  
(re a + b)
.. ..   .. 
   

(1 − (re + 1)) (a − b)
 
(re a + b)
. .  + . 
 
.. .. ..
   
   
.. . . . ..   .. 
 
=
   
  

. .   . 
   
 
   (re a + b) (1 − (re + 1)) (a − b) 
.. ..   .. 
 
(re a + b) (1 − (re + 1)) (a − b)
   

. .   . 
  



 (re a + b) (1 − (re + 1)) 

φN −1 φN −1 (a − b)
(3.1.12)

15
El sistema 3.1.6 da como resultado un esquema del tipo φn+1 = Aφn + BC , el cual se
=
soluciona utilizando el álgebra matricial básica.

3.2. AVANCE TEMPORAL: RUNGE KUTTA DE 4to


ORDEN

El avance transitorio de Runge Kutta de cuarto orden consiste en iteraciones consecu-


tivas en pasos de tiempos medios para obtener en la ultima iteración el resultado en el
paso total. Para los dos primeros pasos se hace uso de l esquema de Euler hacia delante
explicito con una corrección de Euler implícito, los dos últimos pasos utiliza la media y
por ultimo la regla de Simpson.

∆t
φ∗n+ 1 = φn + f (tn , φn ) (3.2.1)
2 2
∆t
φ∗∗
n+ 1
= φn + f (tn+ 1 , φ∗n+ 1 ) (3.2.2)
2 2 2 2

φ∗n+1 = φn + ∆t f (tn+ 1 , φ∗∗


n+ 1
) (3.2.3)
2 2

∆t h i
φ∗n+1 = φn + f (tn , φn ) + 2 f (tn+ 1 , φ∗n+ 1 ) + 2 f (tn+ 1 , φ∗∗
n+ 12
) + f (t 1
n+ 2 , φ∗∗
n+ 12
)
2 2 2 2
(3.2.4)

3.2.1. MODELO CENTRADO UNIFORME

Se utiliza el sistema resultante para el modelo de avance transitorio con esquema Euler
hacia adelanteφn+1 = Aφn + BC , para el cual los coecientes de la matriz A cambian
=
obteniendo lo siguiente:

 ∗  n  
φ2 φ2 0

(1 − 2a) (a − b)
..  (a+b) (1 − 2a) (a − b) ..   . 
 .. 
. . 
  
  
(a+b) (1 − 2a) (a − b)

.. ..   .. 
       
.  .   . 
  
.. .. ..
     
= . . .   .  + . 

..
 
 
.   ..   .. 
+

(a b) (1 − 2a) (a − b)
  
..  .    . 
     
(a+b) (1 − 2a) (a − b)   ..   .. 

.
  
 
φN −1 n+1/2 (a+b) (1 − 2a) φN −1 (a − b)
(3.2.5)

16
 ∗∗  ∗  
φ2 φ2 0

(1 − 2a) (a − b)
..  (a+b) (1 − 2a) (a − b) ..   . 
 .. 
. . 
  
  
+

.. (a b) (1 − 2a) (a − b)   ..   .. 
      
. .  . 
  
.. .. ..
   
= . . . +
 
..  .   .. 
  
 
.   ..   . 
+

(a b) (1 − 2a) (a − b)
  
..  .   .. 
     
(a+b) (1 − 2a) (a − b)   .. 

.  . 
   
 
φN −1 n+1/2 (a+b) (1 − 2a) φN −1 (a − b)
n+1/2
(3.2.6)
Para los sistemas 3.2.5 y 3.2.6 los términos de la matriz son :

Mt P e∗ Mt u
a= 2Mx2
b= 4Mx

 ∗  ∗∗  
φ2 φ2 0

(1 − 2a) (a − b)
..  (a+b) (1 − 2a) (a − b) ..   . 
 .. 
. . 
  
  
+

.. (a b) (1 − 2a) (a − b) ..   .. 
       
.  .  . 
  
.. .. ..
     
= . . . +

..  .  .. 
  
.   .. 
 . 
  
(a+b) (1 − 2a) (a − b)
    
..  .  .
   
(a+b) (1 − 2a) (a − b)   ..   .. 

.
     
 
φN −1 n+1 (a+b) (1 − 2a) φN −1 (a − b)
n+1/2
(3.2.7)
Para los sistemas 3.2.7 los términos de la matriz son :

Mt P e∗ Mt u
a= Mx2
b= 2Mx

 n+1  n  ∗  ∗∗  ∗ 
φ2 φ2 φ2 φ2 φ2
.. .. .. .. ..
. . . . .
          
          
.. .. .. .. ..
          
. . . . .
          
  n ∆t         
 
.. =φ +   +2
..
 
.. +2  
..
  
..



 . 6 
 
 .



 .



 .





 .
.. .. .. .. ..
          
. . . . .
          
          
φN −1 φN −1 φN −1 n+1/2 φN −1 n+1/2 φN −1 n+1
(3.2.8)

17
3.2.2. MODELO CENTRADO NO UNIFORME

Se utiliza el sistema resultante para el modelo de avance transitorio con esquema Euler
hacia adelanteφn+1 = Aφn + BC , para el cual los coecientes de la matriz A cambian
=
obteniendo lo siguiente:
∗ n
φ2 φ2 0
   

.. ..   .. 


. .   . 
  (1 − (re + 1)) 
  (a − b) 
(1 − (re + 1)) (a − b)
  
(re a + b)
.. ..   .. 
   
(1 − (re + 1)) (a − b)
  
(re a + b)
. .  + . 

.. .. ..
   
   
.. . . . ..   .. 
  
=
  
  

. .   . 
  
 
   (re a + b) (1 − (re + 1)) (a − b) 
.. ..   .. 
  
(re a + b) (1 − (re + 1)) (a − b)
   

. .   . 
  



 (re a + b) (1 − (re + 1)) 

φN −1 φN −1 (a − b)
(3.2.9)
n+1/2

∗∗ ∗
φ2 φ2 0
   

.. ..  .. 
. .  . 
  (1 − (re + 1))  
  (a − b)  
(1 − (re + 1)) (a − b)
   
(re a + b)
.. ..  .. 
    
(1 − (re + 1)) (a − b)
   
(re a + b)
. . 

.. .. .. . 
    
    

.. . . . ..  .. 
   
= +
  
  



. .  . 
    
 
   (re a + b) (1 − (re + 1)) (a − b)  

.. ..  .. 
  
(re a + b) (1 − (re + 1)) (a − b)
    

. .  .
   



 (re a + b) (1 − (re + 1)) 



φN −1 φN −1 (a − b)
(3.2.10)
n+1/2 n+1/2

Para los sistemas 3.2.9 y 3.2.10 los términos de la matriz son :

Mt P e∗ Mt u
a= reMx2
b= 2Mx(re+1)

∗ ∗∗
φ2 φ2 0
   

.. .. ..
. . .
  (1 − (re + 1))    
  (a − b)    
(1 − (re + 1)) (a − b)
     
(re a + b)
.. .. ..
      
(1 − (re + 1)) (a − b)
     
(re a + b)
. .

.. .. .. .
      
      

.. . . . .. ..
     
= +
  
    
   
. . .
  
    
   (re a + b) (1 − (re + 1)) (a − b)    

.. .. ..
     
(re a + b) (1 − (re + 1)) (a − b)
      

. . .
     



 (re a + b) (1 − (re + 1)) 







φN −1 φN −1 (a − b)
(3.2.11)
n+1 n+1/2

Para los sistemas 3.2.11 los términos de la matriz son :

2Mt P e∗ Mt u
a= reMx2
b= Mx(re+1)

18
 n+1  n  ∗  ∗∗  ∗ 
φ2 φ2 φ2 φ2 φ2
.. .. .. .. ..
. . . . .
          
          
.. .. .. .. ..
          
. . . . .
          
  n ∆t 
        

..
 =φ +  +2
..
 
.. +2  
..
  
..



. 6 
 
.



 .



 .





 .
.. .. .. .. ..
          
. . . . .
          
          
φN −1 φN −1 φN −1 n+1/2 φN −1 n+1/2 φN −1 n+1
(3.2.12)

19
4 RESULTADOS
4.1. CASO 1: EXACTITUD DE ESQUEMAS DE
DIFERENCIAS FINITAS

Se determino la primera y segunda derivada de funcion 1.1.1mediante esquemas de di-


ferencias nitas centrados de segundo, cuarto y sextro grado de exactitud, a diferentes ta-
maños de malla para cada esquema. Los ∆x utilizados fueron 10−5 , 10−4 , 10−3 , 10−2 , 5−1 , 2−1 , 1.
Para cada malla se evaluo el error absoluto con la solucion analitica tanto de la primera
y segunda deriva en cada punto de la malla, ademas se determino el error maximo para
cada caso. Las simulaciones se desarrollaron en precision simple y doble precision para
determinar el errror de redondeo generado por la capacidad de computo.
Los resultados de simple presicion para primera derivada se muestra en la gura 4.1a
y para la segunda en la gura 4.1a. En estas gracas se puede observar que el error
disminuye hasta ∆x = 10−2 , valor a partir del cual el error empieza aumentar hasta
∆x = 1 para los el 4to, y 6to orden, para el de 2do orden este punto de inexion se da
en ∆x = 10−3 .
En el caso de doble presicion tenemos que el un comportamiento similar pero el el
punto de inexion para la primera deriva solo ocurre para el esquema de sexto orden en
∆x = 10−3 , mientras que el de cuarto comienza en ∆x = 10−4 , y para el esquema de
primer orden no existe punto de inexion. Para la segunda derivada los esquemas de 4to
y 6 to orden tienen punto de inexion en ∆x = 10−3 , mientras que el de segundo orden
lo tiene en ∆x = 10−4 ,.
Si comparamos los puntos de inexion de la primera derivada en precision simple y
dobleprecicion, tenemos que la diferencia en entre ellos corresponde al error de redondeo,
el cual es mas signicativo para el esquema de sexto orden debido al tamaño de molecula
que necesita para la prediccion, lo cual hace que el error se acumule en la prediccion de
cada uno de los nodos que la conforman, motivo por el cual el de segundo orden es el que
presenta menor error de redondeo debido a que el tamaño de molecual es mucho menor.
En el caso de la segunda derivada, es analisis del error de redondeo es analogo al de la
primera derivada, sin embargo este es aun mas signicativo que para la primera derivada,
debido a que en los esquemas existe el residuo por ∆x2 , lo cual hace que los términos sean
aun mas pequeños y no puedan ser procesados en la totalidad de su longitud, aumentado
de esta forma el error por redondeo.
Se logra deducir que los esquemas tienen un limite de malla en el cual pueden ser
aplicados sin que el error de redondeo sea signicativo en las predicciones. Adicionalmene

20
se logra observar claramente que la rata de disminucion del error es mucho mayor para el
esquema de sexto orden tanto para la primera derivada como para la segunda, sin embargo
la diferencia con el de 4to orden en la segunda derivada no es muy signiticativo, mientras
que en la primera derivada esa difrencia es mas evidente.

(b) Primera Derivada (c) Segunda Derivada

(c) Error Absoluto. Presicion Simple

(e) Primera Derivada (f) Segunda Derivada

(f) Error Absoluto. Presicion Doble

Figura 4.1: Exactitud de Esquemas DF

21
4.2. CASO 2: ECUACIÓN DE DIFUSIÓN-CONVENCIÓN
ESTACIONARIA 1D

La solucion de la ecuacion de difusion-conveccion 2.0.1 se encontro mediante tres esque-


mas de diferencias nitas, upwind, centrado uniforme y no uniforme, los tres esquemas
se analizaron a diferentes tamaños de malla para analizar su estabilidad y la precision
con respecto a la solucion analitica.
Se puede observar en las guras 4.2a a la 4.2g, en orden creciente de malla las siguientes
caracteristicas:

El modelo centrado no uniforme (NU-CDS), es inestable en mallas pequeñas <


33, pero por encima de este mallado presenta una buena aproximacion hasta una
malla 100. En la malla 1000 el sistema se presenta una desestabilizacion total
debido principalmente a la difusion numerica artical introducida en generacion de
un espaciamento de malla muy pequeño.

El modelo centrado uniforme (CDS), es inestable en mallas pequeñas < 10, pero
presenta la mejor aproximacion a la anlitica en las mallas 33 a la de 1000, visual-
mente se puede decir que se solapa con la solucion analitica lo cual la hace a la
solucion numerica estable y convergente en las gura 4.2da la 4.2g . La difusion
numerica para este metodo no existe.

El modelo upwind (UDS), es inestable en mallas pequeñas < 10, con forme la
malla aumenta su estabilidad y convergencia tambien aumenta, en la malla 100
4.2g alcanza su mayor precision con respecto a la solucion analitica, la rata de
convergencia del metodo es lenta, lo cual se le puede atribuir a la evaluacion del
termino convectivo con el esquema de Euler hacia delante.

Se puede concluir que los modelos CDS y UDS convergen satisfactoriamente en la malla
100, ademas que son estables para todas las mallas anlizadas. El modelo NU-CDS es
condicionalmente estable y convergente al numero de malla.

22
(b) φ = f (x),Malla 4, re=0.5 (c) φ = f (x),Malla 10, re=0.2

(e) φ = f (x),Malla 33, re=0.06 (f) φ = f (x),Malla 50, re=0.04

(h) φ = f (x),Malla 100, re=0.02 (i) φ = f (x),Malla 1000, re=0.002


23
Figura 4.2: Perl de Velocidad. Estado Estacionario
4.3. CASO 2: ECUACIÓN DE DIFUSIÓN-CONVENCIÓN
TRANSITORIA 1D

La solucion de la ecuacion de difusion-conveccion 3.0.1 se encontro mediante dos es-


quemas de diferencias nitas,centrado uniforme y no uniforme para el avance espacial en
conjunto con cada uno de los esquemas para el avance temporal, Euler hacia adelante y
Runge Kutta, para cada esquema global se evaluaron diferente tamaño de malla espacial
y temporal con la nalidad de analizar establidad y convergencia.
Se puede observar en las guras 4.2a a la 4.4d, en orden creciente de malla las siguientes
caracteristicas:

El modelo centrado uniforme (CDS), es inestable a mallas pequeñas tanto espaciales


como temporales, su estabilidad y convergencia aumentan conforme aumentan las
mallas, alcanzando su mayor estabilidad en la malla 50 y ∆t = 0,004 para los
dos esquemas temporales. Cabe resaltar que el esquema temporal de Euler hacia
adelante el perl se estabiliza en 110∆t, mientras que el en el esquema Runge Kutta
no exite variacion aparente del perl en el tiempo, esto se debe principalmente a
que es un metodo predictor corrector. Este modelo presenta gran estabilidad en la
malla 250 y ∆t = 0,008, esto se atribuye principalmente a los teminos difusivos.

El modelo centrado uniforme (NU- CDS), presenta mejor estabilidad que el modelo
CDS para todas las mallas. Unicamente en las mallas 10 y ∆t = 0,2, 10 y ∆t = 0,1
se presenta una diferencia en las soluciones a diferentes instantes para el metodo
de avance temporal Euler hacia adelante, mientras que para el de Runge Kutte al
igual que en el modelo CDS no se presenta direncia en las solciones a diferentes
instantes de tiempo en ninguna de las mallas.

Del analisis anterior se puede deducir que para el modelo CDS la mejor prediccion es en
la malla 50 y ∆t = 0,004 para los dos esquemas de avance temporal, mientras que para el
modelo NU-CDS la mejor aproximacion es en la malla 250 y ∆t = 0,008, aunque se puede
obtener una buena aproximacion con menor costo computacional en mallas inferiores.
En el estado transtorio se pudo notar la gran sensibilidad del sistema a la realcion
∆t/∆x, el cual tenia buenos resultados si se respetaba que ∆t debe de ser de un orden de
magnitud menor que ∆x, ademas de la relacion debe de ser el doble sin tener en cuenta
la el orden de magnitud. Como por ejemplo ∆t = 0,004 y ∆x = 0,02. en proporciones
diferenes los resultados presentan grandes oscilaciones. Esto nos hace deducir que el
sistema es condicionalmente estable.

24
(b) CDS:φ = f (x, t),Malla 10,∆t = 0,2 (c) NU-CDS:φ = f (x, t),Malla 10,∆t = 0,2, re=0.3

(e) CDS:φ = f (x, t),Malla 10,∆t = 0,1 (f) NU-CDS:φ = f (x, t),Malla 10,∆t = 0,1, re=0.2

(h) CDS:φ = f (x, t),Malla 10,∆t = 0,02 (i) NU-CDS:φ = f (x, t),Malla 10,∆t = 0,02, re=0.2
25
Figura 4.3: Perl de Velocidad. Estado Transitorio
(b) CDS:φ = f (x, t),Malla 50,∆t = 0,004 (c) NU-CDS:φ = f (x, t),Malla 50,∆t = 0,004, re=0.04

(e) CDS:φ = f (x, t),Malla 250,∆t = 0,008 (f) NU-CDS:φ = f (x, t),Malla 250,∆t = 0,008, re=0.008

Figura 4.4: Perl de Velocidad. Estado Transitorio

26
5 CONCLUSIONES
Mediante el desarrollo del caso 1 se logro determinar el orden de presicion del
esquema de diferencias nitas centrado, mediante su analisis se deduce que para
tanto para la primera como segunda derivada el error del esquema de segundo
orden es mucho mayor que para el de cuarto y sexto orden, mientras que para
la primera derivada los diferencia entre los errores de los esquemas de 4to y 6to
orden son mucho mas grandes que para la segunda deriva. Por lo tanto para la
segunda deriva es posible tomar un el esquema de 4to orden manteniendo una
buena aproximacion a la solucion anlitica con menos costo computacioanl. En el
analisis del caso 1 tambien se logra observar claramente los errores de redondeo
los cuales disminyen en las simulaciones con doble precision numerica, sin embargo
el error de redonde es mucho mas grande para la segunda derivada que para la
primera debido a la propagacion de los mismo en el termino ∆x2 .

En el desarrllo del caso 2, se logro observar la inuencia del tamaño de malla en los
esquemas de difrencias nitas, siendo el CDS el mas modelo de mayor convergencia
y estabilidad tanto en mallas pequeñas como grandes, seguido del metodo UDS el
cual tiene una rata de convergencia menor pero presenta mejor estabilidad que el
NU-CDS, el cual se ve afectado por mallas muy pequeñas o muy grandes.

En el caso 3, se analizo el efecto de la malla temporal y espacial siendo el modelo


NU-CDS el mas estable en los dos esquemas de avance temporal estudiados, este
esquema no requiere de mallas muy grandes para lograr una convergencia acepta-
ble, El modelo CDS presenta mayor inestabilidad a mallas pequeñas con respecto
a l no uniforme. Para ambos modelos es evidente que la solucion en cada instan-
te de tiempo tiene mayor variacion con el esquema temporal Euler hacia adelante
mientras que con el esquema Runge Kutta no existe dicha variacion, esto se de-
be prinipalmente a la caracterisitca de predictor-corrector que tiene el metodo de
Runge Kutta. Por ultimo se determno que el sistema es condicionalmente estable
para el tamaño de malla espacial.

27
6 ANEXOS
6.1. CASO 1

program c1
a12 =(1.0d0 /12.0 d0)
a22 =(2.0d0 /3.0 d0)
a13 =(1.0d0 /60.0 d0)
a23 =(3.0d0 /20.0 d0)
a33 =(3.0d0 /4.0 d0)
b12 =(5.0d0 /2.0 d0)
b22 =(4.0d0 /3.0 d0)
b13 =(1.0d0 /90.0 d0)
b23 =(49.0d0 /18.0 d0)
b33 =(3.0d0 /2.0 d0)
read (100 , ∗ ) , dx
xi=−1.0d0 ∗ pi
k1= pi /(8.0 d0 ∗ dx)
k2= (3.0 d0 ∗ k1 )/4.0 d0
N=floor ( ( ( pi+pi )/dx)+1.0d0)
do i=1 , N
call posiciones ( i , xi , x , xo , x1 , x2 , x3 , x4 , x5 , dx)
dr ( i )=drf ( xo ( i ) , k1 , k2 )
d2r ( i )=d2rf ( xo ( i ) , k1 , k2 )
fo ( i )= f ( xo ( i ) , k1 , k2 )
fx ( i )= f ( x( i ) , k1 , k2 )
f1 ( i )= f ( x1 ( i ) , k1 , k2 )
f2 ( i )= f ( x2 ( i ) , k1 , k2 )
f3 ( i )= f ( x3 ( i ) , k1 , k2 )
f4 ( i )= f ( x4 ( i ) , k1 , k2 )
f5 ( i )= f ( x5 ( i ) , k1 , k2 )
call derivadas ( i , df1 , df2 , df3 , d2f1 , d2f2 , d2f3 , pi , dx , k1 , k2 , fx , fo , f1 , f2 , f3 , f4 , f5 , a12 , &
a22 , a13 , a23 , a33 , b12 , b22 , b13 , b23 , b33 )
call e r r o r e s ( i , dr , d2r , df1 , df2 , df3 , d2f1 , d2f2 , d2f3 , edf1 , edf2 , edf3 , ed2f1 , ed2f2 , ed2f3 ,&
hdf1 , hdf2 , hdf3 , hd2f1 , hd2f2 , hd2f3 )
write (400 ,34) , dx , hdf1 ( i ) , hdf2 ( i ) , hdf3 ( i ) , hd2f1 ( i ) , hd2f2 ( i ) , hd2f3 ( i )
end do
end program

28
subroutine posiciones ( i , xi , x , xo , x1 , x2 , x3 , x4 , x5 , dx)
integer , parameter : : sp = selected_real_kind (6 , 37)
integer , parameter : : dp = selected_real_kind (15 , 307)
integer ( kind=dp ) : : i
real ( kind=dp ) , dimension (100000) : : x , xo , x1 , x2 , x3 , x4 , x5
real ( kind=dp ) : : dx , xi
xo ( i )=xi+(i −1)∗ dx
x( i )=xo ( i )+dx
x1 ( i )=xo ( i )−dx
x2 ( i )=xo ( i ) + 2.0 d0 ∗ dx
x3 ( i )=xo ( i )− 2.0 d0 ∗ dx
x4 ( i )=xo ( i ) + 3.0 d0 ∗ dx
x5 ( i )=xo ( i )− 3.0 d0 ∗ dx
end subroutine
subroutine derivadas ( i , df1 , df2 , df3 , d2f1 , d2f2 , d2f3 , pi , dx , k1 , k2 , fx , fo , f1 , f2 , f3 , f4 , f5 , a12 , &
a22 , a13 , a23 , a33 , b12 , b22 , b13 , b23 , b33 )
integer , parameter : : sp = selected_real_kind (6 , 37)
integer , parameter : : dp = selected_real_kind (15 , 307)
integer ( kind=dp ) : : i
real ( kind=dp ) , dimension (100000) : : df1 , df2 , df3 , d2f1 , d2f2 , d2f3 , fx , fo , f1 , f2 , f3 , f4 , f5
real ( kind=dp ) : : pi , dx , k1 , k2 , a12 , a22 , a13 , a23 , a33 , b12 , b22 , b13 , b23 , b33
! i f ( i >=1.0d0 . and . i <=4.0d0 ) t h e n
! d f 1 ( i )=( − 1.0d0 ∗ f 2 ( i )+ 2 . 0 d0 ∗ f x ( i )− 3 . 0 d0 ∗ f o ( i ) ) / ( 2 . 0 d0 ∗ dx )
! d f 2 ( i )= d f 1 ( i )
! d f 3 ( i )= d f 1 ( i )
! d 2 f 1 ( i )=( f 2 ( i )− 2 . 0 d0 ∗ f x ( i )+ f o ( i ) ) / ( dx ∗ ∗ 2 . 0 d0 )
! d 2 f 2 ( i )=d 2 f 1 ( i )
! d 2 f 3 ( i )=d 2 f 1 ( i )
! else
df1 ( i )=( fx ( i )− f1 ( i ) ) / ( 2 . 0 d0 ∗ dx)
df2 ( i )=(a12 ∗ f3 ( i )− a22 ∗ f1 ( i )+ a22 ∗ fx ( i )− a12 ∗ f2 ( i ))/( dx)
df3 ( i )=( − 1.0d0 ∗ a13 ∗ f5 ( i )+ a23 ∗ f3 ( i )− a33 ∗ f1 ( i )+ a33 ∗ fx ( i )− a23 ∗ f2 ( i )+a13 ∗ f4 ( i ))/( dx)
d2f1 ( i )= ( f1 ( i )− 2.0 d0 ∗ fo ( i )+ fx ( i ))/( dx ∗ ∗ 2.0 d0)
d2f2 ( i )= ( − 1.0d0 ∗ a12 ∗ f3 ( i )+ b22 ∗ f1 ( i )− b12 ∗ fo ( i )+ b22 ∗ fx ( i )− a12 ∗ f2 ( i ))/( dx ∗ ∗ 2.0 d0)
d2f3 ( i )= ( b13 ∗ f5 ( i )− a23 ∗ f3 ( i )+ b33 ∗ f1 ( i ) −b23 ∗ fo ( i )+ b33 ∗ fx ( i ) &
−a23 ∗ f2 ( i )+b13 ∗ f4 ( i ))/( dx ∗ ∗ 2.0 d0)

end subroutine
! end if

subroutine e r r o r e s ( i , dr , d2r , df1 , df2 , df3 , d2f1 , d2f2 , d2f3 , edf1 , edf2 , edf3 , ed2f1 , ed2f2 , ed2f3 ,&
hdf1 , hdf2 , hdf3 , hd2f1 , hd2f2 , hd2f3 )
integer , parameter : : sp = selected_real_kind (6 , 37)
integer , parameter : : dp = selected_real_kind (15 , 307)
real ( kind=dp) , dimension (100000):: dr , d2r , df1 , df2 , df3 , d2f1 , d2f2 , d2f3
real ( kind=dp ) , dimension (100000):: edf1 , edf2 , edf3 , ed2f1 , ed2f2 , ed2f3
real ( kind=dp) , dimension (100000):: hdf1 , hdf2 , hdf3 , hd2f1 , hd2f2 , hd2f3
integer ( kind=dp) : : i
edf1 ( i )=( df1 ( i )− dr ( i ))
edf2 ( i )=( df2 ( i )− dr ( i ))
edf3 ( i )=( df3 ( i )− dr ( i ))
ed2f1 ( i )=( d2f1 ( i )− d2r ( i ))
ed2f2 ( i )=( d2f2 ( i )− d2r ( i ))
ed2f3 ( i )=( d2f3 ( i )− d2r ( i ))
hdf1 ( i )= abs ( df1 ( i )− dr ( i ))
hdf2 ( i )= abs ( edf2 ( i ))
hdf3 ( i )= abs ( edf3 ( i ))
hd2f1 ( i )= abs ( ed2f1 ( i ))
hd2f2 ( i )= abs ( ed2f2 ( i ))
hd2f3 ( i )= abs ( ed2f3 ( i ))
end subroutine

29
real ∗ 8 function f (x , k1 , k2 )
implicit none
integer , parameter : : sp = selected_real_kind (6 , 37)
integer , parameter : : dp = selected_real_kind (15 , 307)
real ( kind=dp ) : : x , k1 , k2
f= exp ( sin (x )) + 0.5 ∗ cos ( k1 ∗ x) − 0.8 ∗ sin ( k2 ∗ x)
end
real ∗ 8 function drf (x , k1 , k2 )
implicit none
integer , parameter : : sp = selected_real_kind (6 , 37)
integer , parameter : : dp = selected_real_kind (15 , 307)
real ( kind=dp ) : : x , k1 , k2
drf= − 0.5 ∗ k1 ∗ sin ( k1 ∗ x) − 0.8 ∗ k2 ∗ cos ( k2 ∗ x) + cos (x) ∗ exp ( sin (x ))
end
real ∗ 8 function d2rf (x , k1 , k2 )
implicit none
integer , parameter : : sp = selected_real_kind (6 , 37)
integer , parameter : : dp = selected_real_kind (15 , 307)
real ( kind=dp) : : x , k1 , k2
d2rf= (( cos (x)) ∗∗ 2 − sin (x )) ∗ exp ( sin (x )) − 0.5 ∗ ( k1 ∗ ∗ 2) ∗ cos ( k1 ∗ x) + 0.8 ∗ ( k2 ∗ ∗ 2) ∗ sin ( k2 ∗ x)
! ( ( cos ( x ))∗∗2) ∗ exp ( s i n ( x ) ) − 0 . 5 ∗ c o s ( k1 ∗ x ) ∗ k1 ∗∗ 2 − s i n ( x ) ∗ exp ( s i n ( x ) ) + s i n ( k2 ∗ x ) ∗ 0 . 8 ∗ ( k2 ∗∗ 2 )

end
6.2. CASO 2

program caso22
pe=((den ∗ vel )/ d i f )
ep=dx ∗ pe
re= l ∗ dx
N=floor ( ( ( xf −xi )/dx ))
allocate (m(N,N) , inv (N,N) , x(N+1 ,1) ,b(N, 1 ) , c (N, 1 ) , p(N+1 ,1) , velo (N+1 ,1))
allocate (m2(N,N) , inv2 (N,N) , x2 (N+1 ,1) ,b1(N, 1 ) )
allocate (m3(N,N) , inv3 (N,N) , b2(N, 1 ) , dx1 (N+1 ,1) ,p2(N+1 ,1) , c1 (N, 1 ) , pe2 (N+1 ,1) , x3 (N+1 ,1))
f1= ( ep + 1.0 d0) ∗ ( − 1.0d0)
f2= (2.0 d0 + ep )
f3= − 1.0d0
f f 1= ( ep + 2.0 d0)
f f 2= − 4.0d0
f f 3= (2.0 d0 − ep )
do k=2, N−1
m(k , k−1)= f1
m(k , k)= f2
m(k , k+1)= f3
m2(k , k−1)= f f 1
m2(k , k)= f f 2
m2(k , k+1)= f f 3
pe2 (k ,1)=(( re ∗ pe ∗ dx ∗ l ∗ (k+1))/2.0 d0)
m3(k , k−1)= ( pe2 (k , 1 ) + re )
m3(k , k)= ( re +1.0d0) ∗ ( − 1.0d0)
m3(k , k+1)= (1 − pe2 (k , 1 ) )
end do
m(1 ,1)= f2
m(1 ,2)= f3
m(N,N)= f2
m(N,N−1)= f1
m2(1 ,1)= f f 2
m2(1 ,2)= f f 3
m2(N,N)= f f 2
m2(N,N−1)= f f 1
do k=2, N+1
pe2 (1 ,1)=(( re ∗ pe ∗ dx ∗ l ∗ (2))/2.0 d0)
pe2 (N,1)=(( re ∗ pe ∗ dx ∗ l ∗ (N+1))/2.0 d0)
m3(1 ,1)= ( re +1.0d0) ∗ ( − 1.0d0)
m3(1 ,2)= (1 − pe2 (1 ,1))

30
m3(N,N)= ( re +1.0d0) ∗ ( − 1.0d0)
m3(N,N−1)= ( pe2 (N, 1 ) + re )
end do
! write (∗ ,34) , m
! w r i t e ( ∗ , 3 4 ) , m2
! w r i t e ( 3 0 0 , 3 4 ) , m3

call inverse (m, inv ,N)


call inverse (m2, inv2 ,N)
call inverse (m3, inv3 ,N)
do i =1, N
c ( i ,1)=0.0 d0
b( i ,1)=0.0 d0
b(N,1)=1.0 d0
b1( i ,1)=0.0 d0
b1(N,1)= − 1 ∗ f f 3
pe2 (N,1)=(( re ∗ pe ∗ dx ∗ l ∗ (N+1))/2.0 d0)
c1 ( i ,1)=0.0 d0
b2( i ,1)=0.0 d0
b2(N,1)= −1∗(1 − pe2 (N, 1 ) )
do j =1, N
x( i ,1)= inv ( i , j ) ∗ b( j ,1)+ c ( i , 1 )
x2 ( i ,1)= inv2 ( i , j ) ∗ b1( j ,1)+ c ( i , 1 )
x3 ( i ,1)= inv3 ( i , j ) ∗ b2( j ,1)+ c1 ( i , 1 )
end do
end do
p(1 ,1)= xi
do i =2, N+1
p( i ,1)=p( i −1,1)+dx
end do
p2(1 ,1)= xi
dx1 (1 ,1)=0.0 d0
do i =2, N+1
dx1 ( i ,1)= ( re ∗ dx) ∗ i
p2( i ,1)=p2( i −1,1)+dx1 ( i , 1 )
end do
x(N+1 ,1)=1.0d0
x2 (N+1 ,1)=1.0d0
p(N+1 ,1)=1.0d0
do i =1, N+1
velo ( i ,1)=( exp ( pe ∗ p( i ,1)) − 1)/( exp ( pe ∗ xf ) − 1)
write (200 ,34) ,p( i , : ) , velo ( i , : ) , x( i , : ) , x2 ( i , : )
end do
x3 (N,1)=1.0 d0
p2(N,1)=1.0 d0
do i =1, N
x3 (1 ,1)=0.0 d0
write (300 ,34) , p2( i , : ) , x3 ( i , : )
end do
end program
6.3. CASO 3

6.3.1. ESQUEMA TEMPORAL:EULER

program c3
pe=( d i f /den )
re= cons ∗ dx
! coeficientes
s =((pe ) ∗ ( dt/dx ∗ ∗ 2))
a=(dt ∗ u)/dx
N=floor ( ( ( xf −xi )/dx)+1)
O=floor (( t f /dt )+1)
allocate (m(N,N) , b(N, 1 ) , bc (N, 1 ) ,L(N, 1 ) )
allocate (m3(N,N) , b2(N, 1 ) , bc1 (N, 1 ) , L1(N, 1 ) , pe2 (N, 1 ) , pe3 (N, 1 ) , dx1 (N, 1 ) )
allocate ( resultados (N,O+1),posX(N))
allocate ( resultados2 (N,O+1),p2(N))
do k = 1 , N
posX(k) = xi+dble (k −1)∗ dx ;
resultados (k , 1 ) = xi + dble (k −1)∗ dx
enddo

31
p2(1)= xi
dx1 (1 ,1)=0.0 d0
do i =2, N
dx1 ( i ,1)= ( re ∗ dx) ∗ i
p2( i )=p2( i −1)+dx1 ( i , 1 )
p2(N− 1)=1.0d0
p2(N)=1.0d0
end do
do k=1, N
resultados2 (k , 1 ) = p2(k)
end do
f1= s+a
f2= 1.0 d0 − 2.0d0 ∗ s
f3= s−a
do k=2, N−1
m(k , k−1)= f1
m(k , k)= f2
m(k , k+1)= f3
pe2 (k,1)= (2.0 d0 ∗ pe ∗ dt )/( re ∗ (dx ∗ (k+1.0d0 )) ∗ ∗ 2.0 d0)
pe3 (k,1)= (u ∗ dt )/(( re +1)∗ dx ∗ (k+1.0d0 ))
m3(k , k−1)= ( re ∗ pe2 (k , 1 ) ) + pe3 (k , 1 )
m3(k , k)= 1.0 d0 −(pe2 (k ,1) ∗ ( re +1.0d0 ))
m3(k , k+1)= pe2 (k , 1 ) − pe3 (k , 1 )
end do
m(1 ,1)= f2
m(1 ,2)= f3
m(N,N)= f2
m(N,N−1)= f1
pe2 (1 ,1)=(2.0 d0 ∗ pe ∗ dt )/( re ∗ (dx ∗ (2.0 d0 )) ∗ ∗ 2)
pe2 (N,1)=(2.0 d0 ∗ pe ∗ dt )/( re ∗ (dx ∗ (N+1.0d0 )) ∗ ∗ 2)
pe3 (1 ,1)=(u ∗ dt )/(( re +1)∗ dx ∗ (2.0 d0 ))
pe3 (N,1)=(u ∗ dt )/(( re +1)∗ dx ∗ (N+1.0d0 ))
m3(1 ,1)= 1.0 d0 −(pe2 (1 ,1) ∗ ( re +1.0d0 ))
m3(1 ,2)= pe2 (1 ,1) − pe3 (1 ,1)
m3(N,N)= 1.0 d0 −(pe2 (N,1) ∗ ( re +1.0d0 ))
m3(N,N−1)= ( re ∗ pe2 (N, 1 ) ) + pe3 (N, 1 )
do j =1, O
do i =1, N
b( i ,1)= vi ∗ cos (posX( i ) ∗ ( pi /2))+ vf ∗ sin (posX( i ) ∗ ( pi /2))
bc ( i ,1)= 0.0 d0
bc (N−1,1)= s−a
bc (N,1)= 0.0 d0
b2( i ,1)= vi ∗ cos (p2( i ) ∗ ( pi /2))+ vf ∗ sin (p2( i ) ∗ ( pi /2))
pe2 (N,1)=(2.0 d0 ∗ pe ∗ dt )/( re ∗ (dx ∗ (N+1.0d0 )) ∗ ∗ 2)
pe3 (N,1)=(u ∗ dt )/(( re +1)∗ dx ∗ (N+1.0d0 ))
bc1 ( i ,1)= 0.0 d0
bc1 (N−1,1)= pe2 (N, 1 ) − pe3 (N, 1 )
bc1 (N,1)= 0.0 d0
call MMULT(m,N,N, b ,N,L)
b( i ,1)=L( i ,1)+ bc ( i , 1 )
b(N,1)=1.0 d0
call MMULT(m3,N,N, b2 ,N, L1)
b2( i ,1)=L1( i ,1)+ bc1 ( i , 1 )
b2(N,1)=1.0 d0
resultados ( i , j+1)=b( i , 1 )
resultados2 ( i , j+1)=b2( i , 1 )
end do
end do
open ( unit =23, f i l e =' resultados . txt ' )
open ( unit =24, f i l e =' resultados2 . txt ' )
do i = 1 , N
write (23 ,101) ( resultados ( i , j ) , j = 1 , O+1)
write (24 ,101) ( resultados2 ( i , j ) , j = 1 , O+1)
enddo
end program
6.3.2. ESQUEMA TEMPORAL: RUNGE KUTTA 4to ORDEN

program RK4

32
x(1 ,1)=0.0 d0
do k = 2 , N
x(k , 1 ) = x(k −1,1)+dx
end do
x2(1 ,1)= xi
dx1 (1 ,1)=0.0 d0
do i =2, N
dx1 ( i ,1)= ( re ∗ dx) ∗ i
x2 ( i ,1)=x2 ( i −1,1)+dx1 ( i , 1 )
x2 (N,1)=1.0 d0
end do
do k=1, N
rrk (k , 1 ) = x(k , 1 )
rrk2 (k , 1 ) = x2 (k , 1 )
end do
do k=2, N−1
mr(k , k−1)= s1+a1
mr(k , k)= 1.0 d0 − 2.0d0 ∗ s1
mr(k , k+1)= s1 −a1
mk(k , k−1)= s2+a2
mk(k , k)= 1.0 d0 − 2.0d0 ∗ s2
mk(k , k+1)= s2 −a2
pe2 (k ,1)=( dt ∗ pe )/( re ∗ (dx ∗ (k+1)) ∗ ∗ 2)
pe3 (k ,1)=( dt ∗ u)/(2 ∗ ( re +1) ∗ (dx ∗ (k+1)))
mr2(k , k−1)= re ∗ pe2 (k , 1 ) + pe3 (k , 1 )
mr2(k , k)= 1 − (( re +1)∗ pe2 (k , 1 ) )
mr2(k , k+1)= pe2 (k,1) − pe3 (k , 1 )
mk2(k , k−1)= 2 ∗ re ∗ pe2 (k , 1 ) + 2 ∗ pe3 (k , 1 )
mk2(k , k)= 1 − 2 ∗ (( re +1)∗ pe2 (k , 1 ) )
mk2(k , k+1)= 2 ∗ pe2 (k,1) − 2 ∗ pe3 (k , 1 )
end do
mr(1 ,1)= 1.0 d0 − 2.0d0 ∗ s1
mr(1 ,2)= s1 −a1
mr(N,N)= 1.0 d0 − 2.0d0 ∗ s1
mr(N,N−1)= s1+a1
mk(1 ,1)= 1.0 d0 − 2.0d0 ∗ s2
mk(1 ,2)= s2 −a2
mk(N,N)= 1.0 d0 − 2.0d0 ∗ s2
mk(N,N−1)= s2+a2
mr2(1 ,1)= 1 − (( re +1)∗ pe2 (1 ,1))
mr2(1 ,2)= pe2 (1 ,1) − pe3 (1 ,1)
mr2(N,N)= 1 − (( re +1)∗ pe2 (N, 1 ) )
mr2(N,N−1)= re ∗ pe2 (N, 1 ) + pe3 (N, 1 )
mk2(1 ,1)= 1 − 2 ∗ (( re +1)∗ pe2 (N, 1 ) )
mk2(1 ,2)= 2 ∗ pe2 (1 ,1) − 2 ∗ pe3 (1 ,1)
mk2(N,N)= 1 − 2 ∗ (( re +1)∗ pe2 (N, 1 ) )
mk2(N,N−1)= 2 ∗ re ∗ pe2 (N, 1 ) + 2 ∗ pe3 (N, 1 )
do j =1, O
! centradas uniformes

do i =1, N
v( i ,1)= vi ∗ cos (x( i ,1) ∗ ( pi /2))+ vf ∗ sin (x( i ,1) ∗ ( pi /2))
bc ( i ,1)= 0.0 d0
bc (N−1,1)= s1 −a1
bc (N,1)= 0.0 d0
bc1 ( i ,1)= 0.0 d0
bc1 (N−1,1)= s2 −a2
bc1 (N,1)= 0.0 d0
b( i ,1)=v( i , 1 )
call MMULT(mr,N,N, b ,N,L)
b( i ,1)=L( i ,1)+ bc ( i , 1 )
b(N,1)=1.0 d0
b1( i ,1)=b( i , 1 )
call MMULT(mr,N,N, b1 ,N, L1)
b1( i ,1)=L1( i ,1)+ bc ( i , 1 )
b1(N,1)=1.0 d0
b2( i ,1)=b1( i , 1 )

33
call MMULT(mk,N,N, b2 ,N, L2)
b2( i ,1)=L2( i ,1)+ bc1 ( i , 1 )
b2(N,1)=1.0 d0
v( i ,1)=v( i , 1 ) + ( dt /6.0 d0 ) ∗ ( v( i , 1 ) + 2.0 d0 ∗ b( i , 1 ) + 2 ∗ b1( i ,1)+ b2( i , 1 ) )
rrk ( i , j+1)=v( i , 1 )
end do
end do
! centradas no uniformes

do j =1, O
do i =1, N
vn( i ,1)= vi ∗ cos (x( i ,1) ∗ ( pi /2))+ vf ∗ sin (x( i ,1) ∗ ( pi /2))
bcn ( i ,1)= 0.0 d0
bcn (N−1,1)= s1 −a1
bcn (N,1)= 0.0 d0
bc1n ( i ,1)= 0.0 d0
bc1n (N−1,1)= s2 −a2
bc1n (N,1)= 0.0 d0
bn( i ,1)=vn( i , 1 )
call MMULT(mr2 ,N,N, bn ,N, Ln)
bn( i ,1)=Ln( i ,1)+bcn ( i , 1 )
bn(N,1)=1.0 d0
b1n( i ,1)=bn( i , 1 )
call MMULT(mr2 ,N,N, b1n ,N, L1n)
b1n( i ,1)=L1n( i ,1)+bcn ( i , 1 )
b1n(N,1)=1.0 d0
b2n( i ,1)=b1n( i , 1 )
call MMULT(mk,N,N, b2 ,N, L2)
b2n( i ,1)=L2n( i ,1)+ bc1n ( i , 1 )
b2n(N,1)=1.0 d0
vn( i ,1)=vn( i , 1 ) + ( dt /6.0 d0 ) ∗ ( vn( i , 1 ) + 2.0 d0 ∗ bn( i , 1 ) + 2 ∗ b1n( i ,1)+ b2n( i , 1 ) )
rrk ( i , j+1)=v( i , 1 )
rrk2 ( i , j+1)=vn( i , 1 )
end do
end do
open ( unit =25, f i l e =' rk . txt ' )
open ( unit =26, f i l e =' rk2 . txt ' )
do i = 1 , N
write (25 ,99) ( rrk ( i , j ) , j = 1 , O+1)
write (26 ,99) ( rrk2 ( i , j ) , j = 1 , O+1)
enddo
end program

34
Bibliografía
[1] Joel H. Ferziger and Milovan Peric. Computational Methods for Fluid Dynamics.
2002.

[2] Bengt Fornberg. Generation of nite dierence formulas on arbitrarily spaced grids.
Mathematics of Computation, 51(184):699699, 1988.

35

You might also like