Hallo Fred und willkommen im Forum,
Zitat:
Original erstellt von Fred Far:
Wenn ich die Geschwindigkeiten nun plotte habe ich einen abweichenden Verlauf, den es eigentlich nicht geben dürfte.
warum darf es solche Fehler denn nicht geben? Ein kurzer Blick in die Sourcen oder noch viel einfacher in Doxygen »Klick Mich« lässt auf die Implementierung von Mapping Funktionen schließen. Alles was Interpoliert wird hat eine gewisse Ungenauigkeit. Daher deine unterschiedlichen Ergebnisse. Die Änderung ist auch ganz klar, wenn man sich die Berechnung anschaut der Werte vergewissert (vorallem der Fluxes).
a) jeder Prozessor berechnet seinen Teil (internalField); geht Problemlos
b) die Boundary Patches sind auch noch problemlos berechenbar
c) die Processor Patches sind aber problematisch
Stell dir dein Case mit einem Prozessor vor. Intern wird phi an jedem internalFace berechnet. Dazu werden die zwei Zellen benötigt, die dieses Face teilen. Soweit ist's glaub klar. Nun kommt das Problem beim Splitten. Man erhält die sogenannten processor patches. Damit hast du also eine neue Boundary und somit ist die Info der nachbarzelle (auch wenn se noch da ist) verloren. Die Zelle ist natürlich in einem anderen Processor aber man muss jetzt eben eine Zwischenlösung finden.
Gefühlt würde ich jetzt folgendes behaupten:
- Ich interpoliere die Geschwindigkeit auf der linke Seite mittels den Infos von processorX
- Ich interpoliere die Geschwindigkeit auf der rechten Seite mittels den Infos von processorY
- Schluss endlich ist der Wert dann irgendwo dazwischen
Das geht alles recht gut solang die Strömung eine bestimmte Richtnug aufweist (Informationsaustausch von prozessor1 zu prozessor2 aber nicht andersrum). Wenn jedoch die Strömung von beiden Seiten kommt, dann muss man eben interpolieren und ein Mittelwert bilden.
Deswegen ist in deinem Fall zu beginn auch alles recht identisch (da die Wassersäule runterfällt und eine gezielte Strömungsrichtung vorgibt. Nachdem das Wasser recht ruhig wird, sich aber viele Wirbel gebildet haben (Informationen von beiden Seiten) kommen die Interpolationen und das Mappen stärker zum Tragen und dann erhältst du diese Fehler.
Apropos (ich denk du weißt das), solch einen Case teilt man nicht auf. Auch keinen Case mit 10.000 Zellen. Man verlangsamt da sowieso nur zwecks Interface-Kommunikation.
PS: Die Schritte zur Interpolation werden wahrscheinlich öfter gemacht, aber da müsste man sich die BC näher anschauen.
Hat also alles seine Richtigkeit.
------------------
Viele Grüße,
Tobias Holzmann
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP