Académique Documents
Professionnel Documents
Culture Documents
Contenido
1 Introducción ........................................................................................................................................... 3
2 DESARROLLo ....................................................................................................................................... 5
2.1 Parte 1 ........................................................................................................................................... 5
2.1.1 Problema de la difusión: Esquema explícito ......................................................................... 5
2.2 Parte 2 ......................................................................................................................................... 12
2.2.1 Problema de la difusión: Esquema implícito ....................................................................... 12
2.3 Parte 3 ......................................................................................................................................... 16
2.3.1 Problema de la reacción ...................................................................................................... 16
2.4 Parte 4 ......................................................................................................................................... 17
2.4.1 Problema de la difusión – reacción ..................................................................................... 17
3 Anexos ................................................................................................................................................. 19
3.1 Parte 1. Algoritmo esquema explícito. ......................................................................................... 19
3.2 Parte 2. Algoritmo esquema implícito .......................................................................................... 20
3.3 Parte 3. Algoritmo de la reacción ................................................................................................ 22
3.4 Algoritmo: Concentración con esquema explícito, implícito y suma de ambos esquemas. ...... 25
4 Referencias.......................................................................................................................................... 27
ILUSTRACIONES
ECUACIONES
2
Ingeniería Civil Oceánica, Universidad de Valparaíso PROYECTO 2: Advección, Difusión y Reacción
1 INTRODUCCIÓN
Este informe utiliza técnicas numéricas mediante la discretización del espacio, el tiempo y algoritmos que
permiten definir magnitudes de concentraciones en un evento futuro. De esta forma las ecuaciones
propuestas más adelante se resuelven en puntos y no en un dominio que contemplen la infinidad de
puntos en el espacio.
Luego, el siguiente paso es determinar cómo se logra resolver estas ecuaciones de mayor orden
(identificación de un método numérico). En el campo de la modelación hay varios métodos a cuales
acudir, para este caso el mandante ha señalado el uso de las diferencias finitas.
El informe preparado para el curso de Modelación Hidráulica utiliza la ecuación de gobierno de difusión
en una dimensión, mediante dos esquemas numéricos (Esquema explícito y Esquema implícito).
𝜕𝐶 𝜕2𝐶
=𝐷 2
𝜕𝑡 𝜕𝑥
Para escribir la ecuación de gobierno de la difusión en diferencias finitas se recurre a la serie de Taylor:
𝜕𝑛 𝑓
𝑓 (𝑛) =
𝜕𝑥 2
La serie de Taylor es una serie que permite aproximar el valor de las funciones en un punto a partir de
valores dado de la función y de todas sus derivadas.
∞
(1)
(𝑥 − 𝑎) (𝑥 − 𝑎)2 (𝑥 − 𝑎)𝑛
𝑓(𝑥) = 𝑓(𝑎) + 𝑓 (𝑎) + 𝑓 (2) (𝑎) + ⋯ = ∑ 𝑓 (𝑛) 𝑎
1! 2! 𝑛!
𝑛=0
Para la simplificación de la forma que adopta F(x) se describe la serie para dos puntos ubicados 𝑥 + ∆𝑥 y
𝑥 − ∆𝑦, se tiene:
3
Ingeniería Civil Oceánica, Universidad de Valparaíso PROYECTO 2: Advección, Difusión y Reacción
1. ESQUEMA EXPLÍCITO
El esquema explícito es un esquema numérico que permite calcular un estado futuro a partir de estados
actuales conocidos.
Para el modelo de difusión en una dimensión se establecen los siguientes esquemas:
𝜕𝐶 𝐶(𝑥, 𝑡 + ∆𝑡) − 𝐶(𝑥, 𝑡)
(𝑥, 𝑡) = − 𝜗(∆𝑡)
𝜕𝑡 ∆𝑡
2. ESQUEMA IMPLÍCITO
El esquema implícito es un esquema numérico que no presenta problemas en la estabilidad numérica,
por esto ∆𝑥 𝑦 ∆𝑡 son independientes, y al igual que en el caso anterior la derivada temporal se discretiza
mediante diferencias avanzadas y la derivada espacial por diferencias centradas, pero está última
evaluada en un tiempo futuro.
𝐶(𝑥, 𝑡) ↔ 𝐶𝑖 𝜏
4
Ingeniería Civil Oceánica, Universidad de Valparaíso PROYECTO 2: Advección, Difusión y Reacción
2 DESARROLLO
2.1 PARTE 1
2.1.1 Problema de la difusión: Esquema explícito
𝜕𝐶 𝜕2𝐶
=𝐷 2
𝜕𝑡 𝜕𝑥
𝐶(𝑎, 𝑡) = 0 , 𝐶(𝑏, 𝑡) = 0
1 𝑥2
(− )
𝐶(𝑥, 0) = 𝑒 2𝜎 2
𝜎√2𝜋
Ecuación 3. Condición inicial tipo Gaussiana
Donde 𝜎 = (𝑏 − 𝑎)/20.
Utilizando un esquema de diferencias finitas explícito, de tipo avanzado en el tiempo y centrado en el
espacio (FTCS: forward in time, centered in space) se efectúa lo siguiente:
El algoritmo comienza con la inicialización de variables mediante la discretización del espacio y del
tiempo, en ellos se señalan:
𝑚2
El valor del coeficiente de difusión D en .
𝑠
Límite espacial inferior (xmin [𝑚]).
Límite espacial superior (xmax en [𝑚]).
Intervalo de espacios (dx 𝑒𝑛 [𝑚]).
Vector espacial (límite inferior: espaciamiento: límite superior).
Número de nodos en el vector x.
Factor de seguridad (Fs).
Tiempo inicial [𝑠]
Tiempo final [𝑠]
Intervalo de tiempo [𝑠]
Vector temporal (tiempo inicial: intervalo: tiempo final).
Número de nodos.
𝐷 = 1.6
𝑥𝑚𝑖𝑛 = 0
𝑥𝑚𝑎𝑥 = 3
𝑑𝑥 = 0.1
𝑥 = 𝑚𝑖𝑛 ∶ 𝑑𝑥 ∶ 𝑥𝑚𝑎𝑥
𝑚𝑎𝑥 − 𝑥𝑚𝑖𝑛
𝑁𝑥 = +1
𝑑𝑥
𝐹𝑆 = 0.3
𝑡𝑚𝑖𝑛 = 0
𝑡𝑚𝑎𝑥 = 0.2
𝑑𝑥 2
𝑑𝑡 = 𝐹𝑆 ∗ ∗𝐷
2
𝑡 = 𝑡𝑚𝑖𝑛 ∶ 𝑑𝑡 ∶ 𝑡𝑚𝑎𝑥
[𝑁𝑡 𝑎𝑢𝑥] = 𝑠𝑖𝑧𝑒(𝑡 ′ )
Donde el término 𝑠𝑖𝑧𝑒(𝑓) es una función que permite reemplazar la cantidad de elementos del vector
temporal t en una matriz [𝑁𝑡 𝑎𝑢𝑥].
Los valores empleados para la iteración han sido arbitrarios asegurando un factor de seguridad
𝐹𝑆 menor a 1 para garantizar la estabilidad del algoritmo.
El algoritmo del esquema explícito define el intervalo de tiempo 𝑑𝑡 a partir de un intervalo de espacios 𝑑𝑥
dado.
𝑐𝑒 = 𝑧𝑒𝑟𝑜𝑠(𝑁𝑥, 𝑁𝑡)
𝐹 = (𝑥𝑚𝑎𝑥 − 𝑥𝑚𝑖𝑛)/20
1
𝐺=
𝐹 ∗ 𝑠𝑞𝑟𝑡(∗ 𝑝𝑖)
𝑑𝑡
𝐴=𝐷∗ 2
𝑑𝑥 2
𝑐𝑒 (: ,1) = 𝐺 ∗ 𝑒 (−((𝑥−1.5). ) /(2 ∗ 𝐹 2 ))
En este paso se crea una matriz 𝑐𝑒 (concentración con esquema explícito) de ceros de un tamaño
𝑁𝑥 × 𝑁𝑡 .
Se ha designado un desplazamiento del centro de la función hacia el lado derecho.
𝑓𝑜𝑟 𝑡𝑡 = 1 ∶ 𝑁𝑡 − 1
𝑐𝑒(1, 𝑡𝑡 + 1) = 0´
𝑐𝑒(𝑁𝑥, 𝑡𝑡 + 1) = 0
𝑓𝑜𝑟 𝑥𝑥 = 2 ∶ 𝑁𝑥 − 1
𝑐𝑒(𝑥𝑥, 𝑡𝑡 + 1) = 𝑐𝑒(𝑥𝑥, 𝑡𝑡) + 𝐴 ∗ ( 𝑐𝑒(𝑥𝑥 + 1, 𝑡𝑡) − 2 ∗ 𝑐𝑒(𝑥𝑥, 𝑡𝑡) + 𝑐𝑒(𝑥𝑥 − 1, 𝑡𝑡))
𝑒𝑛𝑑
𝑒𝑛𝑑
𝑓𝑜𝑟 𝑡𝑡 = 1 ∶ 𝑁𝑡 − 1
𝑝𝑙𝑜𝑡(𝑥, 𝑐𝑒(: , 𝑡𝑡),′ 𝑏𝑜−′ )
𝑦𝑙𝑖𝑚([0 3])
𝑥𝑙𝑎𝑏𝑒𝑙(′𝑥 [𝑚]′ )
𝑦𝑙𝑎𝑏𝑒𝑙(′𝑐𝑒[−]′ )
𝑒𝑛𝑑
6
Ingeniería Civil Oceánica, Universidad de Valparaíso PROYECTO 2: Advección, Difusión y Reacción
El algoritmo iterativo está formado por un ciclo 𝐹𝑜𝑟 donde se utiliza un contador desde 1 hasta 𝑁𝑡 − 1. Se
agregan las condiciones de borde dentro del ciclo para fijarlos en la matriz mientras avanza la iteración,
luego se agrega a la matriz la configuración de la concentración en un evento futuro utilizando valores
conocidos de un evento presente de la concentración.
La solución numérica de la función 𝐶(𝑥, 𝑡) son todos aquellos puntos en el espacio que puede adquirir la
concentración en un tiempo acotado.
La Figura 1 representa el esquema numérico explícito utilizando las variables especificadas en el punto
anterior.
El eje horizontal indica el tiempo de duración en segundos (× 10−3 ), el eje vertical indica los límites
espaciales (límite inferior y superior, × 10−3 ) y la barra de colores muestra los valores que adquiere la
concentración en el espacio a medida que transcurre el tiempo.
El factor de seguridad asignado en el algoritmo cumple con la condición de Courant (Fs <1), por esto, la
solución numérica es estable en todo el dominio del tiempo.
En la figura 1 es posible visualizar el espaciamiento entre los nodos y el decrecimiento abrupta de la
concentración, esto último es debido a los valores designados a las variables inicializadas.
La concentración máxima obtenida a partir de los datos ingresados está por sobre los 2.5.
7
Ingeniería Civil Oceánica, Universidad de Valparaíso PROYECTO 2: Advección, Difusión y Reacción
Otra forma de representar la solución numérica 𝐶(𝑥, 𝑡), es la Figura 2, donde el eje vertical indica la
magnitud de la concentración y en los ejes horizontales el vector espacial y el vector temporal.
Esta representación confirma el decrecimiento significativo de la concentración, dado que la forma que
adquiere la función 𝐶(𝑥, 𝑡) corresponde a un evento exponencial.
Es importante señalar que los valores obtenidos para la concentración coinciden con la física, o bien, con
eventos reales.
8
Ingeniería Civil Oceánica, Universidad de Valparaíso PROYECTO 2: Advección, Difusión y Reacción
𝑚2 𝑚2
Ilustración 5. Coeficiente de difusión D = 1 Ilustración 4. Coeficiente de difusión D = 1.2
2 2
𝑚2 𝑚2
Ilustración 7. Coeficiente de difusión D = 1.4 Ilustración 6. Coeficiente de difusión D = 1.6
2 2
𝑚2 𝑚2
Ilustración 9. Coeficiente de difusión D = 1.8 Ilustración 8. Coeficiente de difusión D = 2
2 2
9
Ingeniería Civil Oceánica, Universidad de Valparaíso PROYECTO 2: Advección, Difusión y Reacción
Al utilizar un coeficiente de difusión menor indica que el flujo que se origina debido a las diferencias de
concentraciones en el fluido es bajo, es decir, las magnitudes de las concentraciones son muy parecidas
entre ellas a medida que transcurre el tiempo y disminuye lentamente, de esta forma el proceso de
m2
mezcla se hace más lento, en cambio en la Ilustración 7 con un coeficiente de difusión de 2 , el flujo
2
es mayor en ese instante de tiempo, es decir, la distancia entre concentraciones es muy alta indicando
una disminución abrupta de la concentración traduciéndose como un proceso de mezcla mucho más
rápido.
La relación existente entre el intervalo espacial y de tiempo se debe a un análisis en el que se asume
una solución del siguiente tipo:
Donde 𝐶(𝑥, 𝑡) es una función que se describe a partir de la separación de la variable del tiempo y del
espacio, o bien la concentración depende del espacio exp(𝑖𝑘𝑥) y en forma separada del tiempo F(t).
2𝜋
k= (longitud de onda).
𝜆
La función que describe el espacio se encuentra acotada entre 0 y 1 dado a la solución de Euler que se
describe como 𝑒 𝑖𝑥 = cos 𝑥 + isin 𝑥. De esta forma se asegura que las perturbaciones que se van
introduciendo al sistema no escapan de estos rangos, vale decir, que no experimenta un acrecentamiento
indefinido.
Al correr el modelo considerando una función F(t) que crece al infinito, el algoritmo se vuelve inestable,
𝐹 𝜏+1
En el desarrollo analítico se construye un cociente , entonces se realiza el cálculo del tiempo actual
𝐹𝜏
y luego el cálculo del tiempo siguiente. Si la razón entre ambas es mayor a 1 entonces la función es
creciente y si es menor a 1 es decreciente.
𝐹 𝜏+1 𝐹 𝜏+1
| 𝜏 |<1 1≤ ≤1
𝐹 𝐹𝜏
Fuente: Modelado de procesos costeros (Patricio Winckler, 2017).
2𝐷∆𝑡 2𝐷∆𝑡
−1 ≤ 1 + [cos(𝑘∆𝑥) − 1] , 1 + [cos(𝑘∆𝑥) − 1] ≤ 1
∆𝑥 2 ∆𝑥 2
10
Ingeniería Civil Oceánica, Universidad de Valparaíso PROYECTO 2: Advección, Difusión y Reacción
2𝐷∆𝑡
La expresión a utilizar es −1 ≤ 1 + [cos(𝑘∆𝑥) − 1] , debido a que esta ordena una restricción al
∆𝑥 2
dominio del espacio y del tiempo a diferencia de la expresión del lado derecho.
Luego se obtiene
∆𝑥 2
∆𝑡 ≤
𝐷[1 − cos(𝑘∆𝑥)]
Para obtener un límite superior del intervalo temporal el denominador de la ecuación debe ser lo más
pequeño. Como presenta una función sinusoidal los valores que puede adquirir 𝑘∆𝑥 están entre el -1 y 1,
luego se utiliza este último valor (𝑘∆𝑥 = −1 ) y se tiene:
∆𝑥 2
∆𝑡 ≤
2𝐷
De esta forma la función F(t) se a sujeta a la restricción que asume el intervalo de espaciamiento.
La inestabilidad del modelo se presenta cuando no se cumple con la condición de seguridad (condición
de Courant).
𝐹𝑠 ≤ 1
La inestabilidad del modelo se presenta cuando el intervalo de tiempo es creciente en todo su dominio,
vale decir, que incrementa esta variable indefinidamente. Esto genera que la concentración crezca a su
vez abruptamente, por lo tanto, es importante imponer la condición para que el algoritmo numérico no
siga incrementándose.
Físicamente no es aceptado este tipo de resultados ya que en la naturaleza no existen procesos de
mezcla en las que la concentración aumente al infinito, mas bien, ocurre todo lo contrario, la
concentración decrece a medida que fluye en el espacio.
11
Ingeniería Civil Oceánica, Universidad de Valparaíso PROYECTO 2: Advección, Difusión y Reacción
2.2 PARTE 2
2.2.1 Problema de la difusión: Esquema implícito
f) Se escribe el algoritmo del problema de difusión dado por (1), (2) y (3).
Al igual que en el esquema explícito se definen las variables de inicialización mediante la discretización
del espacio y del tiempo:
𝑚2
El valor del coeficiente de difusión D en .
𝑠
Límite espacial inferior (xmin [𝑚]).
Límite espacial superior (xmax en [𝑚]).
Intervalo de espacios (dx 𝑒𝑛 [𝑚]).
Vector espacial (límite inferior: espaciamiento: límite superior).
Número de nodos en el vector x.
Tiempo inicial [𝑠].
Tiempo final [𝑠].
Intervalo de tiempo [𝑠].
Vector temporal (tiempo inicial: intervalo: tiempo final).
Número de nodos.
Factor de amplificación.
Para este esquema numérico no es necesario el factor de seguridad como en el caso anterior, por lo que
el intervalo de tiempo 𝑑𝑡 es independiente al intervalo espacial 𝑑𝑥 .
La representación inicial del algoritmo es la siguiente:
𝐷 = 1.6
𝑥𝑚𝑖𝑛 = 0
𝑥𝑚𝑎𝑥 = 3
𝑑𝑥 = 0.1
𝑥 = 𝑚𝑖𝑛 ∶ 𝑑𝑥 ∶ 𝑥𝑚𝑎𝑥
𝑚𝑎𝑥 − 𝑥𝑚𝑖𝑛
𝑁𝑥 = +1
𝑑𝑥
𝐹𝑆 = 0.3
𝑡𝑚𝑖𝑛 = 0
𝑡𝑚𝑎𝑥 = 0.2
𝑑𝑡 = 0.023
𝑡 = 𝑡𝑚𝑖𝑛 ∶ 𝑑𝑡 ∶ 𝑡𝑚𝑎𝑥
[𝑁𝑡 𝑎𝑢𝑥] = 𝑠𝑖𝑧𝑒(𝑡 ′ )
𝐴 = 𝐷 ∗ 𝑑𝑡/(𝑑𝑥 2 )
𝐴𝐴 = 𝑧𝑒𝑟𝑜𝑠(𝑁𝑥, 𝑁𝑥)
𝐴𝐴(1,1) = 1
𝐴𝐴 (𝑁𝑥, 𝑁𝑥) = 1
12
Ingeniería Civil Oceánica, Universidad de Valparaíso PROYECTO 2: Advección, Difusión y Reacción
𝑓𝑜𝑟 𝑗 = 2 ∶ 𝑁𝑥 − 1
𝐴𝐴(𝑗, 𝑗) = 1 + 2 ∗ 𝐴
𝐴𝐴(𝑗, 𝑗 + 1) = −𝐴
𝐴𝐴(𝑗, 𝑗 − 1) = −𝐴
𝑒𝑛𝑑
𝑐𝑖 = 𝑍𝑒𝑟𝑜𝑠(𝑁𝑥, 𝑁𝑡);
𝑥𝑚𝑎𝑥 − 𝑥𝑚𝑖𝑛
𝐹= ;
20
1
𝐺 = ∗ 𝑠𝑞𝑟𝑡(2 ∗ 𝑝𝑖))
𝐹
(𝑥 − 1.5).2
𝑐𝑖(: ,1) = 𝐺 ∗ exp (− )
2 ∗ 𝐹2
𝑓𝑜𝑟 𝑘 = 1 ∶ 𝑁𝑡 − 2
𝑐𝑖(1, 𝑘 + 1) = 0
𝑐𝑖(𝑁𝑥, 𝑘 + 1) = 0
𝑒𝑛𝑑
𝑓𝑜𝑟 𝑥𝑥 = 2 ∶ 𝑁𝑥 − 1
𝑐𝑖(: , 𝑘 + 1) = 𝐴𝐴\𝑐𝑖(: , 𝑘);
𝑒𝑛𝑑
𝑓𝑜𝑟 𝑡𝑡 = 2 ∶ 𝑁𝑡 − 1
𝑝𝑙𝑜𝑡(𝑥, 𝑐𝑖(: , 𝑡𝑡),′ 𝑏𝑜−′ )
𝑦𝑙𝑖𝑚([0 max(max(𝑐𝑖))])
𝑥𝑙𝑎𝑏𝑒𝑙(′𝑥 [𝑚]′ )
𝑦𝑙𝑎𝑏𝑒𝑙(′𝑐𝑖[−]′ )
𝑒𝑛𝑑
Por último se finaliza con un ciclo 𝐹𝑜𝑟 donde se utiliza un contador desde 2 hasta 𝑁𝑥 − 1, considerando
que la concentración en un evento futuro estará dada por la matriz de la concentración de 𝑐𝑖 en un
tiempo actual sobre la determinante de la matriz 𝐴𝐴.
13
Ingeniería Civil Oceánica, Universidad de Valparaíso PROYECTO 2: Advección, Difusión y Reacción
Ilustración 14. Resultados 𝐂(𝐱, 𝐭).con esquema explícito Ilustración 13. Resultados 𝐂(𝐱, 𝐭) con esquema implícito
15
Ingeniería Civil Oceánica, Universidad de Valparaíso PROYECTO 2: Advección, Difusión y Reacción
2.3 PARTE 3
2.3.1 Problema de la reacción
Se considera un problema de reacción en una dimensión, en un dominio −𝐿 < 𝑥 < 𝐿, definido por la
ecuación:
𝜕𝐶
+ 𝑘𝐶 = 0
𝜕𝑡
Donde 𝑘 > 0 es el coeficiente de decaimiento. Se utilizan las condiciones de borde e iniciales (2) y (3) con
el algoritmo con esquema explícito (FTCS) para las siguientes tareas:
16
Ingeniería Civil Oceánica, Universidad de Valparaíso PROYECTO 2: Advección, Difusión y Reacción
2.4 PARTE 4
2.4.1 Problema de la difusión – reacción
Considera un problema de difusión-reacción en una dimensión, en un dominio 𝑎 < 𝑥 < 𝑏, definido por la
ecuación:
𝜕𝐶 𝜕2𝐶
+ 𝑘𝐶 = 𝐷 2
𝜕𝑡 𝜕𝑥
17
Ingeniería Civil Oceánica, Universidad de Valparaíso PROYECTO 2: Advección, Difusión y Reacción
La Ilustración 18, al igual que la Ilustración anterior muestra la disminución de la concentración a medida
que transcurre el tiempo. El coeficiente de decaimiento 𝑘 se ha incrementado de forma importante para la
visualización de la variación de la concentración. Para este caso se ha seleccionado un valor 𝑘 igual a 15.
El comportamiento de la concentración que muestra la Ilustración 18 disminuye mucho más rápido.
18
Ingeniería Civil Oceánica, Universidad de Valparaíso PROYECTO 2: Advección, Difusión y Reacción
3 ANEXOS
% ALGORITMO DE DIFUSIÓN EN 1D
% Creado por DBS
% Fecha: 12/10/2017
% Nombre: Proyecto 2
% Unidades sistema mks (metro, kilogramo, segundo).
%%
%Primeramente limpiar el Workspace (limpiar las variables)
clc; % Limpiar el comand window
clear all; % Borra las variables (workspace)
%Close all; % Borra las figuras
tic
%%
%%=========================================================
%Luego necesito inicializar las variables
%¿Qué necesito inicializar?
% =========================================================
D = 1.6; % Coeficiente de difusión en [m^2/s]
19
Ingeniería Civil Oceánica, Universidad de Valparaíso PROYECTO 2: Advección, Difusión y Reacción
%% Condición inicial
% Inicialización de la concentración
ce = zeros(Nx, Nt); % Indica que la concentración es una matriz de puros ceros inicialmente,
% que tiene Nx elemntos en el espacio y Nt elementos en el tiempo //
F = (xmax-xmin)/20; % Desviación estandar
G = 1/(F*sqrt(2*pi));
A = D*dt/(dx^2); %Factor de amplificación
ce(:,1)= G*exp(-((x-1.5).^2)/(2*F^2)); % Condición inicial dada en la tarea
%ce(fix(Nx/2),1)df = 12; %(condicíón inicial cualquiera, la concentración en el tiempo 1 para un punto ubicado en
Nx/2.
%fix para que escoja el valor entero
%% =======================================================================
% ALGORITMO EXPLÍCITO
for tt = 1 : Nt-1;
ce(1,tt+1) = 0; % Condiciones de borde
ce(Nx,tt+1) = 0;
for xx = 2 : Nx-1;
ce(xx,tt+1) = ce(xx,tt) + A*ce(xx+1,tt)-2*A*ce(xx,tt)+A*ce(xx-1,tt); %concentración en un evento futuro
end
end
%% ===========================================================
%PLOTEO
figure(1)
for tt = 1 : Nt-1
plot(x, ce(:,tt),'mo-')
ylim([0 3]);
xlabel('x[m]');
ylabel('ce[-]');
text(.5,8,['t = ',num2str(t(tt)), ' [s] de ',num2str(tmax),' [s]' ])
pause(0.1)
end
toc % , Herramiienta para determinar el tiempo de cálculo /Cuanto se demora en correr (Elapsed = tiempo de
cómputo)
% ALGORITMO DE DIFUSIÓN EN 1D
% Creado por DBS
% Fecha: 12/10/2017
% Nombre: Proyecto 2.2
% Unidades sistema mks (metro, kilogramo, segundo).
%%
%Primeramente necesito limpiar el Workspace (limpiar las variables)
clc; % Limpiar el comand window
clear all; % Borra las variables (workspace)
%Close all; % Borra las figuras
tic
%%
20
Ingeniería Civil Oceánica, Universidad de Valparaíso PROYECTO 2: Advección, Difusión y Reacción
%%=========================================================
%Luego necesito inicializar las variables
%¿Qué necesito inicializar?
% =========================================================
D = 1.6; % Coeficiente de difusión en [m^2/s]
%% =======================================================================
% ALGORITMO IMPLÍCITO
%Acá no hay condición Courant por lo que el dx y dt no
%están relacionados (son independientes).
AA = zeros(Nx,Nx);
AA(1,1) = 1;
AA(Nx,Nx) = 1;
for j = 2:Nx-1
AA(j,j) = 1 + 2*A; % Valores en la diagonal
AA(j,j+1) = -A;
AA(j,j-1) = -A;
end
%% Condición inicial
%% PLOTEO
for k = 1: Nt-2
ci(1,k+1) = 0; % Condiciones de borde
ci(Nx,k+1) = 0;
for xx = 2 : Nx-1;
ci(:,k+1) =AA\ci(:,k);
21
Ingeniería Civil Oceánica, Universidad de Valparaíso PROYECTO 2: Advección, Difusión y Reacción
end
end
for tt = 1 : Nt-1
plot(x,ci(:,tt),'bo-')
ylim([0 3])
%xlim([0 40])
xlabel('x [m]')
ylabel('ci [-]')
text(.5,8,['t = ', num2str(t(tt)), ' [s] de ',num2str(tmax),' [s]' ])
pause(0.1)
end
k = 1;
K = (1-k*dt);
ce = zeros(1,Nt);
ce(1)=(1/(sqrt(2*pi)))*exp(-(0^2)/(2*F^2));
k1 = 5;
K1 = (1-k1*dt);
ce1 = zeros(1,Nt);
ce1(1)=(1/(sqrt(2*pi)))*exp(-(0^2)/(2*F^2));
k2 = 10;
K2 = (1-k2*dt);
ce2 = zeros(1,Nt);
ce2(1)=(1/(sqrt(2*pi)))*exp(-(0^2)/(2*F^2));
k3 = 20;
K3 = (1-k3*dt);
ce3 = zeros(1,Nt);
ce3(1)=(1/(sqrt(2*pi)))*exp(-(0^2)/(2*F^2));
for cc=1:Nt-1
ce(cc+1)=K*ce(cc);
end
for tt=1:Nt-1
ce1(tt+1)=K1*ce1(tt);
end
22
Ingeniería Civil Oceánica, Universidad de Valparaíso PROYECTO 2: Advección, Difusión y Reacción
for nn=1:Nt-1
ce2(nn+1)=K2*ce2(nn);
end
for xx=1:Nt-1
ce3(xx+1)=K3*ce3(xx);
end
hold on
plot(t,ce,'ro-');
plot(t,ce1,'bo-');
plot(t,ce2,'mo-');
plot(t,ce3,'go-');
%ylim([0 max(max(ce))])
%xlim([0 0.4])
ylabel('Concentración')
xlabel('t [s]')
legend('k = 1','k = 5','k = 10','k = 20');
hold off
j) % Inicialización de variables
% =========================================================================
clc;
clear all;
close all;
tic % optimizar
%% Condiciones iniciales
k = 1;
K = (1-k*dt);
ce = zeros(1,Nt);
ce(1)=(1/(sqrt(2*pi)))*exp(-(0^2)/(2*F^2));
k1 = 5;
K1 = (1-k1*dt);
ce1 = zeros(1,Nt);
ce1(1)=(1/(sqrt(2*pi)))*exp(-(0^2)/(2*F^2));
k2 = 10;
K2 = (1-k2*dt);
ce2 = zeros(1,Nt);
ce2(1)=(1/(sqrt(2*pi)))*exp(-(0^2)/(2*F^2));
23
Ingeniería Civil Oceánica, Universidad de Valparaíso PROYECTO 2: Advección, Difusión y Reacción
k3 = 0;
K3 = (1-k3*dt);
ce3 = zeros(1,Nt);
ce3(1)=(1/(sqrt(2*pi)))*exp(-(0^2)/(2*F^2));
k4 = -1;
K4 = (1-k4*dt);
ce4 = zeros(1,Nt);
ce4(1)=(1/(sqrt(2*pi)))*exp(-(0^2)/(2*F^2));
k5 = -5;
K5 = (1-k5*dt);
ce5 = zeros(1,Nt);
ce5(1)=(1/(sqrt(2*pi)))*exp(-(0^2)/(2*F^2));
k6 = -10;
K6 = (1-k6*dt);
ce6 = zeros(1,Nt);
ce6(1)=(1/(sqrt(2*pi)))*exp(-(0^2)/(2*F^2));
for cc=1:Nt-1
ce(cc+1)=K*ce(cc);
end
for tt=1:Nt-1
ce1(tt+1)=K1*ce1(tt);
end
for nn=1:Nt-1
ce2(nn+1)=K2*ce2(nn);
end
for xx=1:Nt-1
ce3(xx+1)=K3*ce3(xx);
end
for q=1:Nt-1
ce4(q+1)=K4*ce4(q);
end
for r=1:Nt-1
ce5(r+1)=K5*ce5(r);
end
for p=1:Nt-1
ce6(p+1)=K6*ce6(p);
end
hold on
plot(t,ce,'ro-');
plot(t,ce1,'bo-');
plot(t,ce2,'mo-');
plot(t,ce3,'ko-');
plot(t,ce4,'Yo-');
plot(t,ce5,'co-');
plot(t,ce6,'go-');
ylim([0 2])
ylabel('Concentración')
xlabel('t [s]')
24
Ingeniería Civil Oceánica, Universidad de Valparaíso PROYECTO 2: Advección, Difusión y Reacción
hold off
% Inicialización de variables
% =========================================================================
clc;
clear all;
close all;
tic
%% ========================================================================
% Iteración mediante algoritmo explícito
% =========================================================================
ce = zeros(Nx,Nt); % Concentración
F = (xmax-xmin)/20; % Desviación estandar
G = 1/(F*sqrt(2*pi));
ce(:,1)= G*exp(-(x.^2)/(2*F^2)); % Condición inicial
% Condición inicial
for tt = 1 : Nt-1
ce(1,tt+1) = 0; % Condición de borde izquierda
ce(Nx,tt+1) = 0; % Condición de borde derecha
for xx = 2 : Nx-1;
ce(xx,tt+1) = ce(xx,tt) + A*( ce(xx+1,tt) - 2*ce(xx,tt) + ce(xx-1,tt) );
end
end
%% ========================================================================
25
Ingeniería Civil Oceánica, Universidad de Valparaíso PROYECTO 2: Advección, Difusión y Reacción
B = D*dtt/(dx^2);
AA = zeros(Nx,Nx);
AA(1,1) = 1;
AA(Nx,Nx) = 1;
for k = 2:Nx-1
AA(k,k) = 1 + 2*B;
AA(k,k+1) = -B;
AA(k,k-1) = -B;
end
ci = zeros(Nx,Nt); % Concentración
ci(:,1)= G*exp(-(x.^2)/(2*F^2)); % Condición inicial
for l = 1: Nt-1
%% ========================================================================
% Ploteo
% =========================================================================
%if plotfigure1 == 1
%figure(1)
for tt = 1 : Nt-1
[tt Nt];
subplot(2,2,1)
hold off
plot(x,ce(:,tt),'mo-')
ylim([0 1.5])
xlim([-3 3])
xlabel('x [m]')
ylabel('C.Exp')
text(.5,8,['t = ', num2str(t(tt)), ' [s] de ',num2str(tmax),' [s]' ])
subplot(2,2,3)
hold off
plot(x,ci(:,tt),'bo-')
ylim([0 1.5])
xlim([-3 3])
xlabel('x [m]')
ylabel('C. Imp.')
subplot(2,2,2)
hold off
plot(x,ce(:,tt),'mo-')
hold on
plot(x,ci(:,tt),'b-')
ylim([0 1.5])
xlim([-3 3])
xlabel('x [m]')
ylabel('C.exp , C.imp')
subplot(2,2,4)
26
Ingeniería Civil Oceánica, Universidad de Valparaíso PROYECTO 2: Advección, Difusión y Reacción
hold off
plot(x,ce(:,tt)-ci(:,tt),'ro-')
ylim([-1.5 1.5])
xlim([-3 3])
xlabel('x [m]')
ylabel('C.exp - C.imp')
pause(0.1)
end
toc
4 REFERENCIAS
Winckler,P.(2017). Modelado de procesos costeros (borrador).
Apuntes del curso de Modelación Hidráulica. Ingeniería Civil Oceánica. Universidad de Valparaíso
27