Está en la página 1de 20

MEC223 Fundamentos de la dinámica de fluidos computacional

Prof. Christopher Cooper

Tarea 2: Ecuaciones conservativas y


método de volúmenes finitos.

Matías Flores Guzmán


Claudio Jerez Sanhueza

06 diciembre 2021
1. Introducción y presentación del problema

En el presente trabajo se solicita el entendimiento y modelación del fenómeno que ocurre en el


tubo de Sod, en el que se considera un tubo unidimensional muy largo con dos secciones
separadas por una membrana. A un lado de la membrana tenemos un gas en reposo con P1 y
ρ1, mientras que al otro lado tenemos el mismo fluido en reposo, pero a P2 y ρ2. En el tiempo
t = 0 sacamos la membrana y dejamos evolucionar el sistema, que debiese tender a equilibrarse.
Para llevar a cabo la resolución numérica del problema se utilizarán las ecuaciones Lax–
Friedrichs, Richtmyer 's con el objetivo de lograr la correcta modelación del fenómeno físico

Figura 1. Condición inicial del tubo de Sod.

Como se puede observar en la información de la literatura, al transcurrir el tiempo luego de


sacar el diafragma, tenemos subdivisiones en las regiones presentadas anteriormente como se
muestran a continuación.

Figura 2. Tubo de Sod, t = 0


Figura 3. Tubo de Sod, t > 0

La figura 3 representa las condiciones iniciales en un tubo de choque. Un diafragma es x0 separa


las 2 regiones (regiones 1 y 5) que tienen diferentes densidades y presiones, las dos regiones
están en un estado constante, con velocidad 0 para ambos lados es decir ambos fluidos se
encuentran inicialmente en reposo. Para el tiempo t > 0 (figura 3) el diafragma está roto.
Considerando el caso antes de que cualquier onda no haya alcanzado el límite izquierdo o
derecho. Con estas observaciones se tienen que los puntos x1 y x2 representan la ubicación de
la “cabeza” y la “cola” de la onda de rarefacción (se hace menos densa), esta se mueve hacia
la izquierda. El punto x3 es la posición de un elemento de fluido inicialmente en x0 ha alcanzado
en el tiempo t, a este punto se le denomina discontinuidad de contacto, en este punto la presión
y la componente normal de la velocidad son continuas. El punto x4 es la onda de choque
moviéndose hacia la derecha, a través de esta onda todas las cantidades serán discontinuas.

2. Marco teórico

Para la realización de una modelación del fenómeno en el tubo de Sod, se considera como
ecuación medular, la ecuación de Euler, que es resultado de la conservación de la cantidad de
movimiento en un fluido donde se desprecia la viscosidad. Adicionalmente se agrega las
ecuaciones de conservación de masa y energía en una dimensión, obteniendo la ecuación en
forma conservativa como la siguiente:

Donde, para un caso de unidimensional:


Para lograr completar este sistema de ecuaciones, se debe considerar asimismo una ecuación
de estado que permita relacionar las variables termodinámicas involucradas con la presión del
fluido de trabajo. Dicha ecuación corresponde a la ley de estado de gases ideales, escrita de la
siguiente forma:

Donde encontramos:
𝑃: presión del fluido
𝛾: ratio de calores específicos
𝐸: energía interna
𝜌: densidad
𝑢: velocidad axial

Ahora bien, para ejecutar la resolución numérica, se utilizarán dos métodos para ecuaciones de
tipo conservativa: Lax-Friedrichs y Richtmeyer.
Lax-Friedrichs: este método consiste en discretizar con diferencia adelantada en el tiempo y
centrada en el espacio. A continuación, se reemplaza el termino en i por el promedio de los
nodos más cercano, con el objetivo de evitar problemas de inestabilidad. Por ende, se tiene que:

Richtmyer´s: el principio de este esquema reside en el esquema de Lax-Wendroff en dos


pasos modificado para problemas no lineales. En la primera etapa predictiva se calcula las
variables a un paso de tiempo intermedio t n+½.

Posterior al análisis anterior, se proyecta la solución hasta el tiempo n+1 y se evalúa los flujos
en el tiempo t n+½, obteniendo lo siguiente:
Cabe destacar que, al considerar un tubo infinitamente largo, se usara la condición de borde de
Neumann con derivada igual a 0 es ambos extremos del tubo.

