Praktische Codierressourcen für neue CFD-Praktiker

Es scheint viele Bücher und Papiere zu geben, die verschiedene CFD - Methoden sehr detailliert erklären, aber leider konnte ich nicht viele gute Quellen solcher Methoden finden, die in Codes wie MATLAB oder Python implementiert sind (neben den grundlegendsten Problemen wie der lineare Advektionsgleichung). Daher habe ich mich gefragt, ob es Bücher gibt, die ich mit vielen codierten Beispielen kaufen kann, oder ob es kostenlose Online-Ressourcen gibt, die zeigen, wie man verschiedene CFD-Probleme löst. Mir ist klar, dass CFD ein sehr schwieriges Feld sein kann, besonders im Umgang mit komplexen Geometrien. Wenn ich jedoch eine Ressource finden könnte, die zum Beispiel Schritt-für-Schritt-Anweisungen zur Lösung der 2D-Euler-Gleichungen liefert (mit sehr einfacher Geometrie), scheint dies der logische Schritt nach oben zu sein, wenn man von skalaren zu Vektorgleichungen übergeht Dies wäre ein guter Ausgangspunkt, um weiterführende Themen zu lernen. Leider lerne ich mit gutem Beispiel und kann mich durch zu viel Theorie festsetzen. Daher wäre es eine große Hilfe, Code-Beispiele zu haben, die neben der Theorie arbeiten und verstehen. Vielen Dank.

4
Hast du die 12 Schritte zu Navier Stokes von Lorena Barba studiert?
hinzugefügt der Autor nicoguaro, Quelle
Ich schlage vor, dass Sie zuerst den "Vorträgen" folgen, und wenn Sie danach denken, dass der Ansatz nicht angemessen ist, halten Sie Ihre Meinung. Gerade jetzt, Sie drängen, dass das der Fall sein wird.
hinzugefügt der Autor nicoguaro, Quelle
Ich habe es mir eine Weile angesehen, bevor ich das gepostet habe und es scheint eine sehr nette Quelle zu sein. Ich habe jedoch bemerkt, dass es von relativ einfachen PDEs zu den Navier-Stokes-Gleichungen zu springen scheint, ohne die Euler-Gleichungen zu behandeln, was ein wenig unglücklich ist (obwohl ich mich diesbezüglich irren könnte).
hinzugefügt der Autor plaidshirt, Quelle
Sie scheinen zu sagen, dass sie die Euler-Gleichungen auf dieser Seite nicht abdecken: lorenabarba.com/blog/cfd-python-12-reperto-navier-stokes . Da ich nicht viel Erfahrung mit CFDs habe, nahm ich an, dass es am besten wäre, die Euler-Gleichungen auszuprobieren, bevor wir in die komplexen Navier-Stokes-Gleichungen springen. Aber Sie haben recht, ich werde tiefer in diesen Kurs einsteigen und es sollte Sinn ergeben.
hinzugefügt der Autor plaidshirt, Quelle

4 Antworten

Hängt davon ab, was Sie mit CFD meinen. Ich würde zwischen akademischen und angewandten Ansätzen unterscheiden.

Für akademische Zwecke - etwa für den Erwerb von Fähigkeiten in der numerischen Analyse und im wissenschaftlichen Rechnen oder ein Spielplatz für Ihre neu entwickelten Vorkonditionierer - kann ich das Buch von Griebel, Dornseifer und Neunhoeffer Numerische Simulationen in der Fluiddynamik . Es deckt den gesamten Bereich ab:

  1. Erklärung der Physik und der PDEs, Randbedingungen und erwartete Schwierigkeiten
  2. Diskretisierungstechnik (hier endliche Differenzen )
  3. Pseudocode
  4. gebrauchsfertiger C-Code

Wenn Sie CFD-Ingenieur für ein Unternehmen werden möchten, sollten Sie sich einen theoretischen Hintergrund über Modellierung und Approximation von Strömungen und Turbulenzen aneignen. (Vielleicht finden Sie eine Vorlesungsnotiz über turbulente Strömungen ) Und dann machen Sie einfach die Tutorials mit Ihrem bevorzugten kommerziellen CFD-Tool. (Ansys, fließend, Stern ...)

6
hinzugefügt

SUPER LANGE POST HIER, ICH WÜNSCHE, ICH KÖNNTE TL, DR IT, ABER ES WÜRDE ZIEMLICH NIEDERLOS SEIN

Ich gehe davon aus, dass Sie ein Ingenieur sind, denn wenn Sie ein Absolvent sind, sollten Sie zuerst den CFD-Kurs in der jeweiligen Abteilung absolviert haben. Wenn Sie in Mathe sind, weiß ich nicht, wie Sie sich mit Ihrem Wissen über Dinge in der klassischen Fluiddynamik identifizieren können.

