Gibt es einen guten, benutzerfreundlichen und hochwertigen Open-Source-CFD-Solver?


17

Meine Dissertation beschäftigt sich mit der Entwicklung numerischer Methoden zur Modellreduktion in der Verbrennung. Ich verwende meine Methoden ausschließlich für den chemischen Teil von Verbrennungssimulationen und habe viele Fallstudien für 0-D-Simulationen (keine Strömung). Was ich möchte, ist, Simulationen auszuführen, in denen ein Fluss vorliegt, vorzugsweise 2-D- oder 3-D-Simulationen.

Diese Simulationen müssten aufgrund des hohen Rechenaufwands parallel ablaufen. Ich brauche auch etwas, das mit Chemielösern wie Chemkin oder Cantera zusammenarbeitet, für die ich den Quellcode habe. (Chemkin ist in Fortran 77 und Cantera ist in C ++.)

Im Idealfall könnte ich anhand der Grundkenntnisse der Strömungsmechanik, die ich aus meinem Abschlussprogramm und einem CFD-Paket habe, ein Strömungsmuster festlegen, die Chemie hinzufügen und ausführen. Wenn ich muss, kann ich die Gleichungen für die Flüssigkeitsbewegung und die Chemie für eine einfache Fallstudie auf der Grundlage eines Versuchsaufbaus eines ehemaligen Mitarbeiters aufstellen, aber ich würde es sehr vorziehen, meinen eigenen CFD-Code nicht zu rollen, wenn es keinen gibt Ein Paket oder Pakete, die es extrem einfach gemacht haben. Ich würde gerne 2-3 Wochen damit verbringen. Ich weiß nicht, ob diese Anforderung PETSc oder Trilinos ausschließt. Wenn ich länger dafür ausgeben muss, würde ich es lieber auf später verschieben, weil ich einen Mitarbeiter habe, der auch einen CFD-Code für Fallstudien liefert.

Hat jemand Erfahrung mit einem CFD-Paket oder mit dem Schreiben von CFD-Code, und wenn ja, können Sie einen empfehlen? Eine Sache, von der ich weiß, dass ich sie gerne verwenden würde, ist die Strang-Aufteilung, aber ich bin kein CFD- oder PDE-Experte. Ich studiere die Chemie und die numerischen Methoden zur Modellreduktion. Bitte geben Sie auch an, wie lange Sie mit der von Ihnen empfohlenen Software gebraucht haben, um auf den neuesten Stand zu kommen.

@FrenchKheldar macht einen guten Punkt, dass ich die Eigenschaften von Problemen erwähnen sollte, die ich lösen möchte:

  • Ideales (perfektes) Gas, einphasig
  • Komprimierbar
  • Eine laminare Strömung ist wesentlich; turbulente Strömung ist ein Plus. (Ich kenne mich ein wenig mit Turbulenzen aus früheren Arbeiten mit numerischen Methoden in der CFD aus, habe aber noch nicht mit CFD-Solvern gearbeitet. Ich kenne mich nur ein wenig mit Physik aus.)
  • Null-Mach-Zahl-Formulierung ist in Ordnung (Schocks oder Überschallfluss sind mir egal)
  • Die Verbrennungschemie ignoriert die Soret- und Dufour-Flüsse und behandelt die Diffusion als Fickian
  • Geometrie kann etwas Einfaches sein

Ich kann Schnittstellencode schreiben, aber je weniger ich schreiben muss, desto besser. @FrenchKheldar weist auch darauf hin, dass Cantera über Fortran- und Python-Bindungen verfügt. Ich verwende momentan die Cantera Python-Bindungen für das Rapid Prototyping, daher bin ich auch damit vertraut.


Cantera hat Wrapper für Python und Fortran, so dass die Suche etwas erweitert wird.
FrenchKheldar

Möchten Sie laminare Strömungen oder turbulente Strömungen modellieren? Kompressibel oder inkompressibel? Perfektes Gas? Einzelphase? Je mehr Details Sie uns geben können, desto präziser ist die Antwort.
FrenchKheldar

@FrenchKheldar: Danke für den Hinweis. Ich habe einige Besonderheiten hinzugefügt.
Geoff Oxberry

2
Noch ein Kommentar: Wenn Sie sich nicht für Akustik oder Wellen interessieren, sollten Sie dann keinen inkompressiblen Solver verwenden können? Das wird deine Möglichkeiten erweitern ...
FrenchKheldar

Lassen Sie mich umformulieren: Schocks interessieren mich nicht. Da die Phase ein ideales Gas ist und sich die Dichte idealer Gase ändert, wenn sich der Druck ändert, sollte die Strömung komprimierbar sein.
Geoff Oxberry

