CFD Code
-
Hallo Gemeinde,
ich bin auch der Suche nach einen einfachen CFD Code in C/C++. Der Code sollte schon mit komplexen Geometrieen umgehen können und auf die finiten Volumen Methode aufbauen. FEM wäre wohl etwas überzogen, da glaube ich, komme ich mit dem mathematischen Unterbau nicht hinterher.
Kennt jemand einen Code mit Quelle der zum lernen geeignet ist?
-
Schau mal, ob Du mit dem Tutorial von OpenFOAM zurecht kommst. Aber viel wichtiger als das Tool ist derjenige, der es verwendet. Mit CFD kann man auch ziemlich einfach Unsinn produzieren, daher sollte man nicht vergessen sich einen vernünftigen Background zu Methoden und Modellen zu verschaffen.
-
Nachtrag: einfach ist der Code natürlich nicht. Wenn Du nicht bloß CFD-Berechnungen machen sondern auch Quellen studieren willst, dann fang klein an und such Dir zunächst auf Vorlesungsseiten irgendwelche Beispiele für einen Lid-Driven-Cavity-Flow in Matlab o.ä.
-
Hallo Walli_,
Danke für die Antwort.
Mir ist schon klar das der Code allein nicht hilft. Aber ich habe vor 19 Jahren mit PHOENICS meine Diplomarbeit gemacht und danach noch 2 Jahre mit einem Uni Code gerechnet. Die Vorleseungsscripte und den Peric/Ferzinger habe ich hier. Auch die Beispielcodes vom Peric, doch die sind in einem grauenhaften Fortran geschrieben das ein C/C++ Mensch kaum lesen kann/mag.OpenFLower kenne ich schon doch das ist für meine Zielstellung viel zu groß. Ich habe halt nie einen eigenen Code geschrieben oder an einem so mitgearbeitet das ich sagen kann ich hätte den Code vollständig verstanden. Das würde ich gerne als Alter Sack nachholen.
-
Hmm, also alle moderneren Sachen die ich so in netten Sprachen wie C++ oder Python kenne sind sehr FEM-lastig.
Ansonsten gibt es halt einige mächtige Codes und viele simple Codes, wobei letztere nicht viel mehr können als Spielzeugprobleme zu lösen (s.u.). Wenn man nur mal das Prinzip verstanden haben will, dann sollte man sich in Matlab oder Octave einen Finite Differenzen bzw. Volumen-Code hernehmen oder schreiben und damit ein wenig rumspielen was die Lösungsstrategien usw. betrifft. Die meisten Sachen aus dem Ferzinger/Peric-Buch sind durchaus auch heute noch state-of-the-art. Die neueren Entwicklungen aus der FEM/DG-Ecke sind dann nicht mehr so einfach, wenn man das nicht auch von mathematischer Seite her verfolgt hat. Hast Du ein Beispiel, was Du gerne rechnen würdest?
Hier gibt es z.B. einen simplen Finite-Differenzen-Code mit ausführlicher Beschreibung für inkompressible Navier-Stokes-Gleichungen:
http://math.mit.edu/cse/codes/mit18086_navierstokes.pdf
-
Walli_ schrieb:
Hast Du ein Beispiel, was Du gerne rechnen würdest?
Nun meine Vorstellung ist eine 2D Strömung z.B. ein gebogener Kanal. Finite Volumen, Blockorientiert, struckturiertes Gitter - im Prinzip das was im Peric beschrieben wird. Den 9er SIP Solver für komplexe Geometrieen habe ich da. Für so etwas habe ich auch noch den Gittergenerier da, den habe ich damals für den Uni-Code geschrieben, somit habe ich auch die "etwas angestaubten" Quellen von.
Solche Späße wie mehrere Blöcke oder Multigrid brauche ich erstmal nicht, das kann man programmieren wenn man mit einem Block und einem Gitter klar kommt.
Grundsätzlich bin ich da erstmal nicht so anspruchsvoll, wenn das Problem einfach ist kann man das Ergebnis besser prüfen.
Im Prinzip sind das jetz zwei Antworten auf die selbe Frage, je nach dem wie die Frage gemeint war.
-
Um diese Sache nicht offen stehen zu lassen, ich habe zwei Codes gefunden. Es handelt sich dabei um:
- Openflower
- iNavier
Ich habe beide nach leichten Anpassungen unter VS2012 fehler- und warnungsfrei übersetzt. Jetzt heißt es sich in die Codes einzuarbeiten und sie zu verstehen. Leider scheinen beide Projekte bei Sourceforge tot zu sein, damit gibt es sicher keine Hilfe der Entwickler aber andererseits kann man sich auf den vorhandenen Code konzentrieren und muß sich nicht in laufende Änderungen eindenken.
Walli_ ich danke Dir für die Anregungen.