Autor
|
Thema: laplacian((1|A(U)),p) ? (1558 mal gelesen)
|
Ay Mitglied
Beiträge: 36 Registriert: 20.02.2013
|
erstellt am: 20. Feb. 2013 14:05 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, ich bin neu hier und versuche mich seit paar Tagen in openFoam einzuarbeiten und bleibe bei einer Zeile des "Lid-driven cavity flow"-Tutorials hängen. Ich habe mich auch schon durchgegoogelt, aber das scheint wohl so simple zu sein, dass diese Frage noch nie gestellt wurde. Also hier meine Frage: Was genau bedeutet "laplacian((1|A(U)),p)"? Natürlich weiß ich, was z.B. laplacian(nu,U) in mathematischer Formulierung auszusehen hat, aber was hat das obige "1|A(U)" zu bedeuten? Ich würde mich freuen, wenn mir antworten könnte! Danke! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
Beiträge: 2463 Registriert: 27.08.2010 OpenFOAM-dev (Foundation) OpenFOAM-xxxx (ESI)
|
erstellt am: 20. Feb. 2013 14:50 <-- editieren / zitieren --> Unities abgeben: Nur für Ay
Hallo und willkommen im Forum, das hat was mit der Programmierung in C++ zutun. Stichwort Polymorphie. Du kannst bspw. eine Funktion mit mehreren Funktionstypen definieren. Bspw. Code:
#1 a = sum(b,c); #2 a = sum((b,c),d);
Man kann sicher vermuten was dahinter steckt. Es handelt sich immer um die Summe von Zahlen jedoch sind beide Funktionen komplett verschieden. Das gleiche ist mit laplacian((),); der Fall. Eine Funktion laplacian() mit mehreren Funktionalitäten überschrieben. Zum obigen Beispiel:
Code:
#1 Die Funktion "KANN" wie wie folgt aussehen:int sum (int k, int l) { return (k+l); }
Du erhältst die Summe aus a+b. Die Variablen in der Funktion selber können wieder anders heißen. Zu #2 und deinem Laplacian:
Code:
#2 Der Prototyp der Funktion "KANN" wie folgt aussehen:int sum (int mutliplicate(int k, int l), int m) { return multiplicate() + m; }
Ich bin mir jetzt nicht 100% sicher ob letztere Funktion so korrekt geschrieben ist, weil meine Programmierkünste etwas eingerostet sind (deswegen hab ich mir am Sonntag auch gleich Bücher gekauft :D )
Aber ich denke es erkärt was du willst. In deinem Beispiel wird eben folgendes gemacht:
Code:
laplacian((1|A(U)),p)-> laplacian( funktionsaufruf(1|A(U)), p) -> laplacian( funktionsaufruf(1|Funktionsaufruf(U)), p
A(U) ist eine Funktion für sich, die mit dem Vektorfeld U irgendwas macht. Es kann auch sein dass (1|A(U)) für sich geschlossen eine Funktion darstellt, die eben das Vektorfeld irgendwie manipuliert, um dann den Laplacian auf das alles anzuwenden. Hoff es hat dir geholfen. Wenn du es genau wissen willst, musst du in die Funktionen rein. ------------------ Grüße Tobias H. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ay Mitglied
Beiträge: 36 Registriert: 20.02.2013
|
erstellt am: 20. Feb. 2013 15:23 <-- editieren / zitieren --> Unities abgeben:
Hallo Shor-ty, danke für deine Antwort! Dass es wohl eine Funktion ist, habe ich mir schon gedacht, wobei mir die Schreibweise mit dem "|" komisch vorkam. Ich muss auch dazu erwähnen, dass ich kein absoluter C++-Kenner bin. Aber man soll ja openFoam auch ohne außerordentliche C++-Kenntnisse nutzen können. Aber Back to Topic: In dem Tutorial weist noch eine Zeile eine Funktion A unter "interpolationSchemes": interpolate(HbyA) linear; Steht das irgendwie im Zusammenhang? Und generell: Wie finde ich denn die genaue Formulierung der Funktion "(1|A(U)" oder "HbyA"? Gibt es dazu eine gesonderte Datenbank im Netz? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
Beiträge: 2463 Registriert: 27.08.2010 OpenFOAM-dev (Foundation) OpenFOAM-xxxx (ESI)
|
erstellt am: 21. Feb. 2013 00:27 <-- editieren / zitieren --> Unities abgeben: Nur für Ay
Hi, HbyA und A(U) sind für mich zwei verschiedene Sachen. Einmal ist es eine Variable und einmal ein Funktionsaufruf, was die Klammern verdeutlichen. Nutzen kann man OF ohne C++ Kenntnisse. Normalerweise stellen die meisten User auch keine Fragen wie du Ohne böse oder abtrünnig zu wirken: Jemand der ANSYS CFX verwendet hat auch keine Ahnung was die Blackbox für Gleichungen und Dämpfungsfunktionen verwendet. Der User kann nur hoffen das das was im USER GUIDE steht richtig ist. ------------------ Grüße Tobias Holzmann
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ay Mitglied
Beiträge: 36 Registriert: 20.02.2013
|
erstellt am: 21. Feb. 2013 09:23 <-- editieren / zitieren --> Unities abgeben:
Hi, das ist richtig. Jedoch ist es doch die große Stärke von oF, dass man an den Funktionen und Gleichungen etwas rumschrauben kann. Und dafür muss man ja wissen, was man für Möglichkeiten hat. Wenn ich irgendwo nachsehen könnte, was die Funktion mit dem Geschwindigkeitsfeld macht, wäre das doch sehr interessant zu wissen. Vor allem für zukünftige Vorhaben. An der Datei "fvSchemes" hänge ich immernoch. Die wohl wichtigen Absätze sind die unter "ddtSchemes", "gradSchemes", "divSchemes" und "laplacianSchemes". Da werden jetzt also dem Solver gesagt, wie er die Zeit und die Vektoren und Tensoren diskretisieren soll. Aber es tauchen plötzlich Variablen auf, die nirgends vom User definiert werden. Hier nehme ich mal an, dass die Variablen im Solver direkt definiert sind. Aber ich frage mich, wie das herausfinde. Kann ich mir den Code selbst anschauen? Als Beispiel das Tutorial "interFoam" (multiphase). Da taucht im fvSchemes ein "phirb" und ein "pcorr" auf. Wie finde ich denn heraus, was diese Größen denn bedeuten? Alles noch für mich. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ay Mitglied
Beiträge: 36 Registriert: 20.02.2013
|
erstellt am: 21. Feb. 2013 12:20 <-- editieren / zitieren --> Unities abgeben:
Mich läßt das fvSchemes-Blatt nicht los. Was passiert denn eigentlich, wenn in den "gradSchemes", "divSchemes" und "laplacianSchemes" als default "Gauss linear" o.ä. einstelle? Und mir somit keine Gedanken über die einzelnen Diskretisierungsverfahren mache. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
Beiträge: 2463 Registriert: 27.08.2010 OpenFOAM-dev (Foundation) OpenFOAM-xxxx (ESI)
|
erstellt am: 21. Feb. 2013 12:29 <-- editieren / zitieren --> Unities abgeben: Nur für Ay
wenn du das bei default reinschreibst, dann werden alle Gleichungen mit diesem Verfahren berechnet. OpenFOAM bietet deswegen die Möglichkeit jede Gleichung separat einzustellen. Wenn man bspw. Probleme mit k und epsilon hat, dann nimmt man eben kein Verfahren 2.Ordnung sondern testet mal mit dem Upwind. ------------------ Grüße Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ay Mitglied
Beiträge: 36 Registriert: 20.02.2013
|
erstellt am: 21. Feb. 2013 13:13 <-- editieren / zitieren --> Unities abgeben:
Ja gut, damit komme ich dem Ganzen ja schon deutlich näher. Vorteil von oF ist wohl, dass man wirklich sehr viele Freiheiten und Möglichkeiten hat. Jedoch muss man auch sein System und seine Gleichungen sehr gut kennen. Danke sehr für die Antworten! Für euch wahrscheinlich doofe Fragen, aber die hat man eben am Anfang. Es kommen bestimmt noch weitere... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|