Antworten:


11

Ich bin ein starker Benutzer von OpenFOAM , daher würde ich es natürlich empfehlen. Es verfügt über eine Vielzahl von Funktionen, einschließlich Verbrennungsmodellen (obwohl nicht unbedingt genau das, was Sie benötigen) und wurde von anderen Benutzern zusammen mit Canterra verwendet . Wenn Sie einen Löser für eine bestimmte Gleichung benötigen, die noch nicht implementiert wurde, können Sie Ihre Gleichungen buchstäblich schreiben . Ich weiß nicht, was Strang-Splitting ist (ich arbeite nicht selbst an der Verbrennung), aber andere Leute haben es in OpenFOAM verwendet .

Es gibt nur eine begrenzte Anzahl von Tutorials. Die in der Bedienungsanleitung dokumentierten enthalten keine Chemie. Es gibt einige Beispielfälle für die Reaktionslöser, die Sie sich ansehen können. Am besten besuchen Sie die OS-CFD- Kurswebsite von Chalmers (Link für 2011, enthält jedoch einen Link zu den Seiten der Vorjahre). Die Studenten dort dokumentieren oft die Löser, an denen sie arbeiten, zB hier .

Informationen zum Lernaufwand: Wenn Sie eines der vordefinierten Modelle verwenden, ist die Verwendung recht einfach und Sie sollten in der Lage sein, innerhalb weniger Wochen Ergebnisse zu erzielen. Wenn Sie unter die oberste Ebene absteigen müssen (z. B. um einen neuen ODE-Solver hinzuzufügen), kann es sehr schnell schwieriger werden, und Sie werden es zu schätzen wissen, C ++ zu kennen.


Vielen Dank für die Empfehlung! Ich habe gute Dinge über OpenFOAM gehört und würde es gerne in Zukunft verwenden. War es Ihrer Erfahrung nach einfach, die API zu erlernen? Gibt es gute Tutorials oder Beispiele, die OpenFOAM verwenden, vorzugsweise mit Chemie?
Geoff Oxberry

Ich habe meine Antwort aktualisiert
akid

1
Fange bald an, C ++ zu lernen. :) Godspeed.
Tmaric

2

Sie könnten PyClaw verwenden , eine parallele Erweiterung von Clawpack (Anmerkung: Ich bin einer der Hauptentwickler von PyClaw). Es enthält 2D- und 3D-Löser für die nichtviskosen Euler-Gleichungen (kompressible Strömung) eines idealen Gases. Es ist auch eine Strang-Aufspaltung eingebaut, aber Sie müssen die Bewertung der viskosen Terme und der Chemie selbst vornehmen. Die Schnittstelle zu Chemkin und Cantera sollte unkompliziert sein, da PyClaw in Python geschrieben ist und bereits Fortran 77- und C-Code enthält.

PyClaw ist relativ neu (obwohl der zugrunde liegende Clawpack-Code ziemlich alt ist) und daher nicht so etabliert wie OpenFOAM.


Vielen Dank! Ich muss es überprüfen, obwohl es eine Weile dauern kann, bis ich dazu komme. Wenn ich dazu komme, werde ich Sie wissen lassen, wie es geht.
Geoff Oxberry

2

Der Fire Dynamics Simulator (FDS) von NIST hört sich nach Ihren Wünschen an. FDS ist ein Durchflusslöser mit niedriger Machzahl. Die Dichte kann sich ändern, aber akustische Effekte und Stöße werden vernachlässigt.

FDS ist ziemlich gut dokumentiert, aber ich gebe zu, ich habe nicht in den Routinen des Hauptflusslösers nachgesehen. Ich weiß auch nicht viel darüber, wie FDS mit der Verbrennungschemie umgeht.

Ich empfehle, den neuesten Code von der Google Code-Site von FDS herunterzuladen .


0

Da drüben gibt es genug!

OpenFOAM ist das Beste, IMHO, aber andere sind unter diesem Link ,


Bitte geben Sie keine "Nur-Link" -Antworten, da die Links sonst kaputt gehen können.
Jan

Ich wollte nicht alle dort genannten Optionen als "meine" präsentieren. Technisch könnte ich den gesamten Inhalt kopieren und einfügen, aber ich bin nicht diese Person. Also habe ich den Link direkt
eingefügt

1
In Ordung. Man kann aber zum Beispiel sagen, dass der Lehrstuhl für Computational Fluid Dynamics and Turbulence Mechanics an der Universität von Manchester eine Liste von Open-Source-Software für Ingenieure erstellt hat. In diesem Fall können andere Besucher das Internet durchsuchen, falls der Link nicht funktioniert.
Jan

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.