¿Cuál es un buen modelo para calcular el agua que cae sobre una superficie?

Antes de presentar mi pregunta, me gustaría resumir el hecho de que soy programador, por lo que puedo estar equivocado al usar algún tipo de terminología.

¿Cuál es un buen modelo para calcular el flujo, la forma y todas las propiedades geométricas del agua? (y otros líquidos similares en general, como mezclas a base de agua o algunas sustancias más aceitosas y viscosas)

Supongo que este tipo de simulación se basará en partículas, lo que significa entidades que forman parte del dominio que define la "gota" de agua, pero lo que necesito son las matemáticas, las ecuaciones y el/los modelo(s) matemático(s); No tengo idea de cuál es la matemática detrás de un líquido que se encuentra con una superficie y si hay algún algoritmo o modelo que pueda traducirse a código de máquina para calcular eso.

Para simplificar las cosas, no estoy considerando el aire y qué tipo de propiedades puede modificar el aire, o cualquier otra variable adicional fuera del dominio de esta gota de líquido, como agregar un plano inclinado donde las gotas, digamos que por ahora Estoy considerando un vector y una cantidad X de líquido, esta cantidad se rocía o simplemente se deja caer sobre la superficie y debería poder reproducir una dispersión realista del agua en la superficie, incluso mejor, debería poder calcular diferentes líquidos con diferentes propiedades al mismo tiempo, como el agua y el aceite.

Creo que cualquier código de hidrodinámica funcionaría.

Respuestas (2)

Como comenté, pensaría que cualquier código de hidrodinámica 3D funcionaría. Los conceptos básicos de la hidrodinámica se pueden resumir en las siguientes cinco ecuaciones:

(1) ρ t + ρ v = 0 (2,3,4) ρ v t + [ ρ v v + PAG I ] = ρ gramo (5) mi t + [ ( mi + PAG ) v ] = ρ gramo v
dónde ρ es su densidad de masa, v la velocidad, PAG = ( γ 1 ) ( mi 1 2 ρ v 2 ) es la presión del fluido (supone un gas ideal con índice adiabático γ ), I la matriz identidad (tensor), mi es la energía total (interna y cinética), y gramo la aceleración gravitacional. En orden, estos tres describen la conservación de la masa , la conservación del impulso y la conservación de la energía .

Dado que las computadoras son objetos discretos, definimos un volumen d X d y d z (generalmente d X = d y = d z entonces el volumen es d X 3 , pero no es necesariamente cierto) con una posición centrada en la celda de ( X i , y j , z k , t norte ) dónde i , j , k , norte Z . Luego, cada variable se define mediante un valor promedio de volumen:

ρ i , j , k norte = ρ ( X i , y j , z k , t norte )

Entonces podemos modelar numéricamente las tres ecuaciones de conservación como (voy a usar la conservación de la masa para el ejemplo)

ρ i , j , k norte + 1 ρ i , j , k norte d t = π X ; i + 1 , j , k norte π X ; i 1 , j , k norte 2 d X + π y ; i , j + 1 , k norte π y ; i , j 1 , k norte 2 d y + π z ; i , j , k + 1 norte π z ; i , j , k 1 norte 2 d z
dónde π = ρ v . Lo anterior usa una diferencia directa para la derivada temporal mientras que las derivadas espaciales usan una diferencia central. Hay algunas advertencias de estabilidad con esta ecuación (por ejemplo, d t C s , metro a X d X / norte d i metro la derivada del tiempo está limitada por la velocidad de onda máxima dividida por el número de dimensiones por la longitud de la celda), pero es bastante sencillo de implementar.

En tres dimensiones, puede resolver las ecuaciones direccionalmente (es decir, X , y , z resuelto de forma independiente pero alternando el orden de cada paso de tiempo) o puede combinarlos en lo que se llama "transporte de esquina" donde el flujo de decir π i 1 , j 1 , k se tiene en cuenta para encontrar ρ i , j , k norte + 1 . La última opción es más difícil de codificar pero proporciona una solución más precisa, mientras que la primera es bastante fácil de implementar.

Para las condiciones de contorno, querrá un límite reflectante en la superficie ( v norte ^ v norte ^ dónde norte ^ es la dirección normal a la superficie) y probablemente extrapolada a cualquier otro lugar ( ρ I , j , k = ρ I 1 , j , k dónde I es el número máximo de celdas en el X dirección). Estos dos límites y las 5 ecuaciones anteriores deberían permitirle modelar completamente la gota de agua que choca con una superficie.

También puede agregar efectos viscosos a las Ecuaciones (2,3,4) agregando, al RHS, la divergencia del tensor de viscosidad, τ :

τ = ρ v [ v + ( v ) T 2 3 I v ]
con v la viscosidad cinemática . Esto complica las cosas porque está introduciendo derivadas de segundo orden ( 2 v ) y la condición de estabilidad para estas ecuaciones es d t k d X 2 / norte d i metro dónde k es el coeficiente parabólico , en este caso v . Hay formas de evitar esto (por ejemplo, usando un método implícito que requiere un solucionador de matrices), pero definitivamente complica las cosas.


