1. Documentation work

Anuncio
Técnicas Avanzadas de Gráficos 3D
Dinámica de Fluidos
Computacional para
Gráficos
Álvaro Pérez Molero
Carlos Garre del Olmo
Indice
1
2
3
4
5
Introducción.............................................................................................................. 3
1.1
¿Qué es la dinámica de fluidos? ....................................................................... 3
1.2
¿Qué es la dinámica de fluidos computacional?............................................... 4
1.3
Aplicaciones de la CFD.................................................................................... 4
Principios Básicos de la Dinámica de Fluidos.......................................................... 5
2.1
Concepto de Fluido........................................................................................... 5
2.2
Fluidos ideales .................................................................................................. 5
2.3
Hipótesis del medio continuo ........................................................................... 5
2.4
Tipos de fluidos ................................................................................................ 6
2.5
Propiedades de los fluidos ................................................................................ 7
2.6
Estudio del comportamiento de los fluidos ...................................................... 8
Principios de la Simulación de Fluidos .................................................................. 12
Lecturas recomendadas........................................................................................... 15
4.1
Modeling the Motion of a Hot, Turbulent Gas. Foster & Metaxas ................ 15
4.1.1
Introducción............................................................................................ 15
4.1.2
Convección y arrastre ............................................................................. 16
4.1.3
Flotabilidad térmica................................................................................ 16
4.1.4
Resultados............................................................................................... 17
4.2
Stable Fluids. Stam ......................................................................................... 18
4.2.1
Introducción............................................................................................ 18
4.2.2
Ecuaciones básicas de Navier-Stokes..................................................... 19
4.2.3
Método de resolución ............................................................................. 20
4.2.4
Resultados............................................................................................... 22
4.3
Visual Simulation of Smoke. Fedkiw, Stam and Jensen ................................ 23
4.3.1
Introducción............................................................................................ 23
4.3.2
Ecuaciones del fluido.............................................................................. 24
4.3.3
Resultados............................................................................................... 25
4.4
Curl-Noise for Procedural Fluid Flow. Bridson ............................................. 27
4.4.1
Introducción............................................................................................ 27
4.4.2
Rotacional............................................................................................... 27
4.4.3
Ruido de Perlin ....................................................................................... 27
4.4.4
Contorno ................................................................................................. 28
4.4.5
Resultados............................................................................................... 28
Bibliografía............................................................................................................. 29
1 Introducción
1.1 ¿Qué es la dinámica de fluidos?
La dinámica de fluidos es una rama de la física relativamente reciente (comienzos del
siglo XX), aunque los conceptos en los que se basa se remontan a la antigua Grecia, a
los trabajos teóricos de Leonardo Da Vinci, y posteriormente al trabajo de un gran
número de físicos como Torricelli, Euler, Bernoulli, etc.
Fig. 1 – Dibujos de Leonardo Da Vinci
La dinámica de fluidos estudia los movimientos de los fluidos (gases y líquidos), debido
a la acción de fuerzas, o a su interacción con otros medios y con el contorno que los
delimita.
En realidad la dinámica de fluidos forma parte de un campo más amplio denominado
mecánica de fluidos, del cual derivan tanto la estática de fluidos (estudia los fluidos en
reposo), como la dinámica de fluidos (estudia los fluidos en movimiento).
En la actualidad, la mecánica de fluidos es una parte esencial de muchas áreas de la
tecnología y la ciencia actual, destacando su papel en el diseño de toda clase de
vehículos (aviones, barcos, coches, etc), estudios del flujo de aire atmosférico, medicina
y biología (flujo de sangre y otros fluidos), ingeniería industrial, etc, etc.
1.2 ¿Qué es la dinámica de fluidos computacional?
En la actualidad en muchos campos es imposible recurrir a soluciones analíticas debido
a la tremenda complejidad de los sistemas que estudia la dinámica de fluidos, por lo que
se recurre a soluciones numéricas que pueden ser computadas por ordenadores.
Surge así una rama de la dinámica de fluidos denominada dinámica de fluidos
computacional, o CFD, que se basa en aproximaciones numéricas de las ecuaciones
físicas empleadas en la dinámica de fluidos.
1.3 Aplicaciones de la CFD
Aparte de las numerosas aplicaciones ya mencionadas, conviene destacar los dos
enfoques utilizados concretamente en la dinámica de fluidos computacional, y que dan
lugar al desarrollo de técnicas muy diferentes en función de los objetivos buscados.
Estos dos enfoques de los que hablamos se podrían denominar: gráficos y simulación.
La CFD aplicada a gráficos
Es muy interesante modelar fluidos de aspecto realista en multitud de aplicaciones,
destacando los juegos de ordenador, el cine, o incluso la creación de texturas y efectos
visuales para programas de dibujo y retoque fotográfico.
En estas aplicaciones se busca un modelo que estéticamente dé buenos resultados, no
siendo necesario que el comportamiento del modelo se ajuste exactamente al
comportamiento de un fluido real.
Si bien en el cine no es un requisito, en el caso de los juegos sí que es necesario el
tiempo real, por lo que estas técnicas, además de plausibles, muchas veces tienen que
ser rápidas y eficientes.
La CFD aplicada a simulación
A veces no nos basta con un modelo que “parezca” comportarse como un fluido, sino
que necesitamos conocer de forma muy exacta cómo se comporta un fluido realmente.
Los modelos de CFD que se utilicen en cualquier campo de la ingeniería deben ser muy
estrictos con la precisión del modelo, procurando que éste se asemeje lo máximo
posible al comportamiento real del fluido.
Siempre que se habla de métodos numéricos, como los utilizados en CFD, estamos
hablando de aproximación, por lo que muchas veces será imposible garantizar que el
modelo es exacto, y todos los esfuerzos se deben centrar en acotar el error y hacer los
modelos tan precisos como sea posible.
Esto da lugar a que estas técnicas generalmente no sean en tiempo real, ya que tampoco
es un objetivo importante en esta clase de aplicaciones
2 Principios Básicos de la Dinámica de Fluidos
2.1 Concepto de Fluido
Para determinar si un cuerpo es o no un fluido no debemos fijarnos en su composición,
sino más bien en su comportamiento.
Un fluido es un cuerpo que carece de elasticidad de forma, es decir, que no tiene forma
propia y por tanto se adapta a la forma del recipiente que lo contiene.
Además, un fluido se deforma de forma continua ante la aplicación de un esfuerzo
cortante (a diferencia de los sólidos, no tienen ninguna resistencia a este tipo de
fuerzas).
Comparándolos con los sólidos, podemos decir que las moléculas de los sólidos están
fuertemente unidas entre sí, mientras que en los líquidos pueden moverse libremente y
separarse sin ofrecer apenas resistencia. Un sólido, ante la aplicación de una fuerza
cortante, no se deforma de manera continua, sino mediante una deformación o
desplazamiento definido.
2.2 Fluidos ideales
Estudiar de forma precisa todas las variables que intervienen en un fluido real puede ser
extremadamente complejo. Por este motivo, es necesario partir de una serie de hipótesis
y simplificaciones que hacen posible el estudio de estos sistemas, obviando los factores
menos importantes o prácticamente inapreciables.
Por tanto, muchas veces no se estudian los fluidos reales, sino los llamados fluidos
ideales. Estos básicamente se diferencian de los fluidos reales en que se desprecia el
efecto de las fuerzas viscosas.
En otras palabras, en los fluidos ideales se considera que no existe fricción interna entre
las partículas del fluido.
2.3 Hipótesis del medio continuo
Además de considerar los fluidos ideales, uno de los cimientos de la dinámica de fluidos
es la hipótesis del medio continuo, que consiste en asumir que el fluido es continuo a lo
largo de todo el volumen que ocupa. Esto simplifica mucho el problema, ya que se
puede asumir que todas las magnitudes del fluido que queremos estudiar van a regirse
siempre por funciones continuas.
Esta hipótesis, al igual que la de los fluidos ideales, no siempre es aplicable,
dependiendo en este caso de una magnitud medible denominada número de Knudsen.
Cuando esta hipótesis no es aplicable, es necesario recurrir a la mecánica estadística en
lugar de a la mecánica de fluidos.
2.4 Tipos de fluidos
Existen muchas formas de clasificar los fluidos, de las cuales mencionamos las más
importantes.
Gases - Líquidos
Existen dos tipos fundamentales de fluidos, que son los líquidos y los gases.
Los líquidos se caracterizan por poseer fuerzas de cohesión entre sus moléculas, que
provocan una fuerte tendencia a que el fluido mantenga su volumen constante.
Por el contrario, los gases apenas poseen fuerzas de cohesión, por lo que se pueden
expandir tratando de ocupar el máximo volumen.
Fig. 2 – Gracias a las fuerzas de cohesión, podemos leer este mensaje.
Compresibles – No Compresibles
Todos los fluidos son compresibles en mayor o menor medida, por lo que en realidad
cuando hablamos de fluidos no compresibles nos referimos a fluidos en los que esta
propiedad es despreciable.
Un fluido es más compresible cuanto mayor es el cambio que sufre en su densidad al
aplicarle una presión externa. Por tanto, los gases son fluidos muy compresibles,
mientras que los líquidos en general se suelen considerar no compresibles.
Newtonianos – No newtonianos
Un fluido newtoniano es aquel en el que su viscosidad no varía en función de la tensión
que se le aplica. Por tanto, su viscosidad es un valor constante.
En los fluidos no newtonianos, la viscosidad no es constante, por lo que podríamos
decir que en cierto modo se comportan como sólidos cuando se les aplica una presión, y
como líquidos cuanto menor es la presión (o bien al contrario, como ocurre con los
fluidos no newtonianos tixotrópicos).
2.5 Propiedades de los fluidos
Aunque algunas ya se han mencionado, enumeramos aquí las principales propiedades de
los fluidos.
Viscosidad
La viscosidad es la oposición de un fluido a las deformaciones tangenciales. Si
consideramos que el fluido está constituido por una serie de capas, la viscosidad
representaría el rozamiento entre las diferentes capas cuando se les aplica una fuerza.
Los gases presentan muy poca viscosidad, mientras que los sólidos representan el caso
contrario de máxima viscosidad.
Convección
La convección tiene una importancia fundamental en la meteorología de nuestro
planeta, ya que es el fenómeno por el cual se mueven las capas de aire que tienen
diferentes temperaturas. El aire caliente es menos denso que el frío, por lo que tiende a
ascender. Este movimiento provoca una transferencia de calor hacia las capas altas de la
atmósfera, que es en sí lo que llamamos convección.
Advección
La advección es el fenómeno de transporte de una magnitud escalar cualquiera a lo
largo de un fluido. Esta magnitud podría ser por ejemplo el calor, por lo que es en
realidad un término más general que el de la convección.
Difusión
Se llama difusión a cualquier proceso físico por el cual se transfieren partículas de un
medio a otro. El ejemplo más típico de difusión es la ósmosis.
Flujo laminar
Existen básicamente dos formas en las que se puede mover un fluido: siguiendo un flujo
laminar, o un flujo turbulento.
El flujo laminar es el más ordenado, ya que el fluido se mueve únicamente en el sentido
de la corriente. Un fluido que sigue un flujo laminar es relativamente fácil de estudiar.
Para determinar cuándo un fluido seguirá un flujo laminar o un flujo turbulento, se
utiliza el número de Reynolds, que es una magnitud adimensional que relaciona los
términos convectivos y viscosos de las ecuaciones de Navier-Stokes (que veremos más
adelante).
Flujo turbulento
Un fluido que sigue un flujo turbulento es en la actualidad imposible de estudiar de
forma precisa, por lo que su comportamiento es aparentemente caótico.
Los flujos turbulentos se caracterizan por la aparición de remolinos.
Fig. 3 – El humo del cigarrillo empieza a ascender siguiendo un flujo laminar, pero al cabo de un
tiempo el flujo se convierte en turbulento.
2.6 Estudio del comportamiento de los fluidos
El estudio de los fluidos consiste en conocer las velocidades, presiones y fuerzas
internas de las partículas que forman el fluido, en función de las fuerzas externas que se
aplican sobre el fluido, y del contacto con otros medios (por ejemplo, el recipiente que
contiene el fluido).
Cuando hablamos de contacto con otros medios, destaca la interacción entre el fluido y
un sólido, teniendo en cuenta que el sólido se puede encontrar estático o en movimiento,
y que además, en el caso más complejo, el sólido podría ser deformable. Este último
caso podría dar lugar a una variación del volumen disponible para el fluido, lo cual en
algunos casos (como en los gases) podría obligarnos a tener que estudiar también las
variaciones de densidad del fluido.
En cualquier caso, el estudio de la dinámica del fluido puede hacerse bien de forma
analítica o de forma numérica, siendo este último caso el que nos interesa desde el punto
de vista de la informática gráfica.
¿Enfoque Lagrangiano o Euleriano?
Si queremos conocer los movimientos de las partículas del fluido podemos abordar el
problema desde dos enfoques totalmente diferentes.
La primera idea sería estudiar el movimiento de cada partícula en concreto, siguiendo su
recorrido según se desplaza por el fluido. Este sería el enfoque lagrangiano.
La segunda idea sería fijarnos en un punto concreto del espacio que abarca el fluido, y
estudiar los movimientos que se producen debido a las partículas que atraviesan ese
punto fijo. Este sería el enfoque euleriano.
Fig. 4 – En el enfoque Lagrangiano (izquierda) los componentes de nuestra discretización son las
propias partículas del fluido. En el enfoque Euleriano (derecha) discretizamos el volumen que
ocupa el fluido, y cada punto por el que pasen las partículas será un elemento discreto.
Hay un símil que ayuda a aclarar estos conceptos, imaginando que en lugar de estudiar
las partículas de un fluido estuvieramos estudiando una multitud de personas.
En este símil, el enfoque lagrangiano consistiría en escoger a un individuo concreto y
seguir todos sus pasos según camina por la calle. En cambio, el enfoque euleriano
consistiría en fijarnos en un punto concreto de la calle, como la puerta de un bar, y
estudiar a cada persona que entra y sale del bar.
En cualquier caso, ambos enfoques se basan en una discretización (ya sea del espacio, o
de la propia materia del fluido), y el estudio debe realizarse sobre cada uno de los
elementos obtenidos en la discretización.
Ecuaciones de Navier-Stokes
Las ecuaciones de Navier-Stokes son un conjunto de ecuaciones que definen el
comportamiento dinámico de un fluido. Derivan de aplicar los principios de
conservación de la mecánica y de la termodinámica al fluido, de donde se obtiene una
formulación integral que generalmente se suele transformar en una formulación
diferencial más práctica.
Existen diferentes formulaciones para estas ecuaciones, en función del problema que se
desea resolver. A modo de ejemplo, mostramos la ecuación de movimiento de un fluido
incompresible y con densidad uniforme:
En el lado izquierdo de la ecuación tenemos el movimiento (variación del
desplazamiento en el tiempo), y en el derecho los siguientes términos:
• F: Fuerzas aplicadas al fluido.
• p: presión en el fluido.
• ρ: densidad del fluido.
• v: viscosidad del fluido.
• u: desplazamiento
Es importante recordar el significado del operador Nabla:
Y del operador Laplaciano:
En este caso, el operador Nabla se utiliza para el cálculo del gradiente de presión, lo
cual no se debe confundir con la divergencia (si hubiera un símbolo de producto escalar
entre el operador y la presión), o con el rotacional (si hubiera un símbolo de producto
vectorial entre el operador y la presión).
Ecuaciones de Euler
A pesar de que estas ecuaciones son un caso específico de las ecuaciones de NavierStokes, en realidad fueron enunciadas con anterioridad. De hecho, Claude-Lous Navier
partió de las ecuaciones de Euler para obtener una generalización de las mismas que,
posteriormente justificó George Stokes para dar lugar a las llamadas ecuaciones de
Navier-Stokes.
Las ecuaciones de Euler definen el movimiento de un fluido en el caso especial de
fluidos compresibles y no viscosos.
Principio de Bernoulli
Este teorema es de gran importancia en el estudio de la dinámica de fluidos, ya que nos
proporciona una relación entre la presión y la velocidad dentro del fluido. Estrictamente
hablando, este principio sólo se cumple en fluidos ideales (no compresibles), pero en la
práctica se aplica en el diseño de superficies aerodinámicas (alas, hélices, etc).
Sin entrar en fórmulas, la idea básica del teorema de Bernoulli es que la presión en un
fluido con flujo uniforme, disminuye cuando aumenta la velocidad. Esto es
consecuencia de que la energía total del fluido permanece constante.
Fig. 5 – Gracias al principio de Bernoulli, el efecto del viento sobre la vela produce una diferencia
de presión que “absorbe” al windsurfista hacia la zona de baja presión a gran velocidad.
3 Principios de la Simulación de Fluidos
Existen diferentes alternativas a la hora de simular un fluido. La opción que escojamos
dependerá de los requisitos de nuestra aplicación, teniendo que decidir en primer lugar
si queremos enfocar nuestra simulación a una aplicación gráfica (juegos, cine), o a una
simulación física (ingeniería, predicción de catástrofes).
Cuando nos basta con que nuestra simulación “parezca” un fluido (en una aplicación
orientada a gráficos), muchas veces es preferible olvidarnos de la compleja formulación
de la dinámica de fluidos, y recurrir a técnicas procedurales más sencillas, más
eficientes, y que permiten un mayor control de la simulación. Esto último es importante,
ya que hay que tener en cuenta que en una simulación únicamente gobernada por leyes
físicas, es difícil predecir y controlar el resultado de la simulación.
A pesar de estos inconvenientes, la simulación física es en muchos casos la única
alternativa, por lo que en este punto nos vamos a centrar únicamente en explicar los
principios básicos de la simulación física.
Objetivos de la simulación física
Los métodos de simulación física nos proporcionan una herramienta para poder
implementar en un computador simulaciones de fenómenos físicos regidos por
ecuaciones bien conocidas. En el fondo, estos métodos no son más que técnicas para
implementar en un programa de ordenador un sistema de ecuaciones diferenciales, que
son las más habituales en la física. Nos permiten obtener aproximaciones numéricas en
lugar de tener que desarrollar soluciones analíticas y, lo que también es muy importante,
nos permiten integrar esta solución en el tiempo, pudiendo obtener una secuencia
temporal del estado de las variables que rigen el sistema.
En el caso concreto de la simulación física de fluidos, normalmente trataremos de
implementar las ecuaciones de Navier-Stokes y, por tanto, nuestro objetivo será
determinar las velocidades y presiones del fluido y su variación a lo largo del tiempo.
Características deseables en una simulación física
No todos los métodos son igual de válidos, y habrá que escoger en cada caso el que más
se adecue a los requisitos de nuestro sistema. En general, estos son los factores que
debemos tener en cuenta:
Eficiencia: en muchos casos nos interesa que el método sea lo más rápido posible, para
poder generar animaciones en tiempo real (por ejemplo, para un juego). La eficiencia
está reñida con otros factores, como la precisión y la estabilidad.
Estabilidad: no todos los métodos pueden garantizar la estabilidad de la simulación.
Cuando una simulación se vuelve inestable, el resultado de la simulación diverge,
perdiendo por completo el sentido de la simulación, al alejarse totalmente de los
resultados esperados. Un sistema inestable provocará efectos impredecibles, como
objetos que estallan súbitamente, o que adquieren unas dimensiones absurdas.
Precisión: los métodos numéricos implican siempre aproximaciones, por lo que en la
mayoría de los casos no podemos asegurar que nuestra solución sea exacta. La
desviación entre los valores que se desean obtener y los que se obtienen realmente se
denomina disipación numérica, y en muchas aplicaciones es un objetivo prioritario
minimizarla en la medida de lo posible.
Control: si dejas a una simulación física “correr” sin más, es difícil predecir su
comportamiento. Hay aplicaciones en las que nos puede interesar dirigir de alguna
manera la simulación para producir un efecto visual concreto. En estos casos, es posible
que tengamos que introducir otros factores que complementen la simulación física para
aumentar el control del usuario.
Métodos de integración
Los métodos de integración son herramientas que utilizamos para obtener la secuencia
temporal de las magnitudes que queremos calcular para nuestra simulación. En general,
son métodos que a partir del último valor calculado nos permiten obtener un nuevo
valor, generando así una progresión en el tiempo.
Existen multitud de métodos, de los cuales nombramos muy brevemente los más
importantes.
Euler explícito: Es posiblemente el método más intuitivo, y del cual en cierto modo
derivan los demás, pero no es ni mucho menos el más adecuado para la mayoría de
aplicaciones. Se basa en el desarrollo de Taylor hasta cierto grado (normalmente lineal,
o cuadrático a lo sumo). Por tanto, el nuevo valor que queremos obtener f(t+∆t) se
calculará en función de f(t) y de su derivada f´(t):
f(t+∆t) = f(t) + f´(t) ∆t
Existe una variante de este método denominada leapfrog que mejora la estabilidad con
sólo cambiar de orden la secuencia de cálculos que realiza internamente el método.
Euler implícito: El método anterior requiere que ∆t sea muy pequeño para evitar que
los valores diverjan, lo que tiene como consecuencia que el método sea muy lento y
propenso a ser inestable. Es fácil solucionar este problema utilizando la derivada del
instante siguiente en lugar de la del instante anterior:
f(t+∆t) = f(t) + f´(t+∆t) ∆t
Pero esta nueva formulación aparentemente sencilla, introduce una complejidad
considerablemente mayor, ya que al final lo que obtenemos es un sistema de ecuaciones
que puede ser no lineal, y que por tanto requiere aplicar métodos numéricos de
resolución de sistemas no lineales que son costosos y complejos (por ejemplo, el
método de Newton-Rhapson).
Runge-Kutta: Los métodos de Runge-Kutta utilizan varias muestras de la función,
obteniéndose diferentes variantes según el número de muestras que se utilice. El método
de Runge-Kutta 4 ofrece un buen compromiso entre estabilidad, eficiencia, y disipación
numérica.
Métodos de discretización
Un computador no puede trabajar con funciones continuas, por lo que siempre será
necesario algún método para discretizar el dominio sobre el que queremos trabajar.
Entre los métodos de discretización más habituales destacan el método de elementos
finitos, y el método de diferencias finitas.
4 Lecturas recomendadas
4.1 Modeling the Motion of a Hot, Turbulent Gas. Foster &
Metaxas
4.1.1 Introducción
El movimiento turbulento del humo o del vapor ha sido siempre un desafío para los
investigadores en gráficos. El problema consiste en modelar el comportamiento
rotacional de un gas, que se plantea como la mezcla de gases a distintas temperaturas y
su interacción con otros objetos.
El modelo desarrollado, basado en física, ha sido diseñado especialmente para animar
de manera relista el complejo componente rotacional del movimiento de un gas, así
como los efectos debidos a regiones con distinta temperatura dentro del gas, y la
interacción de los gases con otros objetos.
Modela el movimiento turbulento rotacional que ocurre cuando un gas caliente
interactúa con objetos sólidos y con el medio que los rodea. Por tanto, el modelo es útil
para escenas que incluyen remolinos de vapor, humo que forma ondas y ráfagas de
viento, así como movimiento de gas debido a un ventilador o a la convección térmica.
El método utilizado combina eficiencia computacional junto con facilidad de uso para el
animador. Para ello, han propuesto unas formas especializadas de las fórmulas del
movimiento de un gas caliente, junto con un método eficiente para resolver ecuaciones
diferenciales en tres dimensiones.
La mejor forma de obtener realismo sería modelar los efectos debidos movimiento de
un líquido o un gas teniendo en cuenta las leyes físicas, pero los métodos necesarios
para ello son computacionalmente ineficientes, además de ser métodos adaptados a
mecánica de fluidos computacional, más que a gráficos por ordenador.
El modelo tiene en cuenta convección, turbulencia, vorticidad y flotabilidad térmica, y
es capaz de modelar con precisión las fluctuaciones de un gas alrededor de objetos
complejos.
Para comprender el movimiento de un gas caliente, hay que comprender los factores
implicados en él:
-
Un factor clave es el campo velocidad, ya que un gas caliente se mezcla con el
aire más lento en movimiento, se produce un arrastre del vapor y empieza a rotar
en algunas partes del mismo, lo que causa que se mezcle más con el aire,
provocando así las turbulencias o remolinos que se pueden observar cuando dos
gases se mezclan
-
Otro factor importante es la temperatura, ya que las partes más calientes de un
gas suben más rápidamente que las regiones mezcladas con el aire frío. Como el
gas sube, se producen todavía más rotaciones turbulentas. Este efecto se conoce
como flotabilidad térmica (thermal buoyancy)
Un volumen de gas se representa como una combinación de:
-
Un campo escalar de temperatura
-
Un campo escalar de presión
-
Un campo vectorial de velocidad
Un problema importante es que el modelo usa un esquema de integración explícita, por
lo que las simulaciones son estables sólo si el paso de integración es suficientemente
pequeño. De lo contrario, el método se vuelve inestable. Escoger un paso de integración
pequeño hace que las simulaciones sean relativamente lentas, especialmente cuando el
fluido se desplaza a gran velocidad en cualquier parte del dominio.
4.1.2 Convección y arrastre
La forma reducida de las ecuaciones de Navier-Stokes que se ha utilizado es:
∂u
= ν∇ ⋅ (∇u ) − (u ⋅ ∇)u − ∇p
∂t
donde:
• ∇ es el operador gradiente
• ū es la velocidad del gas
• ⋅ es el operador producto escalar
• p es la presión del gas
• ν es la viscosidad cinemática
Esta ecuación modela cómo la velocidad de un gas cambia en el tiempo dependiendo de
los siguientes términos:
•
•
•
la convección ((ū ⋅∇) ū)
el gradiente de la presión (∇p)
el arrastre (ν∇⋅ (∇ ū))
En definitiva, esta ecuación modela la velocidad rotacional y de convección en el gas.
4.1.3 Flotabilidad térmica
Las fuerzas debidas a la flotabilidad térmica también inducen movimiento en un gas. Si
un elemento gaseoso caliente está rodeado por elementos más fríos, entonces el gas
tiene a subir. Para modelar este efecto, se ha definido la fuerza de flotabilidad en un gas:
Fbv = − β g v (T0 − Tk )
donde:
•
gv es la fuerza de la gravedad en la dirección vertical
•
β es el coeficiente de expansión térmica
•
T0 es una referencia inicial de temperatura, por ejemplo, 28 ºC
•
Tk es la temperatura media en la frontera entre una célula gaseosa y la célula
superior, la que está justo encima de ésta
Por tanto, se añade este nuevo término, resultando la siguiente ecuación:
∂u
= ν∇ ⋅ (∇u ) − (u ⋅ ∇)u − ∇p + Fbv
∂t
4.1.4 Resultados
A continuación, se presentan dos ejemplos de funcionamiento del método. En el
primero de ellos, se simula vapor procedente de tres boquillas que se junta en el centro
de la escena y sube hacia arriba, como se puede observar en la secuencia de imágenes:
Fig. 6 – Vapor procedente de las tres boquillas, que converge causando verticidad y turbulencia
En el segundo ejemplo, se simula la salida de humo de una chimenea y cómo se propaga
por el aire, teniendo en cuenta ráfagas de viento en el exterior:
Fig. 7 – Humo turbulento saliendo de una chimenea hacia la luz, con ráfagas de viento
4.2 Stable Fluids. Stam
4.2.1 Introducción
Para ayudarse a construir modelos para simular el flujo de fluidos a menudo se utilizan
modelos basados en física. Estos modelos físicos permiten al animador crear, casi sin
esfuerzo, interesantes comportamientos como remolinos dentro de los fluidos. Además,
la interacción del flujo con los objetos y con fuerzas virtuales se maneja elegantemente.
Tradicionalmente, los modelos físicos eran demasiado costosos como para implementar
aplicaciones en tiempo real basadas en dichos modelos. Esto era debido al hecho de que
los modelos tradicionales usaban esquemas inestables para resolver las ecuaciones
físicas que controlan el fluido.
Para modelar el comportamiento de fluidos, como humo, agua o fuego, se usan técnicas
de mecánica de fluidos como marco de trabajo matemático en el que se basan las
correspondientes simulaciones. Existe un consenso entre los científicos basado en que
las ecuaciones de Navier-Stokes son un buen modelo para representar el flujo de los
fluidos. En el campo de gráficos por ordenador, a diferencia del campo de mecánica de
fluidos, es de vital importancia el aspecto visual del fluido, mientras que la precisión
física pasa a un segundo plano, llegando a ser en algunos casos irrelevante.
El modelo propuesto es, por primera vez, un modelo estable incondicionalmente que es
capaz de producir flujos complejos que simulan fluidos. Este modelo es fácil de
implementar y su estabilidad permite escoger pasos de tiempo grandes, a diferencia de
los modelos de integración explícita, con lo que se consiguen simulaciones más rápidas.
Además, permite interactuar en tiempo real con fluidos en tres dimensiones.
Para llegar a conseguir esta interacción, se han usado pasos de integración grandes. Se
parte del método de solución de Foster y Metazas pero, en lugar de usar su integrador
Euleriano explícito, se usan métodos implícitos y lagrangianos para resolver las
ecuaciones de Navier-Stokes. Este método ha sido realizado especialmente para
aplicaciones de gráficos por ordenador, no siendo válido para aplicaciones de
ingeniería, puesto que no es suficientemente preciso para ello. Puesto que usa un
integrador de primer orden, las simulaciones sufren demasiado la disipación numérica.
Aún así, se pueden realizar bonitos flujos de remolinos, a pesar de la disipación.
En una aplicación de gráficos por ordenador proporciona buenos resultados,
especialmente cuando el animador mantiene el flujo “vivo”, aplicando fuerzas externas.
Se emplea el método para actualizar tanto el flujo como el movimiento de las
densidades dentro de éste. Se incrementa la complejidad de las animaciones usando
coordenadas de texturas a lo largo del flujo, junto con la densidad, con el objetivo de
sintetizar flujos de gases altamente detallados usando rejillas de baja resolución.
4.2.2 Ecuaciones básicas de Navier-Stokes
Un fluido cuya densidad y temperatura es más o menos constante se puede describir
mediante un campo de velocidad (ū) y un campo de presión (p). Dado que la velocidad
y la presión son conocidas en un tiempo inicial t = 0, su evolución durante el tiempo
viene expresada por las siguientes ecuaciones de Navier-Stokes:
∇ ⋅u = 0
∂u
1
= −(u ⋅ ∇)u − ∇p + ν∇ 2 u + f
ρ
∂t
donde:
• ∇ es el operador gradiente
• ū=(u,v,w) es la velocidad del humo
• ⋅ es el operador producto escalar
• (∇⋅ū) es la divergencia de la velocidad que, al hacerla igual a cero, quiere decir
que no es divergente, es decir, que converge
• ∇2 es el operador laplaciano (el cuadrado del gradiente)
• p es la presión del humo
• f son las fuerzas externas
• ρ es la densidad del fluido
• ν es la viscosidad cinemática
Al igual que ocurre en el método de Foster y Metazas, esta ecuación modela cómo la
velocidad de un gas cambia en el tiempo dependiendo de los siguientes términos:
•
•
•
la convección ((ū ⋅∇) ū)
el gradiente de la presión (∇p)
el arrastre (ν∇⋅ (∇ ū)), donde: ν∇⋅ (∇ ū) = ν∇2ū
Estas ecuaciones de Navier-Stokes se han obtenido imponiendo el principio de
conservación de la masa (primera ecuación) y del momento (segunda ecuación). Estas
ecuaciones se tienen que complementar con condiciones de contorno.
Se han tenido en cuenta dos tipos de condiciones de contorno: condiciones de contorno
periódicas y condiciones de contorno fijas. En el caso de condiciones de contorno
periódicas, el fluido se define contenido en un toro n-dimensional, en el que fluye en su
interior. En el caso de condiciones de contorno fijas, se considera que el fluido
permanece en un dominio acotado D. En general, las condiciones de contorno deben ser
aquellas en las que la componente normal de velocidad del fluido sea cero en el
contorno o frontera y que, en ningún caso, se atraviesen las “paredes” del contorno.
Utilizando el resultado matemático, conocido como descomposición de HelmholtzHodge, que dice que cualquier campo vectorial se puede descomponer en la forma:
w = u + ∇q
siendo q un campo escalar. Cualquier campo vectorial es la suma del campo de
conservación de la masa y el campo gradiente, por lo que se define el operador P, que
proyecta el campo vectorial w en su componente con divergencia cero:
∇w = ∇ ⋅ u + ∇ ⋅ (∇q ) = ∇ 2 q
Una solución de esta ecuación se usa para calcular la proyección ū:
u = P w = w − ∇q
Aplicando este operador a ambos lados de la ecuación, se obtiene la ecuación de la
velocidad usada en este modelo:
∂u
= P (−(u ⋅ ∇)u + ν∇ 2 u + f )
∂t
Usando el hecho de que Pū = ū, y que P∇p = 0.
4.2.3 Método de resolución
La ecuación anterior se resuelve a partir de un estado inicial ū0 = ū(x,0) a través del
tiempo, usando un paso de tiempo ∆t. Suponiendo que tenemos el valor del campo
velocidad en el instante t y queremos obtener su valor en el siguiente instante de tiempo,
es decir, t + ∆t, se resuelve la ecuación anterior en cuatro pasos:
añadir
fuerza
difusión
( vis cos idad )
proyección
w0 ( x) → w1 ( x)  
→ w2 ( x)   
→ w3 ( x) 
→ w4 ( x)
advección
El procedimiento general se puede observar en la siguiente figura:
Fig. 8 – Los primeros tres pasos pueden llevar el campo fuera del espacio de campos sin
divergencia. El cuarto paso asegura que el campo no diverge al final de cada paso de simulación
La solución en el instante t + ∆t viene dada por el último campo vectorial de velocidad:
ū(x, t + ∆t) = w4(x). La simulación se obtiene iterando estos pasos.
Para calcular el primer término, la adición de una fuerza externa f, que se asume que no
varía considerablemente en dicho instante de tiempo, se procede de la siguiente manera:
w1 ( x)= w0 ( x) + ∆tf ( x, t )
El siguiente paso tiene en cuenta los efectos de la advección o convección (efecto por el
que las partículas se mueven, debido a la propagación de la velocidad en un instante
anterior, aunque la velocidad actual sea cero).
Una perturbación en cualquier parte del fluido se propaga de acuerdo con la expresión:
–(ū ⋅∇) ū, que hace que la ecuación de Navier-Stokes sea no lineal. Foster y Metaxas
han resuelto esto utilizando el método de diferencias finitas, que sólo es estable si ∆t es
suficientemente pequeño. En este caso, se ha utilizado otra aproximación que hace el
método estable incondicionalmente, basado en una técnica para resolver ecuaciones
diferenciales parciales, conocida como método de características.
En cada paso de tiempo, todas las partículas del fluido se mueven con la velocidad del
fluido en sí. Para obtener la velocidad de un punto x en el instante de tiempo t + ∆t, se
mira la trayectoria anterior del punto x, a través del campo de velocidad w1 durante un
tiempo ∆t. Esto define un camino p(x,s), que se corresponde con una línea de flujo
parcial del campo de velocidad:
Fig. 9 – Se traza cada punto del campo hacia atrás en el tiempo. La nueva velocidad en el punto x es
la velocidad que la partícula tenía en un tiempo ∆t anterior, en su antigua posición p(x,- ∆t)
Por lo que la nueva velocidad en el punto x se fija con el valor de la velocidad que tenía
la partícula que ahora está en x, en su posición anterior, en un tiempo ∆t anterior:
w2 ( x)= w1 ( p ( x,−∆t ))
El tercer paso resuelve el efecto de la viscosidad y es equivalente a una ecuación de
difusión:
∂w2
= ν ∇ 2 w2
∂t
resolviéndolo mediante un método implícito:
( I − ν∆t∇ 2 ) w3 ( x) = w2 ( x)
Finalmente, el cuarto paso de proyección, hace que el resultado no sea divergente,
resolviendo para ello la ecuación ∇2q = ∇ · w3:
w4 = w3 − ∇q
Este paso de proyección requiere un buen método de resolución de la ecuación de
Poisson, como por ejemplo, métodos multimalla, ya que la ecuación de Poisson, cuando
se discretiza espacialmente, se convierte en un sistema lineal disperso. Por tanto, y
debido a que los pasos de viscosidad y de proyección requieren resolver grandes
sistemas de ecuaciones dispersos, mediante métodos multimalla se pueden resolver
sistemas lineales dispersos en un tiempo lineal.
4.2.4 Resultados
A continuación, se presentan dos ejemplos de funcionamiento del método. En ambos
ejemplos, se permite al animador colocar densidades y aplicar fuerzas en tiempo real.
En el primero de ellos, se simula un gas usando mapas de texturas fractales:
Fig. 10 – Simulación de gases usando mapas de texturas fractales
En el segundo ejemplo, se simula un gas y cómo se propaga, usando para ello un mapa
de texturas de líneas equiespaciadas:
Fig. 11 – Simulación de gases usando un mapa de texturas de líneas equiespaciadas
4.3 Visual Simulation of Smoke. Fedkiw, Stam and Jensen
4.3.1 Introducción
El hecho de modelar fenómenos naturales, como humo o gases, es altamente
complicado, debido a la complejidad de su movimiento y su turbulencia. La importancia
de modelar correctamente este comportamiento reside en las aplicaciones de dichos
fenómenos, como pueden ser los efectos especiales en las películas o en videojuegos
interactivos. Más allá de estas aplicaciones, también tienen interés para ingeniería, más
concretamente en el campo de dinámica de fluidos computacional (CFD en inglés).
El modelo propuesto consiste en utilizar una simulación numérica del humo, basada en
las ecuaciones de Euler, para aplicaciones de gráficos por ordenador. El motivo de usar
estas ecuaciones es porque suele ser más apropiado para modelar gases y tiene un menor
coste computacional, en comparación con las ecuaciones que describen fluidos de
Navier-Stokes. Además, se ha usado un término de vorticidad, para modelar la rotación
característica del humo. También, es capaz de manejar fronteras en el dominio
computacional, por lo que puede tratar la interacción del humo con objetos en
movimiento, así como remolinos de humo. El modelo es estable, eficiente y preciso, es
decir, no sufre una excesiva disipación numérica.
Se han adaptado técnicas de dinámica de fluidos específicas para la animación de gases
como el humo. La principal contribución reside en el método utilizado para reducir la
disipación numérica, inherente en los esquemas semi-lagrangianos. Esto se ha
conseguido mediante la utilización de la técnica de dinámica de fluidos conocida como
confinamiento de vorticidad. Esta técnica se basa en inyectar en el fluido la energía
perdida debido a la disipación numérica, forzando esto mediante un término añadido.
Con esto, se consigue aumentar la verticidad del flujo, lo que visualmente se traduce en
conservar el humo “vivo” según pasa el tiempo.
Al añadir esta fuerza inyectada, no se incrementa en exceso la carga computacional del
método y, además, es consistente con las ecuaciones de Euler utilizadas debido a que
desaparece en la medida en la que se incrementa el número de celdas. Al tener
solamente una pequeña sobrecarga debido a esto, las simulaciones son casi tan rápidas
como aquellas obtenidas a partir del algoritmo básico de fluidos estables.
El modelo permanece estable mientras la magnitud del término añadido esté por debajo
de un cierto umbral. Manteniendo dicha magnitud dentro de este rango, el paso de
tiempo es de órdenes de magnitud más grandes que en métodos explícitos.
Fig. 12 – Caminos semi-lagrangianos que atraviesan la frontera de una celda
4.3.2 Ecuaciones del fluido
Se asume que los gases se pueden modelar como un fluido ideal (fluido sin viscosidad,
o inviscid fluid), incompresible (que no se puede comprimir), y con densidad constante.
Los efectos de la viscosidad se pueden obviar, debido a que la disipación numérica
domina la viscosidad física y la difusión molecular.
Las ecuaciones que modelan la velocidad del humo que se han utilizado son:
∇⋅u = 0
∂u
= −(u ⋅ ∇)u − ∇p + f
∂t
donde:
• ∇ es el operador gradiente
• ū=(u,v,w) es la velocidad del humo
• ⋅ es el operador producto escalar
• p es la presión del humo
• f son las fuerzas externas
• la densidad constante del fluido se ha fijado arbitrariamente a 1
Estas ecuaciones determinan que la velocidad debe conservar tanto la masa (primera
ecuación), como su momento (segunda ecuación).
Fig. 13 – Discretización del dominio computacional en celdas iguales (izquierda). Componentes del
vector velocidad (derecha), definidos en las facetas de cada celda o vóxel
Puesto que tanto la densidad (ρ) como la temperatura (T) afectan a la velocidad del
fluido, se necesitan ecuaciones para modelar la evolución de las mismas en el tiempo.
Se asume que estas dos magnitudes escalares son transportadas (mediante la advección)
a lo largo de la velocidad del humo:
∂T
= −(u ⋅ ∇)T
∂t
∂ρ
= −(u ⋅ ∇) ρ
∂t
Para modelar el comportamiento de que gases pesados tienden a descender, debido a la
fuerza de la gravedad, mientras que gases calientes tienden a subir, debido a la
flotabilidad (o buoyancy), se usa el siguiente modelo:
f buoy = −αρ z + β (T − Tamb ) z
donde:
• α y β son dos constantes positivas con las unidades apropiadas para que la
ecuación tenga sentido
• z=(0,0,1) apunta hacia arriba en la dirección vertical
• Tamb es la temperatura ambiente del aire
Cuando ρ = 0 y T = Tamb, esta fuerza es igual a cero.
4.3.3 Resultados
A continuación, se presentan dos ejemplos de funcionamiento del método. En el
primero de ellos, se simula humo subiendo y pasando alrededor de una esfera:
Fig. 14 – Humo subiendo, pasando alrededor de una esfera, y formando remolinos
En el segundo ejemplo, se puede observar la secuencia de imágenes de una simulación
modelando el comportamiento del humo:
Fig. 15 – Seis frames renderizados modelando el comportamiento del humo
4.4 Curl-Noise for Procedural Fluid Flow. Bridson
4.4.1 Introducción
El modelo está basado en métodos procedurales que, a menudo, se prefieren a la
simulación física para animar fluidos turbulentos, debido a que ofrecen una
extremadamente sencilla aproximación para generar eficientemente campos de
velocidad turbulenta basados en ruido de Perlin, usando una fórmula que es
exactamente incompresible (necesaria para caracterizar la apariencia de los fluidos), que
además respeta las fronteras de objetos sólidos (no permitiendo a los fluidos atravesar
las superficies de dichos objetos) y cuya amplitud se puede modular en el espacio como
se desee.
El ruido de Perlin se usa frecuentemente para generar campos de velocidad aleatorios,
sin embargo, estos campos pueden contener sumideros en donde las partículas se
acumulan, ya que estos campos no tienen divergencia cero. La condición de divergencia
igual a cero, ∇ · ū = 0, es equivalente a decir que el fluido es incompresible o que no se
comprime, siendo una característica visualmente importante en los fluidos.
Este método extiende la idea de usar el rotacional del ruido de Perlin para modelar
fluidos incompresibles, manejando además condiciones de contorno y otros efectos.
Cabe destacar el elevado control que tiene el animador con este método procedural.
4.4.2 Rotacional
El método usa el rotacional (∇×) de un campo potencial Ψ para las velocidades, de tal
manera que, en tres dimensiones, el potencial es un campo Ψ = (Ψ1, Ψ2, Ψ3), dado por:
 ∂Ψ ∂Ψ2 ∂Ψ1 ∂Ψ3 ∂Ψ2 ∂Ψ1 