HINTERGRUND FÜR MICH

Ich verstehe die Position, in der du ganz gut bist, ich war selbst einige Zeit im selben Sumpf und Dinge kamen mir theoretisch nie richtig vor, und soweit ich es erlebt habe, ist das Lesen eines Buches wie JD Anderson oder Versteeg nicht der Fall wirklich viel helfen. Und ich fühle, dass es ziemlich unsensibel ist, jemand zu bitten, J.D. Anderson-Cover zu lesen, sogar die ersten paar Kapitel, und erst dann darf er wirklich CFD-Coding starten. Während meiner Zeit als eifriger Student, der versuchte, CFD zu lernen, verbrachte ich mehrere Nächte im Schlafsaal damit, das Internet zu durchsuchen, um anständige Tutorials zu CFD zu finden, CFD online zu durchsuchen und reddit. Einige wollten sogar, dass ich die gesamte JDA und Versteeg las, bevor ich mit dem Programmieren begann (was lächerlich ist), und ich konnte es nicht machen und wurde wirklich frustriert. Ich konnte immer noch nicht einfach die Hälfte der Dinge in diesen Büchern machen, und ich bin in meinem zweiten fortgeschrittenen CFD-Kurs in der Schule. Ich hoffe, meine Antwort hier skizziert einen besseren Weg für die nächste Generation mit dem Programmieren in CFD zu beginnen.

SCHRAUBE 2D !!!

Das Wichtigste zuerst: Wenn du ein Student bist und nicht so etwas wie ein Genie bist, wird es sehr schwer werden, gegen CFD und die regulären Kurse anzutreten. Ich schlage vor, dass Sie 2D vergessen und sich jetzt an 1D-Codes halten . CFD ist ziemlich schwierig und Sie brauchen definitiv einen Grad-Level-Kurs, um die Nuancen der Finite-Volumen-Methode und der Finite-Elemente-Methode in 2D zu verstehen. Ich schlage vor, fest an 1D zu kleben und die verschiedenen numerischen Methoden im Finite-Differenzen-Verfahren zu lernen, wie Lax-Schemata (normal, Friedrich, Wendroff, etc.), zentrale Upwind-Differenzen und Zeitdiskretisierungsschemata. Wenn Sie Beispiele benötigen, googeln Sie einfach etwas wie "Lax Friedrich 1D Advice C ++ code simple" und versuchen Sie, die Theorie in diesen Büchern mit dem Code zu vergleichen, zu verstehen, wie sie funktionieren und warum sie so funktionieren, wie sie es tun. Machen Sie eine Fehleranalyse (Von Neumann und auch Multimode). Es gibt eine Welt von Dingen, die man in 1D lernen kann, man wird nie die Dinge ausgehen. Am wichtigsten ist, dass sie einfach und logisch sind und beim Erstellen von Konzepten unverzichtbar sind.

Ich schlage vor, die reibungsfreie, inkompressible, lineare transiente Advektionsgleichung und dann die transiente Wärmegleichung mit verschiedenen Randbedingungen (dirichlet, neumann, periodic, Robin) und Geisterzellen auszuprobieren. Wenn das getan ist, können Sie versuchen, zu kompressiblen 1D Euler weiterzugehen, aber die obigen zwei sollten perfekt und streng durchgeführt werden, einschließlich der Theorie. Dies wird Ihnen helfen, eine perfekte Basis für einen Schulabschluss zu schaffen, wo Sie sich entspannen und sich darauf konzentrieren können, Ihre 2D-Konzepte richtig zu machen.

Wenn Sie sich über nichts sicher sind, nur Google.

HINTERGRUND FÜR MICH # 2

Um Ihnen eine Idee zu geben, habe ich zwei 2D Navier-Stokes-Projekte gemacht, die im letzten Semester im Prinzip 8 Codes enthielten. Ich dachte dann, dass ich für CFD sortiert wurde, und dann halbwegs in den fortgeschrittenen CFD-Kurs dieses Sems mache ich noch 1D-Codes. Dies ist wie wichtig und betont, 1D ist eine feste Hand zu bekommen. Seien Sie nicht enttäuscht von dem Mangel an schönen Farben und Formen, sie werden kommen. : D

SCHRAUBE 2D # 2 !!!!!!!

Angenommen, Sie haben dies alles zu Ihrer Zufriedenheit durchgeführt, können Sie versuchen, den 2D-Poisson-Solver zu konstruieren. In der Regel finden Sie Beispielcodes und ein einfaches Beispielraster im Internet. Wenn nicht, können Sie immer Ihr eigenes quadratisches Raster einheitlich machen und darauf lösen. Es ist der Ausgangspunkt für die Codierung beliebiger NS-Gleichungen. Sie können die verschiedenen iterativen Schemata wie ILU, Point Jacobi und so weiter lernen. Sie können einfache Beispiele von alles im Internet finden.