3. Detalle de implementación del código

En relación al desarrollo del código en Python:


Importamos las librerías que necesitaremos durante el desarrollo del código.

Luego se define la función “lax_friedrichs(p, u, P, gamma, dt, dx, pasos)”, la cual es descrita
por el enunciado de la tarea. Esta función retorna 3 vectores los cuales corresponden a la
densidad, velocidad axial y presión, cabe destacar que el tamaño de cada uno de ellos es igual
a la cantidad de puntos usados para discretizar el problema. Debido a problemas de
representación numérica al utilizar numpy con dtype=np.float64 para el caso de malla fina con
“1.000.000” de pasos de tiempo usando la discretización descrita por Richtmyers (para ambas
mallas, las dos discretizaciones fueron probabas con una cantidad de pasos de tiempo máximos
igual a “1.000.000”, para saber cuáles eran los valores que tomaban la densidad, velocidad
axial y presión, cuando el sistema entraba en equilibrio. Esto ayudaría a entender de mejor
manera, el motivo por el que los gráficos de la simulación usando Richtmyers tendrían una
forma “inestable” en el lado derecho del tubo) por lo cual se investigó para encontrar alguna
solución que pudiera ayudar a aumentar la precisión numérica, en la investigación se encontró
que “np.longdouble” podría ser la solución, pero incluso al realizar la simulación usando
“np.longdoble” el modelo en cuestión seguía presentando el mismo problema, por lo cual se
dejaron comentadas dichas líneas de código y se dejó el programa como estaba inicialmente.
Con respecto a la función propiamente tal, al comienzo se realiza la copia de los vectores que
contienen los valores iniciales del problema (densidad, velocidad axial y presión), esto se
realiza para no tener que volver a generar los valores iniciales cada vez que se ejecutan los
métodos solicitados en la tarea, además se despeja la energía de la formula (4) y se usa para
obtener la energía inicial del sistema.
Como en el enunciado hacen el caso para unidimensional, definimos los valores para U (de
esta forma será más sencillo trabajar el problema y queda tal cual aparece en el enunciado). En
el ciclo For, se toma como entrada la cantidad de iteraciones que se harán “pasos”, según
enunciado se calculan los valores de F y así el U se va actualizando, por eso se define afuera el
U. Luego se usa la ecuación de Lax-Friedrichs, se trabaja con una matriz con 3 filas (que
representa los componentes del vector, por ejemplo, para el caso de U son p, p*u y E) y tantas
columnas según la discretización, aquí se modifican los valores del medio, según la formula
(5) del enunciado. Para las condiciones de borde ya que, al considerar un tubo infinitamente
largo, se usará Neumann con derivada igual a 0 en ambos extremos, de esta forma permite que
la onda de presión “salga” del dominio. Finalmente, se usa la formula (4) para actualizar la
presión.

Ahora, se realiza la resolución numérica del método de Richtmyer’s , que es un poco más largo
ya que realmente es un esquema de Lax Friedrichs pero en 2 pasos. Este método retorna los
mismos 3 vectores que retornaba el método descrito anteriormente. Además, inicialmente son
muy parecidos, aquí se define el Fn_inter_der y el Fn_inder_izq que representan los valores
de la ecuación (6) siendo el _der el valor adelantado y el _izq el valor atrasado. Dentro del ciclo
for como se necesita obtener los valores Fn inter, se obtienen todos los valores del lado derecho
y del lado izquierdo (4). Para la etapa de corrección como bien dice el enunciado de la tarea,
se proyecta la solución hasta el tiempo final n+1 evaluando los flujos en el tiempo t n+ ½ según
la ecuación (7), de esta forma finalmente se actualizan los valores para retornar la densidad, la
velocidad y la presión.
Ahora, se define “condicion_inicial(cond0, cond1, nx)”, que para la presentación del problema
se definen (8). Aquí definimos las 2 condiciones, del lado izquierdo y derecho del tubo. Esta
función retorna la densidad, velocidad y presión.
Luego, se define la función “graficar(x, info_graficar, mediciones, nombre)”, se parte
colocando las leyendas que dará la información de los datos en la esquina superior derecha
(etiquetas), en el ciclo for según la cantidad de mediciones se almacenan todas las etiquetas
de los tiempos y al final se corresponde lo de la recta con la etiqueta.

