fluid-dynamics

___ qstntxt ___

Diese flüssige Simulation basiert auf einem Papier von Stam . Auf Seite 7 beschreibt er die Grundidee der Advektion:

  

Beginnen Sie mit zwei Rastern: eines, das die Dichtewerte aus dem vorherigen Zeitschritt und eins enthält   Das wird die neuen Werte enthalten. Für jede Rasterzelle des Letzteren verfolgen wir das Zentrum der Zelle   Position rückwärts durch das Geschwindigkeitsfeld. Wir interpolieren dann linear aus dem Raster von   vorherige Dichtewerte und weisen Sie diesen Wert der aktuellen Rasterzelle zu.

Verbessern Sie den Code. Die beiden Dichtegitter sind %code% und %code% , %code% und %code% sind Geschwindigkeitskomponenten, %code% ist der Zeitschritt, %code% (global) ist die Gittergröße, %code% kann ignoriert werden:

%Vor%

Diese Methode ist kurz und funktioniert gut genug, aber die Implementierung von Objektgrenzen ist schwierig für mich herauszufinden, weil Werte rückwärts verfolgt und interpoliert werden. Meine derzeitige Lösung besteht darin, die Dichte einfach außerhalb der Grenzen zu verschieben, wenn daneben ein leerer Raum (oder Leerzeichen) vorhanden ist, der jedoch ungenau ist und Dichte erzeugt, insbesondere an Ecken und Bereichen mit diagonaler Geschwindigkeit. Streik> nur visuell korrekt. Ich suche jetzt nach "Korrektheit".

Relevante Teile meines Grenzcodes:

%Vor%

%code% ist ein Vektor von Bools mit Zeilen und Spalten %code% bis %code% . Grenzobjekte werden vor der Hauptschleife eingerichtet, indem Zellkoordinaten in %code% auf %code% gesetzt werden.

Das Papier sagt vage: "Dann müssen wir einfach hinzufügen einige Code in die %code% Routine, um Werte für die besetzten Zellen aus den Werten von zu füllen Ihre direkten Nachbarn ", was ich mache. Ich suche nach einer Möglichkeit, Grenzen genauer zu implementieren, das heißt nicht-fließende feste Grenzen zu haben und eventuell Grenzen für mehrere Flüssigkeiten zu unterstützen. Visuelle Qualität ist viel wichtiger als physikalische Korrektheit.

    
___ tag123simulation ___ Simulation ist die Nachahmung von etwas Realem, Sachverhalt oder Prozess. Das Simulieren von etwas beinhaltet im Allgemeinen das Darstellen bestimmter Schlüsseleigenschaften oder Verhaltensweisen eines ausgewählten physikalischen oder abstrakten Systems. ___ answer34590708 ___

Ihre Antwort kommt eher aus der Physik als aus der Simulation. Da es sich um Grenzen handelt, muss Ihr Geschwindigkeitsfeld die Prandtl-Rutschgrenze erfüllen, die besagt, dass die Geschwindigkeit an der Grenze null sein muss. Siehe Ссылка für (viele) weitere Informationen. Wenn Ihr Geschwindigkeitsfeld dieses Kriterium nicht erfüllt, haben Sie die Schwierigkeiten, die Sie beschreiben, einschließlich der Advektion von Masse über eine Grenze hinweg, was eine ziemlich grundlegende Verletzung des Modells darstellt.

Sie sollten sich auch darüber im Klaren sein, dass dieser Advektionscode die Dichte nicht bewahrt (durch Design) und dass das Erhaltungsgesetz am Ende behoben wird. Sie müssen diesen Schritt beachten, da die Hodge-Dekomposition des Vektorfelds auch anwendbare Randbedingungen hat.

    
___ qstnhdr ___ Strömungssimulationsgrenzen und advect ___ answer34643374 ___

Sie könnten an "The Art of Fluid Animation" von Jos Stam (Sept. 2015) interessiert sein. Um Seite 69 er diskutiert Randbedingungen in einigen Details. .

Vielleicht auch von Interesse: Ссылка .

"The Perfect Storm" war vor einer Weile, also muss dein flüssiger Sim entweder sehr groß, sehr schnell oder sehr detailliert sein. Vorzugsweise alle drei. Einige verwenden möglicherweise eine GPU, wenn ihr Anwendungsfall dies zulässt.

Vielleicht hilft es ..

    
___ tag123interpolation ___ Alles, was sich auf Funktionsinterpolation bezieht, d. h. die mathematischen Techniken zum Schätzen des (unbekannten) Werts einer Funktion in einem Punkt auf der Basis einer Menge bekannter Werte in anderen (üblicherweise nahe gelegenen) Punkten. Informationen zur Interpolation von Strings finden Sie unter [tag: string-interpolation]. ___ tag123c ___ C ++ ist eine universelle Programmiersprache. Es wurde ursprünglich als Erweiterung von C entworfen und behält eine ähnliche Syntax, ist aber jetzt eine komplett andere Sprache. Verwenden Sie dieses Tag für Fragen zu Code, der mit einem C ++ - Compiler kompiliert werden soll. ___ tag123fluiddynamik ___ In der Physik ist die Fluiddynamik eine Teildisziplin der Strömungsmechanik, die sich mit dem Flüssigkeitsstrom - der Naturwissenschaft von Fluiden (Flüssigkeiten und Gasen) in Bewegung - befasst. ___
2
Antworten

effizientere Windtunnelsimulation in Pygame mit numpy

Ich bin ein Student der Luft- und Raumfahrt, der an einem Schulprojekt für unseren Python-Programmierkurs arbeitet. Die Zuweisung ist ein Programm nur mit Pygame und numpy erstellen. Ich beschloss, eine Windkanalsimulation zu erstellen, die den...
01.03.2016, 13:47
2
Antworten

Strömungssimulationsgrenzen und advect

Diese flüssige Simulation basiert auf einem Papier von Stam . Auf Seite 7 beschreibt er die Grundidee der Advektion:    Beginnen Sie mit zwei Rastern: eines, das die Dichtewerte aus dem vorherigen Zeitschritt und eins enthält   Das wird die...
28.12.2015, 21:10