Vergessen Sie 2D Euler für jetzt, da es Hauptaroma kommt, wenn Sie komprimierbare Flüsse versuchen, die einige knifflige Physik in ihnen haben. Das Erlernen numerischer Schemata wird es für Sie zukünftig viel einfacher machen, 2D Euler zu verstehen. Sie können 2D mit Finite Differenzen machen, aber das wäre ziemlich simpel, nutzlos und umständlich, wenn Sie kein Meister bei 1D sind. Die meisten modernen 2D-Codes verwenden heute Finite-Volumen- oder diskontinuierliche Galerkin-Verfahren, die hinsichtlich der Formulierung sehr fortschrittlich sind.

ZU BERÜCKSICHTIGEN

Abschließend möchte ich noch ein paar Hinweise geben, die Ihnen helfen könnten, CFD realistisch zu starten

1.) Versuchen Sie zuerst, kommerzielle Codes zu lernen und Praktika an Orten zu machen, die sie benutzen. Sie geben Ihnen eine Vorstellung davon, was Sie erwarten können, und bilden ein hervorragendes pädagogisches Werkzeug zum Verständnis der Elemente und Arbeitsabläufe, die in ein CFD-Problem einfließen.

2.) Wechseln Sie zu C ++ oder Fortran ASAP, wenn Sie sogar von 2D-Codes träumen. Mein Professor, letztes Sem, erzählte der Klasse von einem älteren Studenten, der seinen Code in Python geschrieben hatte, und es dauerte eine Woche, bis er das finale Projekt, das nur eine Handvoll Minuten für uns in C ++ und Fortran benötigte, konvergierte. Er konnte sein gesamtes Projekt nicht umsetzen und bekam eine schlechte Note. Matlab ist bei Scicomp genauso schlecht. Lernen Sie, wie Sie Ihre Daten in einer .dat-Datei ausgeben und Tecplot oder Origin zum Zeichnen von Diagrammen und Konturen verwenden. Zwischen C ++ und Fortran spielt das eigentlich keine Rolle.

3.) Wieder kann ich nicht genug betonen, nicht für 2D. Es ist mühsam und irrelevant für Ihr Wachstum in CFD in diesem Stadium.

4.) Wenn Sie nicht planen, grad-Studien zu machen, vergessen Sie CFD-Codierung. Es wird Jahre dauern, bis Sie einen CFD-Teilbereich beherrschen, und wenn Sie es mit einem Handelscode machen, werden Sie einen oder zwei Tage brauchen. Die Codes sind darauf ausgelegt, idiotensicher zu sein, und die Ergebnisse sind auch ziemlich gut. Es wird viel nützlicher sein in nicht-fundamental-scicomp-forschungstechnischen Teams, wenn Sie die Grundlagen von FM und HT richtig verstehen.

5.) CFD wird dir in den Arsch treten, und du wirst es lieben. Ich habe nicht mehr als insgesamt 4 Stunden an 3 aufeinanderfolgenden Tagen geschlafen, und das ist in der Mitte meiner Frühlingsferien (keine Scheiße). Bereite dich auf die Lernkurve vor, aber es ist garantiert wert, wenn du deinen eigenen bunten Haufen Müll erzeugst.

AUF DEM 12-STUFEN-KURS

Sie können versuchen, die 12-Schritte-Sache als ein Hobby zu machen, aber im Nachhinein war es ein nutzloses, selbstgefälliges, überschätztes Bemühen, einen Einblick in echtes CFD zu bekommen, da das meiste davon einfach zu gut strukturiert und einfach ist. Es ist ein großartiger Kurs, ich gebe es zu, aber es ist fast zu gut, um letztlich nutzlos zu sein, wenn Sie wissen, was ich meine. Der Professor ist sehr überzeugend und schlau, aber geht zu einfach auf die Themen. Ich kenne eine Menge Leute, die hier auf ihren Kurs schwören und vielleicht ziemlich beleidigt werden, aber ich denke, einige, die einen Kurs in CFD absolviert haben, könnten mir ebenfalls zustimmen.

LERNEN SIE DIESES HERZ!

Eine Ode an CFD

Von Steve Bova und Alfred Lorber CFD-Labor der Universität von Texas

Alte Codes sterben niemals

Sie werden dir und mir übergeben

Wenn deins nicht viel Grobheit hat

Sie müssen nur mehr Viskosität hinzufügen

Manch ein Knopf und mehrere ein Schalter

Sind erforderlich, um es ohne Probleme zu laufen

Wenn höhere Flopraten auftreten, müssen Sie erkennen

