Como eu pude verificar a correção do meu resultado da simulação de fluidos?


9

Eu escrevi um programa de simulação de fluidos baseado em partículas. É difícil dizer se eu obtenho o resultado certo. O resultado visualizado parece razoável, mas parte dele parece estranho. Não sei se é uma característica do fluido. Existe algum método preciso para verificar se meu programa está correto?

Alterando alguns detalhes:

Meu programa é um programa de simulação baseado em partículas 2D. O fluido é compressível. A implementação é quase baseada em um artigo clássico:

Müller, Matthias, David Charypar e Markus Gross. "Simulação de fluidos baseada em partículas para aplicações interativas." Anais do ACM SIGGRAPH de 2003

Resolvi a equação de Navier-Stokes com o método de iteração. Considerou apenas pressão, gravidade, viscosidade e tensão superficial.


Talvez você possa recalcular os termos da equação NS com diferenciação numérica e verificar como eles se cancelam.
— Yves Daoust

Respostas:


2

Compare com o software de outra pessoa. Execute alguns testes padronizados e descubra se você obtém aproximadamente a mesma resposta que os outros. Se você obtiver a mesma resposta, a probabilidade de ter seu código correto é bastante alta.

Alguns testes:

  1. Correr além do cilindro. Em 2d, pegue o domínio retangular, cilindro no meio, influxo à esquerda, vazão na luta e calcule a força no cilindro. Aqui está uma referência comparando um punhado de códigos.

  2. Fluxo de flutuabilidade. Caixa fechada, placa quente na parte inferior, placa fria na parte superior, o fluido quente começa a subir devido à força de flutuação. Aqui é referência .

  3. Bolha crescente, referência .

Infelizmente, porém, pode ser bastante difícil comparar seu código com códigos científicos nesses benchmarks. Eu acho que você implementou algo como SPH ou fluidos estáveis ​​que não são feitos para precisão, mas para estabilidade.

Tomemos, por exemplo, o fluxo passado por um cilindro. Eu começava o teste com um número de Reynolds muito pequeno e depois media a força no cilindro à medida que aumenta a precisão de sua simulação (menor intervalo de tempo, aumenta a subdivisão ou aumenta o número de partículas). A força converge para algum número? Se não, então você tem um problema, se sim, dê uma olhada no documento de referência e compare seu resultado com os outros.


Este método é uma técnica muito semelhante a uma que eu uso para testar meu raytracer. Acabei de renderizar a cena de teste com o renderizador de outra pessoa e compará-la com o meu resultado. Eles convergem para o mesmo resultado? Se sim, então eu entendi direito, se não, então eu entendi errado.


Em vez de um software para testar contra o tempo, as medidas conhecidas do mundo real e a dinâmica dos fluidos são consideradas. Caso contrário, seu erro será contaminado. Eu vi a mesma pergunta postada em outros lugares na rede stackexhange btw
— joojaa

11
Eu acho que testar contra a medição do mundo real é bom para testar se você tem a física certa. Se você deseja apenas depurar seu programa, então testar com código de outros é melhor ideia. Além disso, na simulação por computador, você pode medir qualquer coisa sem afetar o experimento. Por exemplo, medir a velocidade do fluido a qualquer momento é simplesmente impossível no experimento do mundo real, mas trivial na simulação por computador.
— tom

Sim, mas você também herda os problemas de seus solucionadores. Eu admito que eu fiz isso algumas vezes em desenvolvimento um simulador de múltiplos corpos e verificação contra os resultados formam MSC Adams, mas em retrospectiva que não era realmente stellarly útil
— joojaa

Verificar a experiência do mundo real foi melhor? Duvido, mas posso estar errado. A situação da física multicorpos é bem diferente da física dos fluidos. Mesmo algo tão simples como o bilhar tem comportamento caótico. Além disso, a dinâmica corporal rígida com os contatos nem sequer é um problema matemático, você conhece o paradoxo de Painlevé? Portanto, a simulação numérica da física multicorpos está fadada ao fracasso em geral. Algumas referências: plus.maths.org/content/chaos-billiard-table en.wikipedia.org/wiki/Painlev%C3%A9_paradox
— tom

11
Sim, eu estou ciente de como a dinâmica de vários corpos funciona, eu meio que a ensino (e a pesquisei brevemente por um ano ou dois). Mas nenhuma verificação em relação às soluções analíticas conhecidas foi mais fácil. Mas um fluido real é igualmente caótico como uma dinâmica de múltiplos corpos. Portanto, deve-se ser capaz de verificar situações de fluxo laminar etc. O atrito é uma droga.
— Joojaa
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.