Con todo esto, concluyo que tienes dos opciones:

  1. escribe tu propio código 3D desde cero
  2. busque en github el código de otra persona que contenga toda la física necesaria y atribuya al autor cuando y donde sea necesario

Dada la dificultad de codificar un código de hidrodinámica multidimensional (experiencia personal aquí), podría ser significativamente más fácil para usted tomar la Opción 2, pero mi única advertencia al respecto es esta: el código que encuentra y usa no es una caja negra y no debe ser tratado como tal ; debe comprender qué hace el código y por qué antes de que pueda considerar incluso ejecutar el código.

¡Buena respuesta! Para agregar a su opción 2: OpenFOAM y Gerris son dos solucionadores de flujo de código abierto muy conocidos y muy capaces que tienen una base de usuarios bastante grande
ok, gracias, por lo que veo, es un cálculo infinitesimal con derivadas y una combinación de coeficientes (numéricamente hablando). Tengo que documentarme porque esto se ve bien pero fragmentado y requiere mucho tiempo, pero creo que las fórmulas son un muy buen comienzo. gracias de nuevo
@user2485710 Si está interesado en construir su propio modelo, entonces puede considerar elegir los Métodos de volumen finito para problemas hiperbólicos de Randy LeVeque y los Solvers de Riemann y Métodos numéricos para dinámica de fluidos de Eleuterio Toro . Ambos libros son invaluables para la dinámica de fluidos (aunque son costosos).

Primero un consejo: ¡no ignores el aire! La investigación en los últimos dos años ha demostrado que el aire (en particular, la presión del aire) es crucial para determinar si la gota salpica y, de ser así, cuál es la dinámica. Uno de los artículos emblemáticos en este campo es el de Weitz Group en PRL en 2012 .

Luego, a su pregunta de modelar la gota que cae y salpica. Creo que un enfoque lagrangiano para el líquido (es decir, 'partículas' fluidas) daría la simulación más realista, pero también será extremadamente costoso desde el punto de vista computacional. Por lo tanto, podría considerar métodos de volumen finito como Volume-of-Fluid , Level-Set y Front-Tracking. Es difícil darle algún consejo sobre cuál es el mejor porque depende mucho de la experiencia y los detalles de la implementación, pero puede encontrar una buena discusión en este sitio web del Institut Jean Le Rond d'Alembert .

mi punto es ligeramente diferente de la investigación teórica, me gustaría saber cuáles son las ecuaciones, las matrices y los vectores detrás de este tipo de comportamientos, así que después de estudiar las "matemáticas" detrás puedo intentar simplificar el cálculo. Por cierto, no pretendo simular una física "realista", mis aplicaciones son artísticas o algo que imita este comportamiento, más que algo que sea una buena réplica de escenarios del mundo real; Encontré varios temas en hidrodinámica pero ninguno con una buena explicación en términos matemáticos.
@ user2485710 Me gustaría señalar que la frase "buena explicación" es completamente subjetiva y no ofrece ninguna sugerencia sobre cuál podría ser un texto más adecuado para sus necesidades.
@KyleKanos, ¿cuáles son los puntos clave que debo aclarar? De todos modos, básicamente tengo que terminar escribiendo algo que sea capaz de resumir este comportamiento, o simplemente imitarlo, y que sea fácil de calcular y traducir a código, algo así como una matriz, un cuaternión o una simple ecuación del 1er/ 2do grado; cuando pienso en algo computable, pienso en algo así. Ahora el problema es el punto de partida y todo lo que sé por ahora es que mi punto de partida deberían ser las leyes matemáticas detrás de esto, así que solo pregunto dónde encontrar las ecuaciones y leyes que imitan este comportamiento.
@ user2485710 - solo comprobando: ¿alguna vez has oído hablar de la dinámica de fluidos computacional (CFD)? Si no: asegúrese de leerlo. Es básicamente un término general para todo tipo de métodos que resuelven las ecuaciones de Navier-Stokes de forma discretizada.
@Michiel nunca escuchó sobre eso, pero sugerir que todo el campo del CFD parece una exageración, ¿no hay teoremas o leyes clave para lo que estoy preguntando?
@ user2485710: ciertamente no es excesivo comprobar qué es CFD. No sé qué tipo de tarea tienes, pero escribir un (Conjunto de) solucionadores que puedan manejar las ecuaciones de Navier-Stokes (¡espero que las conozcas!) No es exactamente un paseo por el parque .
Tengo la sensación de que está tratando de tomar un atajo aquí, mientras que primero debería intentar comprender algunos fundamentos de la dinámica de fluidos, antes de comenzar a escribir código al respecto.
Si considera que preocuparse solo por la parte numérica es un atajo, en ese caso, sí, estoy tomando un atajo, eso es porque estoy interesado en cómo obtener, si, eso es lo que tengo que calcular de todos f(x)modos f(x) = 4 + 3x.