| |
| Xometry Europe erweitert das Angebot um Vakuumguss und Formpressen, eine Pressemitteilung
|
Autor
|
Thema: Heuzen einer Metallschmelze mit einem Elektronenstrahl (2855 / mal gelesen)
|
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 20. Dez. 2016 08:12 <-- editieren / zitieren --> Unities abgeben:
Morgen an Alle, ich hoffe ihr könnt mir weiterhelfen. Für meine Bachelorarbeit ist es wichtig, dass ich die Strömung in einer Metallschmelze durch den Beschuss mit einem Elektronenstrahl simuliere, zu erfahren wie sich die Schmelze erwärmt und ob sich ein Gleichgewicht einstellt. Die Metallschmelze ist in einen rotierenden Außenring (siehe Bild: Blau soll die Schmelze darstellen und grau den Außenring). Durch die Rotation des Außenrings wirkt eine zusätzliche Zentrifugalkraft auf den Ring. Der Umgebungsdruck soll im Vakuum liegen. Ich möchte als Startpunkt wählen, dass das Metall komplett geschmolzen ist und eine gleichmäßige Temperaturverteilung, die Schmelztemperatur, besitzt. Auch treffe ich am Anfang die Annahme, dass der Ring sehr schnell rotiert. Dadurch erhalte ich anstatt eines Brennpunktes eine Brennbahn vom Elektronenstrahl, in dem gleiche Bedingungen herrschen. Durch diese Annahmen kann ich dann zu Vereinfachung des Problems, nur einen Ausschnitt in 2D betrachten. An den 3 Flächen des Außenrings in denen die Schmelze liegt, soll die Schmelztemperatur der Schmelze nicht überschritten werden. An der Oberfläche der Schmelze soll Wärmestrahlung stattfinden und keine Konvektion, da ich im Vakuum simuliere. Mein Professor hat mir den Solver buoyantBoussinesqSimple oder Pimple empfohlen, da ich hier die zusätzliche Zentrifugalkraft als ein vielfaches von g beschreiben kann. Ich habe auch die Beispiele HotRoom von beiden Solvern durchgespielt, komme aber nicht richtig weiter. Auch habe ich mit Hilfe von Tobias Holzmann seine LaserKonvektions-Randbedingung eingebaut. Wisst ihr welche Effekte man bei Elektronenstrahlerwärmung oder auch -schmelzen beachten muss, wie z.B. den Marangoni-Effekt? Kann man auch eine 3D-Wärmequelle einbauen und wie kann ich als Wärmequelle eine konstante Leistung verwenden? Ist der Solver richtig gewählt oder eher nicht? Kann mir generell jemand helfen was ich beachten sollte? Ich benutze OpenFoam 4.1 Vielen Dank schon im Vorraus. Mit Freundlichen Grüßen ChrisBa [Diese Nachricht wurde von ChrisBa am 20. Dez. 2016 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 20. Dez. 2016 10:32 <-- editieren / zitieren --> Unities abgeben:
|
Shor-ty Moderator
Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 20. Dez. 2016 14:55 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisBa
Hi Chris, wie schon via E-Mail Austausch gesagt gibt es für mich drei Möglichkeiten deinen Case zu simulieren. Fall 1 Das wäre der plausibelste aber teuerste. Modellierung des kompletten Liquids in 3D. Fall 2 Modellierung als 2d, wobei der Ring bleibt und nur in die Tiefe der Fall als 2D betrachtet wird. Fall 3 Modellierung als 2d wedge, quasi ein 5° Segment. Ich glaube aus deiner Erläuterung zu verstehen, dass du Fall 3 betrachten möchtest. Allerdings ist hier die Verwendung von meiner Randbedingung recht sinnfrei, da du annimmst, dass der punktuelle Energieeintragung sowieso überall gleichzeitig auftritt. Hier würde ich dann eine andere RB nehmen wie bspw. irgendeine heatFlux RB oder ggf. musst du was selber programmieren.
Die Zentrifugalkraft sollte meines Erachtens unabhängig vom Solver sein. Du hast bei den buoyant Lösern eben die Gravitationskraft dabei die aber in deinem Fall vernachlässigbar sein wird.
Der Marangonie-Effekt hat - soweit ich mich entsinnen kann, was mit Oberflächen Spannungen zu tun, oder nicht? Entsprechend hier nicht vorliegend. ------------------ Viele Grüße, Tobias Holzmann OpenFOAM Tutorials | Publikationen | Für Anfänger wiki.openfoam.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 20. Dez. 2016 15:06 <-- editieren / zitieren --> Unities abgeben:
Ja genau ich möchte am Anfang den Fall 3 verwenden. Ich habe aber keine wedge verwendet, sondern nur einen einfachen schmalen Block erstellt. Bei dem habe ich an 2 Schnittflächen die Bedingung empty gesetzt damit es als 2D-Simulation gehandhabt wird (wie bei dem Beispiel cavity). Soll ich dann wie beim E-Mail Austausch erwähnt cellcone verwenden, damit ich auch den konstante Leistung in den Zellen angeben kann? Bei dem Beschuss mit Elektronen verlieren sie im Target Energie und führen dadurch zu Einträgen in der Tiefe. Also wäre es wenn man es 3D betrachten würde auch eine 3D-Energiequelle. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 20. Dez. 2016 15:09 <-- editieren / zitieren --> Unities abgeben:
|
Shor-ty Moderator
Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 20. Dez. 2016 15:34 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisBa
Dein Case-Setup ist falsch. Du hast einen Ring und damit ist Fall 3 mit wedges zu machen, ansonsten ist das physikalisch nicht korrekt und du betrachtest was anderes. Der Eintrag der Energie kommt über die Oberfläche. Also brauchst du eine Randbedingung, die dir diesen Energieeintrag liefert; keine cellZones etc. es sei denn du hast wirklich eine Source im Material. Bezüglich der Zentrifugalkraft. Was denkst du wird dein Fluid machen? Meiner Ansicht nach wird sich da nicht viel im Fluid bewegen. Ist ja wie eine Zentrifuge. Das Fluid wird nach aussen gedrückt und bewegt sich mit dem Ring mit. Ich habs selber noch nicht simuliert aber ich hätte gesagt dass das Fluid "steht", vor allem unter der Annahme das die Rotation so schnell ist, dass das Fluid nicht aus dem Ring läuft. ------------------ Viele Grüße, Tobias Holzmann OpenFOAM Tutorials | Publikationen | Für Anfänger wiki.openfoam.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 20. Dez. 2016 15:47 <-- editieren / zitieren --> Unities abgeben:
Danke für den Hinweis. Tut mir leid, dass ich das jetzt Frage. Habe wedge vorher noch nicht verwendet und bin jetzt nicht so tief in Openfoam drin. Was genau ist der Fehler zu empty? Ok wegde simuliert dann einen Ausschnitt vom dem gesamten Ring als 2D? Muss ich dann erst dann den kompletten Ring meshen und Openfoam erkennt dann durch wedge den einen Ausschnitt? Ja ich habe Source im Material. Ich muss nur noch eine geeignete Formel finden. kann man auch eine externe Datei verwenden die jeder Zelle in einen bestimmten Wert vorschreibt? Wenn der Ring beispielsweise um die x-Achse rotiert und die Erdbeschleunigung in y-Richtung wirkt, dann wirkt sich dies auf die Strömung in der y,z-Ebene aus, da es eine zusätzliche Beschleunigung erfährt. So hätte ich gedacht, dass es funktioniert. Viele Grüße Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 20. Dez. 2016 16:59 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisBa
|
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 21. Dez. 2016 08:17 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen an Alle, sorry Tobias, wenn ich mich gestern unklar ausgedrückt habe. Ich habe ein Bild angefügt, bei dem man sieht, wie die Rotationsachse liegt. Die Rotationsachse ist gleich der x-Achse. Die Erdbeschleunigung wirkt in y-Richtung. Ich weiß, dass ich nicht überall die gleiche Beschleunigung habe, da die Zentrifugalkraft entgegenwirken wird. Ich möchte mir nur das Schnittbild in der x,y-Ebene anschauen. Ich werde deine Ratschläge einarbeiten und wenn ich nochmal Fragen habe, werde ich sie in diesen Thread stellen. Ok? Vielleicht kann mir jemand dann noch zwischenzeitlich Tipps oder Anmerkungen zu diesem Thema geben. MfG Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 21. Dez. 2016 10:45 <-- editieren / zitieren --> Unities abgeben:
|
Shor-ty Moderator
Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 21. Dez. 2016 10:57 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisBa
|
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 21. Dez. 2016 10:58 <-- editieren / zitieren --> Unities abgeben:
|
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 21. Dez. 2016 11:02 <-- editieren / zitieren --> Unities abgeben:
|
Shor-ty Moderator
Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 21. Dez. 2016 12:38 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisBa
Okay... was willst du überhaupt machen? Wenn du so frägst heißt das für mich, du möchtest mit dem Elektronenstrahl deine Festkörper schmelzen. Allerdings hab ich eher die Vermutung das du nur dein Liquid erwärmen möchtest. Das sind Zweierlei. Ob du nun die Wärme mit einem LASER / nem Elektronenstrahl / mit einem Brenner in dein Fluid einbringst spielt doch keine Rolle, außer der Absorptionsmechanismus ist anders. Bspw. hätte ich gedacht das der Laser durch die Flüssigkeit dringt und teilweiße auch den Ring erwischt. ------------------ Viele Grüße, Tobias Holzmann OpenFOAM Tutorials | Publikationen | Für Anfänger wiki.openfoam.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 21. Dez. 2016 12:57 <-- editieren / zitieren --> Unities abgeben:
Ich will nur Liquid erwärmen. Ich weiß, dass Elektronen ins Material eindringen und durch unterschiedliche Effekte ihre Anfangsenergie verlieren. Wie weit sie eindringen hängt vom Material selbst ab. Ich bekomme somit nicht nur an der Oberfläche einen Energieeintrag, sondern auch in der Tiefe. Wenn die Elektronen im Material beim Durchdringen Energie verlieren, dann wird diese als Verlustenergie im Werkstück "gespeichert". Deshalb ist es für mich wichtig, dass ich Zellen mit einzelnen Werten belegen kann und diese gesamt, dann als Energiequelle verwende. Zu diesem speziellen Thema findet man auch wenige mathematische Gleichungen. Deshalb wäre es klasse, wenn jemand schon mal sowas implementiert hat oder Tipps geben kann. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 21. Dez. 2016 13:47 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisBa
Wenn du Glück hast gibt es jemanden hier. Da ich aber grob im Gefühl hab, was die Leute im Forum (hier) machen, glaub ich weniger das du ein Feedback bekommst. Da wäre vllt ein anderes Forum besser für dich oder allgemeine Literatur. Bezüglich der Modellierung ist das nicht schwer. fvOptions für die Energieerhöhung der gewählten Zellen (cellZone) und eine entsprechende Randbedingung. Gutes gelingen.
------------------ Viele Grüße, Tobias Holzmann OpenFOAM Tutorials | Publikationen | Für Anfänger wiki.openfoam.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 21. Dez. 2016 13:52 <-- editieren / zitieren --> Unities abgeben:
Ich habe auch mal in cfd-online meine Frage gestellt, aber bis jetzt keine Antwort erhalten. Dann versuch ich es mal so. Bei fragen zu fvoptions, cellcone und geeigneten Randbediengungen melde ich mich hier wieder. Vielen Dank auf jeden Fall für deine Hilfe, Tobias. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 21. Dez. 2016 15:07 <-- editieren / zitieren --> Unities abgeben:
Hallo nochmal, ich habe mir den Userguide zu den beiden patches empty und wedge durchgelesen. Ich verstehe aber noch nicht ganz den Unterschied von den beiden. Wedge wird auch benutzt um eine 2D-Simulation zu haben, aber hierbei noch die Achssymmetrie beachtet wird. Wenn ich annehme, dass ich einen Ring habe, der einen sehr großen Innenradius besitzt, dann kann ich ja sagen, dass der betrachtete Auschnitt rechteckig ist. Oder welchen Aspekt übersehe ich hier noch? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 02. Mrz. 2017 19:06 <-- editieren / zitieren --> Unities abgeben:
Hy an alle, ich hoffe, dass sich zu diesem Thema noch jemand meldet. Ich verstehe noch ein paar Sachen nicht. Zuerst habe ich eine Frage zum Solver buoyantBoussinesqSimpleFoam. Nach der OpenFoam-Wiki-Seite ist ein Wärmefluss über die Oberflächen mit berücksichtigt. Eine reine Wärmeleitung ist dort gemeint. Ist hier der Wärmefluss durch Konvektion berücksichtigt? Wenn ich als Randbedingungen fixedValue bei dem Temperaturfeld T verwende, ist dann damit der Wärmefluss gewährleistet? Ich habe versucht mit fvOption einmal eine Volumentemperaturquelle in einen Bereich zu definieren und ein zweites mal habe ich versucht einen Wärmefluss an einer Oberfläche zu definieren. Bei heatSource: Ich möchte nur das Temperaturprofil in der x,z-Ebene modellieren. In x- und z-Richtung wird die Leistung vermindert. Dies habe ich versucht zu definieren. Mein Problem ist, dass ich denke, dass fvOptions falsch definiert ist. Ich versuche zu der aktuellen Temperatur der Zelle die Temperatur durch die Leistung zu addieren. Ich habe es so gemacht, dass ich von meinen gesamten Gitter jede einzelne Zelle aufrufe und dann überprüfe, ob sie im Bereich ist oder nicht. Wenn ja, wird meine abgeschwächte Leistung für diese Zelle berechnet und auf K/s umgerechnet. Meine Frage ist es richtig, wenn ich einfach sage: scalarField TSource = eqn.source(); forAll(C, i) { ... TSource[i] -= Tzu/V } oder mache ich hiermit was falsch? bei coolSource möchte ich die Temperaturverminderung durch Wärmefluss nach außen folgendermaßen definieren Tcool += Scooling/V wobei Scooling = Ai * hc * (T - Tumg) / rho / Cp Mit: Ai = aktuelle Zellenoberfläche hc = Wärmeübergangskoeffizient T = aktuelle Temperatur der Oberfläche Tumg = Umgebungstemperatur, die konstant ist rho = Dichte des Fluids Cp = Wärmekapazität Könntet ihr einfach mal drüberschauen, ob es passt? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 17. Mrz. 2017 13:51 <-- editieren / zitieren --> Unities abgeben:
Ich habe eine Frage. Wie benutze ich fvOptions mit codedSource richtig? Ich benutze buoyantBoussinesqSimpleFoam und Openfoam 4.1. Ich möchte folgende Gaussverteilung zu einen Volumenteilstück als Quelle ihinzufügen: P=U*I*exp(-factor) P ist die Leistung in Watt. U ist die Spannung in Volt I ist die Stromstärke in Ampere Was macht fvOptions mit meiner Temperaturgleichung?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 21. Mrz. 2017 10:41 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisBa
|
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 21. Mrz. 2017 11:34 <-- editieren / zitieren --> Unities abgeben:
Hy Tobias, ich verstehe nur eins bei fvOption nicht. Obwohl ich ihm nicht sage, dass er durch das Volumen teilen soll, macht er es automatisch. Das verwirrt mich ein wenig. Kannst du mir das erklären? MfG Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 21. Mrz. 2017 12:37 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisBa
Wieso willst du etwas durch das Volumen teilen? Wir verwenden die Finite-Volumen-Methode und wenn du dir mal die Gleichungen anschaust (Integrale), dann siehst du dass die Gleichungen entweder über die Oberfläche eines KV oder über dessen Volumen integrieren. Heißt also wir müssen uns hierbei keine Gedanken machen. Leider hat CAD kein Formeleditor aber ich denke es ist klar. Falls nicht - schau in meinem Buch (oder anderer Literatur) einfach die Integrale an. Die Source-Terme sind immer int_V rho S dV
------------------ Viele Grüße, Tobias Holzmann OpenFOAM Tutorials | Publikationen | Für Anfänger wiki.openfoam.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 21. Mrz. 2017 13:01 <-- editieren / zitieren --> Unities abgeben:
Ok danke. Ich schaue es mir nochmal an. Ich habe nur Verständnisprobleme, da ich in fvOptions Q/rho/Cp rechne. mit Q in W rho in kg/m^3 Cp in J/kgK und der Solver dann automatisch auf den richtigen Wert rechnet. Wenn dann kann ich dir den Test-case schicken. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 21. Mrz. 2017 13:25 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisBa
Wenn du einen Inkompressiblen Solver hast, musst du deine Quelle durch die Dichte teilen. Wieso du aber durch Cp teilst ist mir unschlüssig, außer du hast ne eigene Temperaturgleichung implementiert, die wahrscheinlich auch nur dann hergeleitet werden kann, wenn cp konstant, daher wird die ganze Gleichung dann durch cp geteilt und daher auch deine Quelle. ------------------ Viele Grüße, Tobias Holzmann OpenFOAM Tutorials | Publikationen | Für Anfänger wiki.openfoam.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 21. Mrz. 2017 13:32 <-- editieren / zitieren --> Unities abgeben:
|
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 24. Mrz. 2017 13:57 <-- editieren / zitieren --> Unities abgeben:
Hy Shorty, ich verstehe scalarCodedSource von fvOptions immer noch nicht und finde keine Erklärungen. Wenn ich mit fvOptions einen Wert als Quelle vorgebe, wie interpretiert fvOption, dann diesen Wert? Bzw. wie wird er in meiner Temperaturgleichung für inkompressible Fluide umgesetzt? MfG Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 27. Mrz. 2017 09:09 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, ich habe das Wochenende darüber gegrübelt. Finde aber keine Antwort. Ich verstehe nicht wie buoyantBoussinesq die Werte interpretiert. Im Anhang findet ihr mein fvOptions, die T-Datei nach einen Integrationsschritt (verwende Simple) und log-Datei. Sorry dass ich so dränge, aber mir geht die Zeit für meine Bachelorarbeit aus. MfG Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 27. Mrz. 2017 09:10 <-- editieren / zitieren --> Unities abgeben:
|
Shor-ty Moderator
Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 27. Mrz. 2017 17:07 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisBa
Hallo zusammen, der Christian hat mich via E-Mail kontaktiert. Da ich aber die Informationen niemandem vorenhalten möchte, hier die Details.
- Im Anhang ein Testcase (das ist ein TESTcase)
- In der Zelle mit der ID 0 wird pro Sekunde eine Source eingefügt die 1K beträgt, dass heißt aber nicht das wir nach 10s in der Zelle einen Anstieg von 10K haben
- Die Werte müssen mit dem Volumen der numerischen Zelle multipliziert werden. Wenn ihr euch jetzt fragt warum, dann leitet euch das einfach schnell selber her.
- Für alle Faulen: buoyantBoussinesq...Foam hat die Einheiten [K/s] in der Temperaturmatrix (TEqn). Heißt also das fvOption(T) auch in [K/s] sein muss. Allerdings integrieren wir bei FOAM über das Volumen und entsprechend sieht die Source dann so aus: int [K/s] dV. Da fvOptions direkt die Matrix manipuliert (bzw. sauber ausgedrückt bei der eigenen coded Variante), muss man also die Sourcen in [K m^3/s] eintragen.
Die direkte Manipulation der Matrix entnehme ich aus folgendem Code:
Code:
//- Get the souce terms of the matrix scalarField& TSource = eqn.source();
------------------ Viele Grüße, Tobias Holzmann
OpenFOAM Tutorials | Publikationen | Für Anfänger wiki.openfoam.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 28. Mrz. 2017 08:43 <-- editieren / zitieren --> Unities abgeben:
|
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 29. Mrz. 2017 11:44 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, die Erklärung von Shorty hilft mir zu verstehen, warum man diese Dimension benötigt. Ich habe aber noch ein Verständnisproblem: Ich kann aus meiner Funktion, die ich in fvOptions implementiert habe, die Werte ausgeben lassen. Diese haben mit den aktuellen Konfigurationen Werte im Bereich von e-7. Openfoam gibt dann aber eine Temperatursteigerung von 20 K an. (Die Werte sind Beispiele) Ich verstehe nicht ob fvOptions einen Faktor verwendet oder Openfoam dies macht. Ich hoffe jemand kann es mir erklären. Wenn es hilft, kann ich ein Testcase hochladen Mfg Chris [Diese Nachricht wurde von ChrisBa am 29. Mrz. 2017 editiert.] [Diese Nachricht wurde von ChrisBa am 29. Mrz. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 29. Mrz. 2017 16:44 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisBa
|
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 29. Mrz. 2017 16:51 <-- editieren / zitieren --> Unities abgeben:
Ok hier ist mein Beispiel. Wie schon gesagt es geht mir um das Verständnis von der Verarbeitung des Wertes. [Diese Nachricht wurde von ChrisBa am 29. Mrz. 2017 editiert.] [Diese Nachricht wurde von ChrisBa am 29. Mrz. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 29. Mrz. 2017 17:23 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisBa
Naja in deinem Beispiel ist das jetzt nicht so einfach, weil du stationär rechnest. Die Time = 2 sind keine 2 Sekunden, das sind 2 Iterationen und bezieht sich auf keine wirkliche Zeiteinheit. Das erkennst du ganz deutlich daran, dass du T unterrelaxierst und wenn du den Wert änderst, dann wirst du auch andere Werte nach 2 Iterationen haben. Außerdem ist da ja gar nichts konvergiert und daher kannst du das so nicht mit dem Solver nachvollziehen. Du brauchst den transienten Löser. Die Source wird natürlich schon Zeitlich integriert aber eben nicht so wie du das erwartest weil dein Relaxfaktor < 1 ist. Ich nehme mal schwer an, dass 1 auch gar nicht möglich ist in deinem Fall, da die Simulation crashen würde. Außerdem vergisst du schon wieder das Volumen in deiner Gleichung. Ich frag mich wieso du das alles so kompliziert machst (bei einem Beispielcase).
Code:
src[cell_i] -= 1*V[cell_i];
Damit kann man wesentlich mehr ableiten als bei deiner Funktion. Zumindest wenn es darum geht, Dinge verstehen zu wollen Ich müsste jetzt mehr Zeit investieren um dir da genaues sagen zu können. Sorry.
------------------ Viele Grüße, Tobias Holzmann OpenFOAM Tutorials | Publikationen | Für Anfänger wiki.openfoam.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 29. Mrz. 2017 17:41 <-- editieren / zitieren --> Unities abgeben:
Nur zu meinen Verständnis: 1. Es sollten also bessere Werte rauskommen, wenn ich den Solver Pimple verwende? 2. Das mit der Unterrelaxation habe ich "getestet", indem ich die Werte verändert habe. Aber nur alleine durch den Relaxationsfaktor können diese Werte doch nicht zusammenkommen, oder? Wie oben erwähnt liefert mir fvOptions werte von e-7 und die Temperatur steigt um einen Wert e2. Spielt da kein anderer Faktor mehr mit? 3. Ich dachte, man kann den Simple solver auch verwenden, wenn einen das Verhalten im stationären Zustand interessiert? Sollten die Temperaturen, dann nicht ähnlich den erwarteten Werten sein? 4. Ich setzte in meine Formel folgende Dimensionen ein: q in W Cp in J/(kg*K) rho in (kg/m^3) ich erhalte damit: m^3*K/s Deshalb würde ich kein Multiplizieren mit dem Volumen benötigen, da die Dimensionen passen. Mit welchen Volumen meinst du, dass ich multiplizieren soll? Mit dem Zellvolumen? MfG Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 29. Mrz. 2017 17:42 <-- editieren / zitieren --> Unities abgeben:
|
Shor-ty Moderator
Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 29. Mrz. 2017 20:09 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisBa
Hi Chris, ähm zu Punkt 1. Beim Pimple löst du bei einem Zeitschritt genau die Zeit die du willst. Damit kann man auch die Sourcen exakt ausmachen. Beim SIMPLE, ist das nicht so, weil durch die Unterrelaxation die Werte geändert werden. Es gibt hier dann auch zwei verschiedene Relaxationsparameter. Einmal können wir die Matrix relaxieren, oder das Feld. In [22] (auf meiner Seite) sind die unterschiede der Relaxation erklärt. Bei der Enthalpieerhaltung verwenden wir die Matrixrelaxation. Leider hab ich die gerade nicht im Kopf aber die Werte werden dann eben geändert bzw. abgeschwächt. Das ist eben der SIMPLE Algorithmus. Ich bin mir gerade auch unschlüssig ob die Zeitableitung in den SIMPLE Solvern drin ist. In 2.x.x waren die mal noch draußen, Grund hierfür ist, dass bei steady-state, die zeitliche Änderung Null ist (ist ja auch logisch). Das kann man ausnutzen und einen schnelleren Löser bauen, der mittels geeigneter Lösungsverfahren auf die stationäre Lösung zu finden. fvOptions geht hier definitiv auch aber die Evaluierung der Werte scheint mir nicht so offensichtlich wie die bei einem transienten. Beispiel: Du hast ein Source von 5 kg/s, nachdem du 1s integriert hast, hast du genau 5kg im System. Bei der stationären Rechnung weiß ich nicht genau wie das ist. Prinzipiell müsste nach 1 Iteration (respektive 1s) auch 5kg im System sein aber da man hier Relaxieren muss, fällt das hier wahrscheinlich kleiner aus und wenn man die Matrix unterrelaxiert, dann kann sich das Ergebnis noch weiter verändern. Aber wie gesagt, da bin ich nicht ganz so fit (mit den fvOption Sache). Ich würde mir ein Cavity case bauen, bei dem man eine Source von 1K/s haben möchte (oder eine Wärmequelle wie du se definiert hast) und dann eine Sekunde lösen. So wie oben in meinem Case. Dann kann man recht einfach eine Aussage treffen wie das funktioniert. So wäre zumindest mein Vorgehen. Vielleicht gibt es auch bessere aber mir fällt leider nichts besseres ein. Zu 3tens. Korrekt, aber der Weg zur stationären Lösung muss nicht dem eines transienten Lösers folgen. Heißt also, wenn du ein Problem transient löst, es eine stationäre Lösung gibt, kann man das solange lösen bis die stationäre Lösung erzielt wurde aber wenn man das mit dem steady-state Löser berechnet, dann muss der Weg dahin nicht der gleiche sein. Das Endergebnis sollte aber gleich sein.
Zu 4tens. Ich hab mir das in den Sources angeschaut (weil ich auch noch nie mit dem coded stuff gearbeitet hab) und dort hab ich eben gesehen, dass die Source mit dem Zellvolumen multipliziert wird. Das Beste wäre, Stift und Papier und die Gleichung herleiten. Dann weißt du welche Einheiten der Sourceterm hat. Dann integrieren und man hat die Einheit die man benötigt ------------------ Viele Grüße, Tobias Holzmann OpenFOAM Tutorials | Publikationen | Für Anfänger wiki.openfoam.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 29. Mrz. 2017 20:19 <-- editieren / zitieren --> Unities abgeben:
Hallo Tobi, Vielen Dank für deine Antwort. Ich gehe sie morgen in Ruhe durch. Weiß nicht mehr wo mir der Kopf steht mit dem OpenFoam. Ich weiß die frage ist sehr dämlich, aber soll die Integration mit finite volumen für einen 2D Fall erfolgen? Schönen abend noch , Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 29. Mrz. 2017 21:36 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisBa
|
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 29. Mrz. 2017 21:52 <-- editieren / zitieren --> Unities abgeben:
Sorry, da habe ich mich undeutlich ausgedrückt. Ich meinte die Herleitung mit Stift und Papier. Ist es für die Integration per Hand ausreichend, wenn man eine finite volumen Methode für 2D macht? Ich werde es mit Feric versuchen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 29. Mrz. 2017 22:31 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisBa
|
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 30. Mrz. 2017 08:18 <-- editieren / zitieren --> Unities abgeben:
|
Shor-ty Moderator
Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 30. Mrz. 2017 10:25 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisBa
Also der Quellterm kommt von der Enthalpiegleichung. Entsprechend nach dem Umformen auf die Temperaturgleichung, bleibt der Term q_v gleich (q_v hat die Einheit der Änderungsrate pro Volumeneinheit). Allerdings hast du ein Inkompressiblen Löser, heißt, die Dichte ist konstant und wir teilen die gesamte Gleichung durch Rho. Entsprechend bekommt der Sourceterm: a) int q_v / rho dV Sollte die Wärmekapazität auch konstant sein, dann wird die ganze Gleichung nochmals mit cp geteilt und der Sourceterm bekommt: b) int q_v / (rho cp) dV Heißt also, q_v hat die Einheit [wasAuchImmer/(s m^3)], diesen Teilt man durch die Dichte und die Wärmekapazität (sofern beide als Konstant angenommen werden) und das wars. Bei der CodedSource scheint es mir so, da wir direkt den Sourcevektor b manipulieren, dass wir den ganzen Ausdruck b) verwenden müssen, heißt also wir integrieren noch, und entsprechend muss man q_v mit dem Zellvolumen multiplizieren. Das wäre jetzt mein erster Ansatz mit einem Zeitaufwand von 10 Minuten. Ob das passt muss man natürlich nachprüfen und das wäre am einfachsten wenn man hierbei den laplacianFoam verwendet (keine Konvektion). Natürlich muss hier dann noch der Solver modifiziert werden damit die fvOptions auch in der Gleichung sind. Übrigens wird hier auch der SIMPLE verwendet, hat hier aber keinen Einfluss. Man rechnet hier auch transient. Man muss eben klar unterscheiden zwischen Druck-Korrektur-Gleichungen. Ich war oben nicht ganz sauber, da SIMPLE natürlich nur die Druck-Korrektur Kopplung beeinflusst und daher oft eine Unterrelaxation benötigt wird. ------------------ Viele Grüße, Tobias Holzmann OpenFOAM Tutorials | Publikationen | Für Anfänger wiki.openfoam.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 30. Mrz. 2017 10:40 <-- editieren / zitieren --> Unities abgeben:
Morgen Tobias, Wie hast du das von der codedSource herausgefunden? Ich meine vom Code aus? Ich finde es auf Doxygen nicht. Ich habe noch eine Frage. Ich versuche jeder Zelle eine feste Leistung vorzugeben, die über der Zeit/Integrationsschritte gleich bleibt. Also q[celli]=const. Wenn ich das so mache, muss ich dann meine Quelle in einen Expliziten und Impliziten Teil aufteilen? Würde dann nicht meine konstante Quelle als alleiniger expliziter Teil ausfallen? Ich weiß nicht ob sowas wichtig ist? MfG Christian MfG Christian [Diese Nachricht wurde von ChrisBa am 30. Mrz. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 30. Mrz. 2017 16:35 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisBa
Hi, Doxygen Das mit dem expliziten Teil und impliziten versteh ich nicht. Ich würde sagen, dass die Source hier immer Explizit ist. Ansonsten müsste man nämlich deine Source mittels fvm::SuSp definieren, damit die zur Matrix (Hauptdiagonale) gebracht wird und nicht in den Sourcen landet. Anderenfalls wäre es vllt möglich, sollte es eine implizite Source sein, direkt die Diagonale zu manipulieren. Doxygen fvMatrix Aber bitte frage mich da jetzt nicht. Ich hab das letztes Jahr mit Matlab mal versucht, habs aber nicht fertig gemacht. Die Sourcen sind Volumenbezogene Größen, also stehen se in der Diagonalen. Sofern ich richtig informiert bin, kommts dann auf das Vorzeichen draufan (wollen ja eine Diagonaldominante Matrix bauen). Aber in dieser Tiefe beweg ich mich bislang auch nur selten. In [22] gibts reichlich Informationen bezüglich all deinen Fragen. ------------------ Viele Grüße, Tobias Holzmann OpenFOAM Tutorials | Publikationen | Für Anfänger wiki.openfoam.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 30. Mrz. 2017 17:04 <-- editieren / zitieren --> Unities abgeben:
Hy Tobias, Ich werde mir alles morgen in Ruhe durchlesen. Ich habe die Quelle hergeleitet und bin auf das gleiche Ergebnis wie du gekommen. Ich muss meine spezifische Leistung noch mit dem zellvolumen multiplizieren. Wie ich es am besten in fvOptions umsetzte muss ich morgen nochmal anschauen. Auch werde ich mir anschauen, wie die Relaxation richtig bestimme. Ich bleibe bei Simple, da ich mich in den eingearbeitet habe und mir Pimple sehr hohe Werte bei gleichen fvOptions liefert. Das ist mir noch unschlüssig. Auf das explizit implizite bin ich gekommen, da Openfoam bei dem fvOption meltingSource, dies verwendet hat um die Quelle zu beschreiben. Ich denke aber, dass ich Su und Sp verwechselt habe. Su: implizit Sp: explizit So meine Gedanken zu dem. Ich sehe schon, da muss ich noch tiefer einsteigen... Also irgendwie. Ich schaue mir auch die [22] an. Ich halte dich auf den laufenden, wenn du interessiert bist. Mfg Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 31. Mrz. 2017 11:03 <-- editieren / zitieren --> Unities abgeben:
|
ChrisBa Mitglied
Beiträge: 34 Registriert: 20.12.2016
|
erstellt am: 25. Apr. 2017 11:39 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, ich habe es geschafft die Quelle zu definieren und auch die Strahlung einzubauen. Hat leider sehr lange gedauert. Ich arbeite mit buoyantBoussinesqPimple, da die Werte hier Sinn ergeben. Ich habe mir aber bis jetzt nur immer den ersten Zeitschritt angeschaut und die Konvektion immer ausgeschaltet. Ich habe alles zusammengebaut und versucht es zu simulieren, aber der Solver divergiert sehr schnell. Ich habe mir das Buch "MATHEMATICS, NUMERICS, DERIVATIONS AND OPENFOAM" durchgelesen. Es erklärt den Solver sehr gut und verständlich. Meine Frage ist jetzt: Hat jemand Zeit mir zu helfen, damit ich den Solver stabiler bekomme? Mfg Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 05. Jul. 2017 13:17 <-- editieren / zitieren --> Unities abgeben: Nur für ChrisBa
|