Integración en el tiempo de campos 2D (II)

En este artículo vamos a presentar un ejemplo de simulaciones hechas con el código del artículo anterior. (Con animaciones incluidas)

Se trata de un problema conocido y sencillo de dinámica de fluidos: movimiento de un fluido alrededor de una placa plana finita. Para empezar, se ha implementado una función con las derivadas temporales de las variables: densidad, velocidad “Vx”, velocidad “Vy”, presión y entropía. Es decir, las ecuaciones de Navier Stokes (en su variante que utiliza la ecuación de la entropía para gases en lugar de la energía interna) más la ecuación de estado del fluido derivada con respecto al tiempo (considerando que éste tiene comportamiento de gas ideal). 

La función se llama navierstokesaig.m (Navier Stokes Adiabatic Ideal Gas) y recibe como argumentos el tiempo y un cell array con los 5 campos 2D correspondientes a las 5 variables (hasta aquí como cualquier función a integrar mediante una ode-solver) y además recibe como parámetros una matriz S para las derivadas parciales definida por la malla (se explica más adelante), el número de Reynolds, el calor específico adimensional (gamma) γ = Cv/Cp , un puntero (o “handle”) a la función en la que se implementan las condiciones de contorno y una lista de parámetros para pasar a dicha función. En este caso esa función es: placaplana.m

Por tanto, la funcion navierstokesaig define el problema fluidodinámico de cualquier gas perfecto y la función placaplana describe la geometría y condiciones de contorno de nuestro problema concreto. Las condiciones de contorno son muy sencillas en este caso:

  • Velocidad Vx uniforme y constante a la entrada (primera columna de la matriz o de la malla)
  • Velocidad Vy nula a la entrada
  • Velocidades Vx y Vy nulas en un tramo de la fila central de la malla

Esta última condición equivale a decir que hay una placa plana horizontal de espesor nulo o despreciable y es lo único necesario para definir la geometría del problema. Al no especificar otra cosa, se comportará de modo adiabático al igual que el resto del dominio.

Por comodidad es conveniente utilizar la misma función placaplana para especificar las condiciones iniciales (en este caso son: velocidad uniforme horizontal de módulo 1 en todo el dominio salvo en la placa y resto de variables de valor uniforme e igual a uno). El archivo ExperimmentoPlacaPlana.m llama a todas estas funciones de forma adecuada para simular 0.2 segundos de tiempo simulado. A su vez el archivo movieFluidos.m os ayudará a representar los resultados obtenidos a modo de animación (Prestad atención a que el valor de “Var” en esta función es 4 salvo que se le de otro valor, por lo que se representará la velocidad Vx).

Por último, como se anunció en el artículo anterior, explicamos algunos detalles del funcionamiento de gridderiv. El problema de fluidodinámica está definido, como se ha dicho, por cinco ecuaciones en derivadas parciales y cinco variables. Eso significa que cada vez que queramos evaluar la derivada temporal tendremos que derivar cinco veces sobre la misma malla. Teniendo en cuenta que el método de integración de Dormand y Prince de orden 5 (implementado en ode2D) evalúa la función seis veces (como mínimo) en cada paso de integración y que podemos tener del orden de varias centenas de pasos en un problema sencillo de un segundo de tiempo simulado, resulta que nos plantamos con facilidad en más de diez mil llamadas a la función gridderiv para derivar sobre la misma malla. Esto hace que sea imprescindible ahorrar todos los cálculos que se repiten (la mayoría) cada vez que se evalúan las derivadas parciales. Por eso la función gridderiv está pensada para ejecutarse en dos etapas:

  • Primera etapa:  S = gridderiv(x, y);
    • Realiza las operaciones que sólo dependen de la geometría de la malla y los almacena en la matriz tridimensional S. (Ésta es la matriz que se calcula a la vez que las condiciones iniciales en la función placaplana y que se pasa como parámetro a navierstokesaig)
  • Segunda etapa: [Dx, Dy, Dxx, Dxy, Dyy] = gridderiv(F, S);
    • Realiza el cálculo de las 5 derivadas parciales (o 2 si sólo se le piden las de primer orden) del campo escalar F.

Con este sistema el tiempo de simulación se reduce en un par de órdenes de magnitud.

Copiando los códigos anteriores y ejecutando la función ExperimentoPlacaPlana obtendréis una simulación de 0.2 segundos de tiempo que no tardará mucho más de medio minuto en realizarse. El precio de dicha brevedad es la baja precisión de los resultados. Cambiando la malla por otra algo más densa se pueden obtener en un tiempo de entre una y cinco horas en PC’s caseros resultados como los que muestran las siguientes imágenes (0.5 segundos de tiempo simulado. Haga click en la imagen para ver la animación):

Distribución de velocidades Vy

Velocidad transversal de un gas alrededor de una placa plana. γ = 1.44; Reynolds = 100; Tiempo = 0.5 seg.

Distribución de velocidades Vx

Velocidad transversal de un gas alrededor de una placa plana. γ = 1.44; Reynolds = 100; Tiempo = 0.5 seg.

Presión de un gas en movimiento alrededor de una placa plana. γ = 1.44; Reynolds = 100; Tiempo = 0.5 seg.

Como se puede observar,  la combinación del cálculo aproximado de las derivadas espaciales con lo grosero de la malla, produce ruido numérico aguas arriba de la placa y, en el caso de la presión, también en las cercanías de ésta. No obstante, la simulación aporta mucha información sobre el comportamiento del fluido en las condiciones recreadas.

Anuncios
Explore posts in the same categories: código, fluidos, matlab, simulación

3 comentarios en “Integración en el tiempo de campos 2D (II)”

  1. Luis Says:

    ¿es parte de tu tesis? jajja, que nivel!

  2. Javier Barro Says:

    Quién sabe. Tal vez sí si algún día la hago. jeje. Gracias.


  3. […] verborrea que sacia los ojos del más curioso. Las animaciones realizadas en este blog para la simulación de fluidos parecen haber gustado a los lectores y, en concreto, han inspirado a los administradores de un blog […]


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


A %d blogueros les gusta esto: