¿Cómo podría verificar la exactitud de mi resultado de la simulación de fluidos?

9

Escribí un programa de simulación de fluidos basado en partículas. Es difícil saber si obtengo el resultado correcto. El resultado visualizado parece razonable, pero una parte parece extraño. No sé si es una característica del fluido. ¿Hay algún método preciso para verificar si mi programa es correcto?

Modificando algunos detalles:

Mi programa es un programa de simulación 2D basado en partículas. El fluido es compresible. La implementación se basa casi en un artículo clásico:

Müller, Matthias, David Charypar y Markus Gross. "Simulación de fluidos basada en partículas para aplicaciones interactivas". Actas del SIGGRAPH ACM 2003

Resolví la ecuación de Navier-Stokes con el método de iteración. Solo consideró presión, gravedad, viscosidad y tensión superficial.

Yyao
fuente
Tal vez pueda volver a calcular los términos de la ecuación NS con diferenciación numérica y verificar cómo se cancelan.
Yves Daoust

Respuestas:

2

Compárelo con el software de otra persona. Ejecute una prueba estandarizada y descubra si obtiene aproximadamente la misma respuesta que los demás. Si obtiene la misma respuesta, entonces la probabilidad de tener su código correcto es bastante alta.

Algunas pruebas:

  1. Fluye más allá del cilindro. En 2d toma el dominio rectangular, el cilindro en el medio, el flujo de entrada a la izquierda, el flujo de salida en la pelea y calcula la fuerza en el cilindro. Aquí hay un punto de referencia que compara un puñado de códigos.

  2. Flujo de flotabilidad. Caja cerrada, placa caliente en la parte inferior, placa fría en la parte superior, el fluido caliente comienza a elevarse debido a la fuerza de flotabilidad. Aquí está el punto de referencia .

  3. Aumento de la burbuja, punto de referencia .

Pero desafortunadamente puede ser bastante difícil comparar su código con los códigos científicos en esos puntos de referencia. Supongo que implementaste algo como SPH o fluidos estables que no están hechos para la precisión sino para la estabilidad.

Tomemos, por ejemplo, el flujo más allá de un cilindro. Comenzaría la prueba con un número de Reynolds muy pequeño y luego mediría la fuerza en el cilindro a medida que aumenta la precisión de su simulación (menor tiempo, mayor subdivisión o mayor número de partículas). ¿La fuerza converge a algún número? Si no, entonces tiene un problema, en caso afirmativo, mire el documento de referencia y compare su resultado con otros.


Este método es una técnica muy similar a la que uso para probar mi raytracer. Solo renderizo la escena de prueba con el renderizador de otra persona y la comparo con mi resultado. ¿Convergen con el mismo resultado? En caso afirmativo, tengo razón, si no, me equivoco.

tom
fuente
En lugar de software para probar yest contra mediciones conocidas del mundo real y puntos de referencia de dinámica de fluidos. De lo contrario, su error está contaminado. Vi la misma pregunta publicada en otra parte de la red stackexhange por cierto
joojaa
1
Creo que probar contra la medición del mundo real es bueno para probar si tienes la física correcta. Si solo desea depurar su programa, es mejor probarlo con el código de otros. Además, en la simulación por computadora puedes medir cualquier cosa sin afectar el experimento. Por ejemplo, medir la velocidad del fluido en cualquier punto es simplemente imposible en un experimento del mundo real, pero trivial en la simulación por computadora.
tom
Sí, pero también heredas los problemas de sus solucionadores. Admito que hacer esto un par de veces en desarrollo de un simulador multicuerpo y de cheques contra los resultados del formulario MSC Adams pero en retrospectiva, que no era realmente útil stellarly
joojaa
¿Comparar con el experimento del mundo real fue mejor? Lo dudo, pero podría estar equivocado. La situación con la física multicuerpo es bastante diferente a la física de fluidos. Incluso algo tan simple como el billar tiene un comportamiento caótico. Además, la dinámica rígida del cuerpo con contactos ni siquiera es un problema matemático bien planteado, ¿conoces la paradoja de Painlevé? Por lo tanto, la simulación numérica de la física multicuerpo está condenada al fracaso en general. Algunas referencias: plus.maths.org/content/chaos-billiard-table en.wikipedia.org/wiki/Painlev%C3%A9_paradox
tom
1
Sí, soy consciente de cómo funciona la dinámica de múltiples cuerpos, de alguna manera la enseño (y la investigué brevemente durante un año o dos). Pero no fue más fácil comparar las soluciones analíticas conocidas. Pero un fluido real es igualmente caótico como una dinámica de varios cuerpos. Por lo tanto, uno debería poder verificar las situaciones de flujo laminar, etc. Sin embargo, la fricción es una perra.
joojaa