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.
fonte
Respostas:
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:
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.
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 .
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.
fonte