Luego se define “generar_simulacion(x, t_col, funcion, p0, u0, P0, gamma, dt, dx)”, la idea de
este método es que al pasarle la “función” y todos los valores que necesitas para graficar,
empieza a ejecutar en 5 instantes de tiempo, y guarda los resultados y los grafica. Cuando sea
el tiempo 0, guarda los valores iniciales, en caso contrario se calcula el paso de tiempo (tiempo
actual dividido en delta t) y se define la función para calcular la densidad, la presión y la
velocidad axial.

Finalmente, en la presentación del problema en el que se modelará un flujo desarrollado al


interior de un tubo de largo 2 [m], y cual esta lleno de un gas ideal (γ =4) en reposo.
Para la malla gruesa, según enunciado se pide una discretización espacial de 300 nodos y un
paso temporal de 0.0005.

Para la malla fina, según enunciado se pide una discretización espacial de 1500 nodos y un
paso temporal de 0.0001.

4. Resultados de las distintas simulaciones con sus


correspondientes análisis.

a. Malla gruesa

▪ ΔP = 0.9
Se solicita realizar una simulación para los dos métodos presentados anteriormente en la que
se tenga una discretización espacial de 300 nodos y un paso temporal de 0.0005. Los gráficos
de la distribución de la densidad, presión y velocidad a lo largo del eje x para distintos instantes
de tiempo se muestran a continuación:
Usando método de Lax–Friedrichs:

Figura 4. Variación de la densidad. Figura 5. Variación de la velocidad axial.


Figura 6. Variación de la presión.

Usando método de Richtmyer's:

Figura 7. Variación de la densidad. Figura 8. Variación de la velocidad axial.

Figura 9. Variación de la presión.

Al observar el grafico de velocidad del método de Lax–Friedrichs, se puede observar que


existen variaciones de velocidad hacia ambos lados del eje, por ende, se concluye que se
encuentran dos ondas se están propagando, una hacia la izquierda y otra en dirección opuesta.
Al estudiar el fenómeno, que según distintas fuentes es usado para el estudio de la “detónica”,
es decir el estudio científico de los fenómenos físico-químicos de la detonación y sus
interacciones, se puede inferir que la onda que viaja en dirección izquierda se trata de una onda
de carácter expansivo mientras la que viaja hacia la derecha corresponde a una onda de choque.

Figura 10. Propagación esquemática de ondas en el tubo t >0. Fuente: AMCA.

Para la estimación de la velocidad de cada una de las ondas, se realizará de forma visual al
observar los gráficos del esquema Richtmyer's y las ondas que demoran “t” tiempo en recorrer
“x” distancia, donde obtenemos que la onda expansiva posee una velocidad de 1,29 [m/s]
mientras la onda de choque viaja a una velocidad de 1,75 [m/s].

▪ ΔP = 0.8 y ΔP = 1.1
Al cambiar la diferencia de presión se observa lo siguiente, usando el método de Lax–
Friedrichs:

Figura 11. Variación de la densidad, dp = 0.8 Figura 12. Variación de la velocidad axial, dp = 1.1
Figura 13.Variación de la velocidad axial, dp=0.8 Figura 14.Variación de la velocidad axial, dp=1.1

Figura 15. Variación de la presión., dp = 0.8 Figura 16. Variación de la presión axial, dp = 1.1

Al cambiar la diferencia de presión se observa lo siguiente, usando el método de Richtmyer's:

Figura 17. Variación de la densidad, dp = 0.8 Figura 18. Variación de la densidad, dp = 1.1
Figura 19.Variación de la velocidad axial, dp=0.8 Figura 20.Variación de la velocidad axial, dp=1.1

Figura 21. Variación de la presión., dp = 0.8 Figura 22. Variación de la presión.axial, dp = 1.1

Se observa que para el método de Lax–Friedrichs, el grafico de densidad se mantiene constante


