💧 Simulación de fluidos en tiempo real — Solucionador de Navier–Stokes
Simulación interactiva de fluidos en 2D usando el solucionador estable de Navier–Stokes de Jos Stam. Dibuja velocidad con el ratón, prueba los ajustes preestablecidos de vórtice y cizalla, y observa cómo los campos de densidad se difunden y advectan en tiempo real.
Acerca de la Simulación de fluidos en tiempo real
Esta simulación resuelve las ecuaciones de Navier–Stokes incompresibles en una cuadrícula de 100×100 para modelar cómo se mueve un fluido en 2D y cómo se esparce el tinte que transporta. Usa el esquema incondicionalmente estable de Jos Stam: cada fotograma añade fuerzas, difunde la velocidad y la densidad con un solucionador implícito de Gauss–Seidel, advecta las cantidades trazando características hacia atrás en el tiempo (semi-Lagrangiano), y luego proyecta el campo de velocidad para eliminar la divergencia (∇·u = 0).
Arrastra sobre el lienzo para inyectar velocidad y tinte. El deslizador de Viscosidad establece cuán fuertemente se suaviza el momento, Difusión controla cómo se esparce el tinte, y Desvanecimiento decae la densidad cada fotograma para que los rastros se disipen. Los botones Densidad, Velocidad y Ambas cambian el mapa de color, y los ajustes preestablecidos Vórtice, Cizalla y Penacho siembran patrones de flujo clásicos. Este tipo de solucionadores impulsan los efectos de humo, agua y fuego en videojuegos, cine y efectos visuales.
Preguntas frecuentes
¿Qué muestra realmente esta simulación?
Muestra un fluido incompresible en 2D en movimiento, visualizado como un campo de tinte coloreado (densidad), un campo de velocidad coloreado por dirección, o ambos combinados. Al arrastrar sobre el lienzo añades momento y tinte, y el solucionador los advecta y difunde fotograma a fotograma para que veas desarrollarse remolinos, penachos y capas de cizalla.
¿Qué método se usa para resolver las ecuaciones del fluido?
Implementa el método "Fluidos Estables" de Jos Stam. Cada paso de tiempo se divide en etapas de añadir fuerza, difundir, advectar y proyectar. La difusión y la resolución de presión usan aproximadamente 20 iteraciones de un solucionador lineal de Gauss–Seidel, y la advección usa un retroceso semi-Lagrangiano, lo que hace que el método sea incondicionalmente estable para cualquier paso de tiempo.
¿Qué hace el paso de proyección?
La proyección impone la incompresibilidad (∇·u = 0) calculando un campo de presión cuyo gradiente se resta de la velocidad. Esto es una descomposición de Helmholtz–Hodge: elimina la parte divergente del flujo, manteniendo la conservación de la masa del fluido para que ni se comprima ni se expanda.
¿Qué controla el deslizador de Viscosidad?
La viscosidad establece la rapidez con la que se suavizan las diferencias de velocidad, modelando la fricción interna del fluido (el término ν∇²u). El deslizador se mapea logarítmicamente desde aproximadamente 1e-6 hasta 1e-2; los valores bajos dan un flujo fino, turbulento y arremolinado, mientras que los valores altos dan un movimiento espeso, como jarabe, que se amortigua rápidamente.
¿Cuál es la diferencia entre Viscosidad y Difusión?
La viscosidad actúa sobre el campo de velocidad, suavizando el momento para que las regiones vecinas se arrastren entre sí. La difusión actúa sobre el campo de tinte (densidad), esparciendo el color visible hacia afuera independientemente del flujo. Puedes tener un fluido de baja viscosidad y movimiento rápido que aún tenga un tinte muy difuso y borroso, o al revés.
¿Qué hace el deslizador de Desvanecimiento?
El desvanecimiento multiplica el campo de densidad por un factor (0.80–1.00) cada fotograma, de modo que el tinte se disipa gradualmente en lugar de acumularse para siempre. En 0.99 los rastros perduran y se acumulan; valores más bajos hacen que el tinte inyectado desaparezca rápidamente, lo cual es útil para ver la velocidad actual en lugar del historial completo.
¿Qué hacen los ajustes preestablecidos de Vórtice, Cizalla y Penacho?
Vórtice siembra un campo de velocidad rotatorio en un disco central para crear un remolino giratorio. Cizalla establece velocidades horizontales opuestas en las mitades superior e inferior, sembrando una capa de cizalla al estilo Kelvin–Helmholtz. Penacho inyecta velocidad ascendente y tinte a lo largo del fondo, produciendo un chorro de fluido ascendente sin flotabilidad.
¿Es esto físicamente preciso?
Es un solucionador cualitativo fiel para las ecuaciones de Navier–Stokes incompresibles, pero no es cuantitativamente preciso. La advección semi-Lagrangiana añade difusión numérica que amortigua el detalle a pequeña escala, la cuadrícula es de solo 100×100, y no hay flotabilidad ni gravedad, por lo que favorece la estabilidad visual y la velocidad sobre la precisión exacta de ingeniería.
¿Qué significan las estadísticas mostradas?
La velocidad máxima es la mayor magnitud de velocidad encontrada en cualquier parte de la cuadrícula, en unidades de celda por segundo. La densidad total es la cantidad de tinte sumada en todas las celdas, que disminuye a medida que el factor de desvanecimiento la decae. El tamaño de la cuadrícula muestra la resolución de la simulación, aquí 100×100 celdas interiores más un anillo de frontera de una celda.
¿Dónde se usan solucionadores como este en el mundo real?
Los solucionadores de fluidos estables sustentan los efectos de humo, fuego, agua y nubes en tiempo real en videojuegos y efectos visuales de cine, donde la velocidad y la estabilidad importan más que la física exacta. Las mismas ecuaciones de Navier–Stokes, resueltas con métodos de mayor fidelidad, impulsan la dinámica de fluidos computacional de ingeniería para aerodinámica, meteorología y flujo en tuberías.
Inyecta ajustes preestablecidos de vórtice, cizalla o penacho en el solucionador de fluidos estables de Jos Stam y ajusta la viscosidad, la difusión y el desvanecimiento en tiempo real.
3D · Renderizador Three.js / WebGL · Objetivo de 60 FPS · funciona completamente en el navegador, sin instalación