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.

Yyao
fonte
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.

tom
fonte
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