en forma y con los mismos valores (o muy parecidos), pero para cuando dp = 1.1 y cuando t =
0.2 [s] la curva cambia su forma en comparación a dp = 0.8 y dp = 0.9. Además, al analizar la
gráfica de la variación de la velocidad axial, estos poseen la misma forma o muy parecida, pero
los valores de velocidad son mayores cuando la diferencia de presión es mayor, esto tiene
sentido. Y para la gráfica de variación de presión no se observan cambios en la forma, pero si
en sus valores.
Por otro lado, para el método de Richtmyer’s, el grafico de densidad si bien posee la misma
configuración en relación al escalamiento (producto de la discontinuidad de contacto) pero sus
valores en relación a las diferencias de presión, para dp = 0.8 la diferencia de densidad entre la
onda de choque a medida que se desplaza por el tubo es mayor, siendo el lado derecho del
mismo un valor de densidad muy por debajo del 0.9 y 1.1. Para la gráfica de velocidad axial,
los valores se mantienen muy parecidos, no parece haber gran cambio al respecto. Finalmente,
para los valores de la presión, la onda de choque se establece cerca de los 0.4 de presión para
cuando el dp = 1.1, y por debajo de este valor para los dp = 0.8 y 0.9, en relación a la forma
del mismo se comportan igual.
Ahora bien, realizando una comparativa entre ambos esquemas utilizados encontramos ciertas
fortalezas y debilidades en cada uno de ellos.
El método de Lax–Friedrichs comprende el uso de aproximaciones de primer orden (diferencia
adelantada en el tiempo) y de segundo orden (diferencia centrada en el espacio), que en
promedio da como resultado una expresión de primer orden lo que lo cual provoca que el
método posea errores de tipo difusivos, que trae consigo un escalonamiento en la curva en la
zona del gradiente, efecto notorio en las gráficas resultantes, especialmente en la curva de
velocidad.
El método de Richtmyer's solo comprende el uso de aproximaciones de segundo orden, lo que
provoca a diferencia del primer método errores de tipo dispersivo. Este tipo de métodos que
acompañas los términos por derivadas impares trae consigo oscilaciones a la curva antes del
gradiente, a pesar de aquello el gradiente se ve correctamente representado. Este
comportamiento se observa en todas las gráficas del método, donde se observan sobre impulsos
antes de los gradientes de presión, densidad y velocidad.

b. Malla fina

Se solicita realizar una simulación para los dos métodos presentados anteriormente en la que
se tenga una discretización espacial de 1500 nodos y un paso temporal de 0.0001. Los gráficos
de la distribución de la densidad, presión y velocidad a lo largo del eje x para distintos instantes
de tiempo se muestran a continuación:
Usando método de Lax–Friedrichs:as

Figura 23. Variación de la densidad. Figura 24. Variación de la velocidad axial.


Figura 25. Variación de la presión.

Usando método de Richtmyer's:

Figura 26. Variación de la densidad. Figura 27. Variación de la velocidad axial.

Figura 28. Variación de la presión.


Al cambiar la diferencia de presión se observa lo siguiente, usando el método de Lax–
Friedrichs:

Figura 29. Variación de la densidad, dp = 0.8 Figura 30. Variación de la velocidad axial, dp = 1.1

Figura 31.Variación de la velocidad axial, dp=0.8 Figura 32.Variación de la velocidad axial, dp=1.1

Figura 33. Variación de la presión., dp = 0.8 Figura 34. Variación de la presión.axial, dp = 1.1
Al cambiar la diferencia de presión se observa lo siguiente, usando el método de Richtmyer's:

Figura 35. Variación de la densidad, dp = 0.8 Figura 36. Variación de la densidad, dp = 1.1

Figura 37.Variación de la velocidad axial, dp=0.8 Figura 38.Variación de la velocidad axial, dp=1.1

