J'ai écrit un programme de simulation de fluide à base de particules. Il est difficile de dire si j'obtiens le bon résultat. Le résultat visualisé semble raisonnable, mais une partie semble étrange. Je ne sais pas si c'est une caractéristique du fluide. Existe-t-il une méthode précise pour vérifier si mon programme est correct?
Modification de certains détails:
Mon programme est un programme de simulation basé sur des particules 2D. Le fluide est compressible. L'implémentation est presque basée sur un papier classique:
Müller, Matthias, David Charypar et Markus Gross. "Simulation de fluide à base de particules pour des applications interactives." Actes du ACM SIGGRAPH 2003
J'ai résolu l'équation de Navier-Stokes avec la méthode d'itération. Il ne tenait compte que de la pression, de la gravité, de la viscosité et de la tension superficielle.
Réponses:
Comparez-le avec le logiciel de quelqu'un d'autre. Exécutez un test standardisé et découvrez si vous obtenez à peu près la même réponse que les autres. Si vous obtenez la même réponse, la probabilité d'avoir votre bon code est assez élevée.
Quelques tests:
Débordez le cylindre. En 2d, prenez le domaine rectangulaire, cylindre au milieu, afflux à gauche, sortie sur le combat et calculez la force sur le cylindre. Voici une référence comparant une poignée de codes.
Débit de flottabilité. Boîte fermée, plaque chauffante en bas, plaque froide en haut, le fluide chaud commence à monter en raison de la force de flottabilité. Voici la référence .
Bulle montante, référence .
Mais malheureusement, il pourrait être assez difficile de comparer votre code aux codes scientifiques dans ces benchmarks. Je suppose que vous avez implémenté quelque chose comme SPH ou fluides stables qui ne sont pas faits pour la précision mais pour la stabilité.
Prenons par exemple le flux devant un cylindre. Je commencerais le test avec un très petit nombre de Reynolds, puis mesurerais la force sur le cylindre à mesure que vous augmentez la précision de votre simulation (pas de temps inférieur, augmentation de la subdivision ou augmentation du nombre de particules). La force converge-t-elle vers un certain nombre? Si non, vous avez un problème, si oui, jetez un œil au document de référence et comparez vos résultats avec ceux des autres.
Cette méthode est une technique très similaire à celle que j'utilise pour tester mon raytracer. Je rend juste la scène de test avec le rendu de quelqu'un d'autre et je la compare avec mon résultat. Convergent-ils vers le même résultat? Si oui, j'ai raison, sinon, je me trompe.
la source