Erzeugen Sie einfach eine größere Rastergröße

Wenn eine geringfügige Änderung Ihr Manager sucht

Meine Schätzung ist mindestens zehn Wochen.

4
hinzugefügt
Wenn Sie an inkompressiblen Strömungen interessiert sind, gibt es einfach keine 1D-Periode. Sie müssen 2D oder 3D machen.
hinzugefügt der Autor nsanders, Quelle
Ich stimme deinem Punkt zu, zuerst 1D vollständig zu verstehen, da die höherdimensionalen Fälle Studenten mit technischen Details überwältigen, die für das Erlernen der Grundlagen von CFD irrelevant sind. Aber 2D/3D ist, wo Kodierung und die richtige Auswahl von Algorithmen interessant werden und wo relevante physikalische Probleme angegangen werden können. Ich würde hier nicht ohne ein fundiertes Wissen über die zugrunde liegende Physik und Mathematik beginnen. Viele Praktiker-Führer neigen dazu, ausgefeilte Techniken zu unterrichten, die auf den ersten Blick aus dem Nichts erscheinen, aber viele Tricks sind eher "offensichtlich" von einem mathematischen Standpunkt aus.
hinzugefügt der Autor Christian Waluga, Quelle
+1 für diese Tirade, da manchmal ein paar persönliche Meinungen einem Neuling helfen zu verstehen, was vor sich geht. Allerdings stimme ich Ihren "Schraube 2D" -Argumenten überhaupt nicht zu. Es gibt keine Navier-Stokes oder Euler Gleichung in 1D ...
hinzugefügt der Autor Jan, Quelle
@Jan Nun, ich meinte nichts, was CFD sehr ähnelt, aber ich weiß, dass es 1D-Codes für NS und Euler für zB gibt. in Verbrennungs- und Schockröhren. Sie vereinfachen NS und fädeln sie mit komplexeren Physik in 1D. Ich wollte nur betonen, dass 1D derjenige ist, der mit cfd mehr Tiefe und Einsicht gewinnt. Wenn er jetzt in 2D geht, fürchte ich, dass die tieferen Konzepte ausgegrenzt werden. Wie auch immer, danke fürs Upvooten! Gerade entdeckt und hier bei stackexchange gestartet (ich liebe es!) Und hatte begonnen zu denken, dass der Schwindel zu weit gegangen war. : D
hinzugefügt der Autor sebastian, Quelle
Ich habe bereits einige Techniken in meinem Kurs mit 1D-Gleichungen durchgespielt, und deshalb wollte ich weitere 2D-Beispiele zum Versuch finden.
hinzugefügt der Autor plaidshirt, Quelle

Das CFD-Buch von Blazek hat mir mehr geholfen als jeder andere. Er erklärt Finite-Volumen-Methoden sehr gut. Mit diesem Buch habe ich einen 2D Euler Solver und einen 2D kompressiblen Navier - Stokes Solver geschrieben.

Ich würde auch vorschlagen, dass Sie Qiqi Wangs Vortragsvideos ansehen. Nicht die Aerodynamik von viskosen Flüssigkeiten - scrollen Sie weiter nach unten und Sie sollten Videos mit Vortrag 20 sehen ... Vortrag 1. Diese Videos stammen aus einem Kurs über numerische Methoden am MIT. Hier habe ich wirklich gelernt, endliche Volumencodes zu schreiben. Er erklärt die Theorie/wie die Methoden funktionieren und entwickelt dann Beispiele in MATLAB, damit Sie folgen können. Er unterrichtet sehr gut und ist leicht zu folgen.

2
hinzugefügt

Diese Frage ist sehr weit gefasst. Wie bereits oben erwähnt, könnte CFD branchenbezogen sein oder auf einem Forschungsthema basieren. Außerdem gibt es einen großen Unterschied zwischen kompressiblen und inkompressiblen Strömungsproblemen. Wenn Sie sich auf kompressible Strömung konzentrieren, dann ist es ein guter Anfang, sich mit hyperbolischen Erhaltungssätzen vertraut zu machen. Und wie James oben gesagt hat, ist die Implementierung eines Finite-Volume-Solvers in einem einfachen kartesischen 2D-Gitter ein weiterer guter Schritt.

Ich empfehle Bücher wie:

  • Finite-Volumen-Methoden für hyperbolische Probleme von Randall J. LeVeque
  • Nodal Discontinuous Galerkin Methoden von Jan S. Hesthaven und Tim Warburton

Hesthaven und Warburton haben sowohl Matlab- als auch C ++ - Codes zur Implementierung von DG-Schemata für Euler-Gleichungen in 1D und 2D. Finite-Volumen-Methoden sind DG mit stückweise konstanten Approximationen.

1
hinzugefügt