u ( x, y, z ) =  3 −
,
−
,
−
∂z ∂z
∂x ∂x
∂y 
 ∂y
Por definición, el rotacional de un potencial suave tiene automáticamente divergencia
cero: ∇ · ∇× ≡ 0. Así, el campo de velocidad se construye automáticamente con
divergencia cero: ∇ · ū = 0 siendo, por tanto, el fluido incompresible por construcción.
Por tanto, por la forma de construir del modelo, no es posible que haya sumideros.
Para evaluar las derivadas parciales, se usa una aproximación simple de diferencias
finitas con un desplazamiento muy pequeño, en este caso, 10-4 veces más pequeño que
el dominio, dando buenos resultados en precisión simple.
4.4.3 Ruido de Perlin
Para construir un campo de velocidad arbitrario se usa ruido de Perlin N(x) en el
potencial. En dos dimensiones Ψ = N, mientras que en tres dimensiones se necesitan
tres componentes para el potencial, que serían tres funciones de ruido aparentemente sin
correlación (un vector N(x) con tres coordenadas serviría).
Si la función de ruido varía en el rango [-1, 1], las derivadas parciales de la función
escalada N(x/L) variarán sobre la escala de longitud L con valores aproximadamente
dentro del rango O([-1/L, 1/L]). Esto significa que se esperan vórtices de diámetro
aproximadamente L y velocidades hasta de aproximadamente O(1/L). El usuario puede
usar esto para escalar la magnitud de Ψ hasta conseguir la velocidad deseada.
Por tanto, cambiando el intervalo de ruido, el usuario puede generar vórtices donde
desee, fácil e intuitivamente.
Para añadir realismo, el campo de velocidad debería variar con el tiempo. Esto se
consigue simplemente usando una función de ruido que varíe en el tiempo.
4.4.4 Contorno
Considerando un objeto sólido sin movimiento en el flujo, la condición de contorno de
que un flujo viscoso debe satisfacer es ū = 0. Esto se puede conseguir simplemente
modulando el potencial a cero con un paso suave función de la distancia, de tal manera
que todas las derivadas parciales (y por tanto, el rotacional) del nuevo potencial son
cero en el contorno o frontera.
Una característica de mayor interés en animación es la condición de contorno ū · n = 0,
donde el componente normal de la velocidad en el contorno es cero, permitiendo al
fluido pasar tangencialmente, pero sin atravesar el sólido.
4.4.5 Resultados
A continuación, se presenta un ejemplo de funcionamiento del método, en el que el
usuario (por medio del ratón), puede interactuar en tiempo real, produciendo vórtices en
la simulación, obteniendo el efecto que se puede observar en la figura:
Fig. 16 – Ruido de Perlin 2D incompresible con fronteras sólidas
5 Bibliografía
Wikipedia:
http://es.wikipedia.org
Apuntes de Mecánica de Fluidos de la Universidad Nacional de Ingeniería de Perú:
http://www.imefen.uni.edu.pe/mfluidos/1ra-clase.pdf
Apuntes de Mecánica de Fluidos de la Universidad del País Vasco:
http://www.sc.ehu.es/sbweb/fisica/fluidos/dinamica/bernoulli/bernouilli.htm
Monografías:
http://www.monografias.com
Apuntes de Física de Ciencias de la Atmósfera de la Universidad Complutense de
Madrid:
http://www.ucm.es/info/catmosf/docencia/mecanica2/fluidos_1.PDF
Apuntes de Introducción a la Física Ambiental de la Universidad de Alcalá:
http://www2.uah.es/ifa/documentos/resumenes/tema_5_ifa.pdf
FAQ de Mecánica de Fluidos de la Universidad de Navarra:
http://www1.ceit.es/asignaturas/Fluidos1/WEBMF/Mecanica%20de%20Fluidos%20I/F
AQMFI/FAQ3.htm
Introducción a la Mecánica de Fluidos (Julio Gratton):
http://www.lfp.uba.ar/Julio_Gratton/fluidos/07.%20Flujosviscosos.pdf
Enciclopedia Encarta:
http://es.encarta.msn.com/encyclopedia_761560121/teorema_de_bernoulli.html
Foster, Metaxas, "Modeling the Motion of a Hot, Turbulent Gas", SIGGRAPH 1997
Stam, "Stable Fluids", SIGGRAPH 1999
Fedkiw, Stam, Jensen, "Visual Simulation of Smoke", SIGGRAPH 2001
Bridson, Hourihan, Nordenstam, "Curl-Noise for Procedural Fluid Flow", SIGGRAPH
2007
http://www.dgp.toronto.edu/people/stam/reality/Research/StableFluids/index.html
http://www.dgp.utoronto.ca/~stam/reality/Talks/FluidsTalk/FluidsTalk_files/frame.htm
http://www.multires.caltech.edu/teaching/demos/java/stablefluids.htm
http://cg.cis.upenn.edu/~fostern/
http://www.cs.virginia.edu/~gfx/Courses/2001/GfxSeminar.spring.01/
http://graphics.ucsd.edu/~henrik/
http://physbam.stanford.edu/~fedkiw/
Descargar