Figura 39. Variación de la presión., dp = 0.8 Figura 40. Variación de la presión.axial, dp = 1.1
Figura 41. Método de Lax-Wendroff de 2 pasos (Richtmyer's) para t > 0. Fuente: Journal of
computacional physics.

El uso de la malla fina para este problema, se hace mucho más recomendable para los 2 métodos
analizados. El método de Lax tiende a dejar una curva suave dentro de las discretizaciones,
esto hace que no se distingan de forma precisa los saltos de discontinuidad debido a la onda de
choque producto de la unión de dos fluidos a diferentes condiciones iniciales, pero a pesar de
ello con esta malla es posible evidenciar un acercamiento excelente para la visualización del
problema al compararlo con los datos e información recopilada en el paper estudiado.
Además, para el caso de estudio del método de Richtmyer’s el cual hace más referencia en el
documento, se observan las mismas variaciones (sin considerar las oscilaciones antes de la
onda de choque, a pesar que para la Figura 41 se observan levemente estas variaciones que para
nuestro modelo se notan de forma acrecentada). Si comparamos la gráfica de densidad se
observan 2 escalonamientos en el que se disminuye la densidad para el lado derecho del
diafragma, esto producto de la onda de choque (discontinuidad de contacto). Para el de
velocidad se observa que el de la zona izquierda (de mayor densidad y presión) su velocidad
va aumentando y así pasa el límite del diafragma para luego descender abruptamente hasta
velocidad 0, estos cambios dependiendo el dp también son modificados cambiando levemente
el valor de la velocidad, mas no en la configuración del suceso. Para finalmente analizar el
ultimo grafico de presión que dado las condiciones iniciales se comporta de izquierda a derecha
con mayor presión constante para luego descender y al llegar al diafragma esta se mantiene
constante hasta llegar al punto de cambio de presión debido a la onda de choque que hace
descender la presión hasta el valor inicial del propuesto. En la figura 41 además se observa una
gráfica de energía, que no se modelo en nuestro caso, pero representa la variación de la energía
para los 2 frentes de onda en el que la energía del frente de mayor presión va disminuyendo y
al pasar el diafragma la energía aumenta abruptamente para luego disminuir de la misma forma.
Por otro lado, se observa que el punto “final” en la variación se dan en los mismos valores (x
= 0.75 para el paper, x = 1.4 para nuestra modelación) para las 4 graficas resultante, por lo que
se consideran cálculos consistentes.

5. Conclusiones

De los dos esquemas diferentes usados para la modelación del problema del tubo de Sod
mediante diferencias finitas, el método de Richtmyer's produjo los mejores resultados. Esto
dado que los esquemas obtenidos con este método ofrecen una mejor solución a las
discontinuidades producto de la onda de choque generada. Analizándolo a manera del código,
el primer paso es hacer la predicción (n + ½), que ambos métodos tienen lo mismo (ecuación
5 con la 6 del enunciado, diferenciándose en los valores que toman) pero el segundo paso que
hace la diferencia es la ecuación 7 que hace una corrección (toma lo calculado en la 6 para
obtener los F y generar la corrección) lo que hace que sea más preciso, esto además hace que
sea más costoso computacionalmente (por la cantidad de cálculos para la parte atrasada y
adelantada) en relación al método de Lax.
Para la malla gruesa, se observan “dientes de sierra” al acercarse el grafico, además la malla
fina mejora el calculo de los valores generando una grafica mas detallada y precisa que coincide
de mejor forma con lo obtenido en el artículo.
Lax es una “mala” aproximación ya que trae errores de primer orden, para el método de
Richtmyer’s a pesar de poseer las oscilaciones el gradiente se ve mejor representado lo que se
considera un método mas acertado para este problema.
En relación a el error, mientras mayor cantidad de puntos se usen para la gráfica, aumentan la
cantidad de puntos de oscilación antes de la onda de choque para el método de Richtmyer’s, y
para el método de Lax se pronuncian de mejor forma las líneas horizontales (escalones, que es
buscado en este caso ya que representaría de mejor forma el método pero que casualmente al
mismo tiempo representan un error del mismo, por lo que según la literatura al aumentar el
largo del tubo este error aumenta), pero aun con tendencia de seguir lineal por el suavizado del
método.
Se creía que el método de Richtmyer’s colapsaba al generar esas oscilaciones (al tener esos
datos tan juntos) por lo que en el código se crea en la parte final un aumento en la ventana de
tiempo para visualizar de mejor forma lo que ocurría en esas secciones donde no se apreciaba
bien lo que ocurría, y finalmente al leer los papers y las clases del profesor, damos por
entendido que el método genera esas oscilaciones y no son error de Python al colapsar como
se pensaba.
6. Bibliografía

Christopher Cooper, “Tarea 2”, MEC223 Fundamentos de la dinámica de fluidos


computacional, 2021.
Christopher Cooper, “Apuntes Clases”, MEC223 Fundamentos de la dinámica de fluidos
computacional, 2021.
(S/f). Sciencedirect.com. Recuperado el 3 de diciembre de 2021, de
https://www.sciencedirect.com/science/article/pii/0021999178900232.
(S/f-b). Cimec.org.ar. Recuperado el 6 de diciembre de 2021, de
https://cimec.org.ar/ojs/index.php/mc/article/view/5867 .

También podría gustarte