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.
fuente
Respuestas:
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:
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.
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 .
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.
fuente