| |
 | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
|
Autor
|
Thema: Große Geometrie stückweise simulieren (2183 mal gelesen)
|
matzkowitzal45443 Mitglied Student

 Beiträge: 10 Registriert: 10.12.2014
|
erstellt am: 10. Dez. 2014 12:12 <-- editieren / zitieren --> Unities abgeben:         
Hallo Foamer! Ich schreibe derzeit meine Bachelorarbeit über die numerische Strömungsberechnung einer Wasserlandschaft für ein Science-Center. Die Gesamtmaße sind sehr groß, jedoch muss an manchen Stellen sehr fein vernetzt werden, wodurch ich das Objekt nicht auf einmal vernetzen und Simulieren kann. Mein Gedanke war deshalb, die Geometrie in verschiedene Teilstücke aufzuteilen und diese nacheinander zu simulieren (Bilder im Anhang) Jedoch habe ich jetzt folgendes Problem: Wie kann ich die berechneten Werte für den nächsten Abschnitt verwenden? MapFields von outlet auf inlet hat bei mir nicht funktioniert, zu der directMapped BC finde ich auch nicht ausreichend Information um dies durchzuführen. Wäre super wenn ihr nen Tip für mich hättet! Grüße Alex ------------------ Alex 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: 10. Dez. 2014 12:48 <-- editieren / zitieren --> Unities abgeben:          Nur für matzkowitzal45443
Grüße dich Alex, schöne Geometrie. Code:
directMappedBC
ist für das Mappen direkt in der Simulation. Also quasi Outlet auf Inlet mappen oder wenn man diverse Lücken hat kann man diese verwenden. Beispiel wäre ein Rohr das in der Mitte einfach nicht modelliert wurde. Outlet Rohrstück1 wird dann auf das Inlet Rohrstück2 gemapped. Ob das sinnvoll ist, ist natürlich dahingestellt. Normalerweise sollte es mit mappedFields und Patches schon funktionieren, sodass du dein outlet auf das inlet mappst. Dafür müssen aber die geometrischen Abmessungen passen, bzw. die Positionen der Faces (soweit ich mich entsinnen kann). Ist die Geometrie frei zugänglich? Würde das gerne auch simulieren  ------------------ Best regards, Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bacengeugn Mitglied Konstrukteur
 
 Beiträge: 181 Registriert: 10.11.2011
|
erstellt am: 10. Dez. 2014 12:55 <-- editieren / zitieren --> Unities abgeben:          Nur für matzkowitzal45443
Die Abschnitte wirken gegenseitig aufeinander. Das in Teilabschnitte zu unterteilen und seperat zu betrachten wird meiner Meinung nur schlüssige Ergebnisse liefern wenn du Abschnitte hast, die sich Näherungsweise so darstellen lassen, als seien sie nur in eine Richtung gekoppelt. Ich meine du löst ja ein Gleichungssystem und solange du keine entsprechenden Annahmen triffst kannst du nicht einfach Gleichungen des Systems getrennt voneinander betrachten. Aber vielleicht kannst du ja eine Symmetrie ausnutzen 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: 10. Dez. 2014 13:05 <-- editieren / zitieren --> Unities abgeben:          Nur für matzkowitzal45443
Zitat: Original erstellt von bacengeugn: Die Abschnitte wirken gegenseitig aufeinander. Das in Teilabschnitte zu unterteilen und seperat zu betrachten wird meiner Meinung nur schlüssige Ergebnisse liefern wenn du Abschnitte hast, die sich Näherungsweise so darstellen lassen, als seien sie nur in eine Richtung gekoppelt.
Stimm ich dir allgemein zu aber nicht im vorliegenden Fall. Durch die Wehre wird das eigentlich entkoppelt und eine Rückwirkung auf das vorherige System wird nicht gegeben (parabolisches Problem). Ich würd vllt die Einteilung dann etwas anderes machen und zwar würde ich folgendes vorschlagen:
- Das zuvor simulierte System muss das andere immer überlappen heißt:
- System 1 sollte immer ein Stück nach dem Wehr beinhalten
- System 2 sollte direkt am Wehr beginnen und dann dort die Eigenschaften von System 1 übernehmen
Zitat:
Symmetrieeigenschaften ausnutzen
Ich sehe leider keine Symmetrie (; ------------------ Best regards, Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mitomilla Mitglied Ingenieur

 Beiträge: 10 Registriert: 12.06.2014 OF 2.2.x
|
erstellt am: 10. Dez. 2014 14:02 <-- editieren / zitieren --> Unities abgeben:          Nur für matzkowitzal45443
In der Vorgehensweise stimme ich Tobias zu. Ich selbest erstelle mir für derartige Probleme oft kleine Beispiele um den Workflow schnell testen zu können. In deinem Fall könnte dies z.B. ein einfacher Rechteckkanal sein. ------------------ Grüße Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
matzkowitzal45443 Mitglied Student

 Beiträge: 10 Registriert: 10.12.2014
|
erstellt am: 10. Dez. 2014 14:36 <-- editieren / zitieren --> Unities abgeben:         
Hallo Leute, erst mal vielen vielen Dank für eure Antworten! Auf CFD-Online kam nach allen Versuchen immer noch nichts.. Und die Recherche zu dem Thema fiel auch ziemlich unerfreulich aus... @bacengeugn: Das mit der Wechselwirkung ist mir bewusst, aber ich glaube es lässt sich vor allem kurz nach dem oberen Wehr auf ein Minimum reduzieren, da hier das Wasser nur nach unten fließt. Ich bin mir deshalb so sicher, weil ich das Modell vorher in der Realität untersucht habe und nun versuche die Strömung möglichst nachzubilden. Mit Symmetrie schaut es leider auch schlecht aus, da die Elemente im Kanal sogar in Längsrichtung nicht Spiegelsymmetrisch angeordnet sind.. Trotzdem vielen Dank für den Tip ;-) @Shor-ty: Die Geometrie kann ich dir leider nicht überlassen, da ich das für eine Firma mache und das Modell so wirklich gebaut und verkauft wird.. sorry! Aber du kennst das bestimmt mit der ganzen Geheimhalterei... Auch an dich erst mal ein riesen Dankeschön! Code: [/CODE] Nach vielen Versuchen bin ich dabei gelandet, dass ich das komplette CAD-Modell als STL-Datei bereitstelle und mir dann mein blockMeshes so konstruiere wie ich sie brauche. Dadurch kann ich wenigstens die patches genau an die selbe Stelle bringen. Das mit dem überlappen klingt gut, aber meine Frage: Wenn sich die Teilstücke überlappen, liegen ja outlet und inlet nicht mehr an der gleichen Stelle, wie funktioniert das dann? Bei mir allerdings auch nicht sicher ob und was ich für cuttingPatches eintragen soll. Die mapFieldsDict siehst du unten[CODE] /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.1.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; object mapFieldsDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // List of pairs of source/target patches for mapping patchMap ( inlet outlet ); // List of target patches cutting the source domain (these need to be // handled specially e.g. interpolated from internal values) cuttingPatches ( ); // ************************************************************************* //
@mitomilla: Das mit dem Workflow hab ich auch schon probiert, sowohl mit verschiedenen Netzen und auch verschiedenen solvern (interFoam/ STLinterFoam im stabilen Zustand) läuft mit den richtigen alles wunderbar stabil und ruhig. Jedoch hab ich bereits im ersten Abschnitt über 3 Mio Zellen um die feinen Bohrungen und die freie Oberfläche einigermaßen hochwertig darzustellen ;-)
DirectMapping wäre natürlich auch interessant um zum Beispiel eine Animation der gesamten Anlage zu erzeugen Aber ich bin richtig froh wenn das alles irgendwie läuft und vernünftig Ergebnisse liefert. Daher noch mal nen richtig großen Dank an euch! Werde das ganze jetzt noch mal laufen lassen und euch dann natürlich Bescheid geben ;-) Grüße Alex
------------------ Alex 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: 10. Dez. 2014 14:47 <-- editieren / zitieren --> Unities abgeben:          Nur für matzkowitzal45443
Du übergibst einfach die Werte des internalFields auf den Patch (: Normalerweise sollte es - sollten sich die Netze überlappen, ohne zutun funktionieren. In cfd-online.com kommts immer drauf an wo man hinposted (: Ich bin da auch sehr aktiv aber da ich hier Moderator bin, erhalte ich immer eine E-Mail sobald was passiert. Auf cfd-online kann es sein das ich nur alle 2 - 3 Tage draufschau und dann sind wieder so viele Themen gestartet worden das man auch nicht immer die Muse findet zu antworten. Gutes gelingen. PS: Mit der Geheimhaltung etc. ist das natürlich verständlich und ich kenn das (leider). PPS: Verwende den LTS anstelle vom interFoam (als Tipp), sofern du nur nen Stationären oder Quasistationären Zustand möchtest. LTS steht für Local Time Stepping. ------------------ Best regards, Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
matzkowitzal45443 Mitglied Student

 Beiträge: 10 Registriert: 10.12.2014
|
erstellt am: 22. Dez. 2014 14:05 <-- editieren / zitieren --> Unities abgeben:         
Hallo Tobias, konnte leider erst jetzt wieder an meinem Projekt weiterarbeiten, aber so toll klappt das alles immer noch nicht... Die Blöcke überlappen sich, die Patches sind eingetragen, cuttingPatches ist leer. 1) Beim Feld p erzeugt mir das Programm Nan-Einträge, also keine skalare Belegung einzelner Felder. Hab das gegooglet und es ist scheinbar ein bekannter Bug, also wurde das Feld p einfach gelöscht und wird nicht übertragen. 2) MapFields läuft an, bringt dann aber folgende Fehlermeldung: Code: AMI: Creating addressing and weights between 1660 source faces and 7296 target faces --> FOAM Warning : From function AMIMethod<SourcePatch, TargetPatch>::checkPatches() in file lnInclude/AMIMethod.C at line 57 Source and target patch bounding boxes are not similar source box span : (0 0.2701 0.87) target box span : (0 0.255 0.87) source box : (-1.94 -0.1151 -0.42) (-1.94 0.155 0.45) target box : (-1.7 -0.1 -0.42) (-1.7 0.155 0.45) inflated target box : (-1.745 -0.1453 -0.4653) (-1.655 0.2003 0.4953) --> FOAM FATAL ERROR: Unable to find initial target face
From function void Foam::AMIMethod<SourcePatch, TargetPatch>::initialise(label&, label&) in file lnInclude/AMIMethod.C at line 139. FOAM aborting
Kann vom Prinzip her nicht sein, mein Inlet hat nicht mehr Faces als mein Outlet... Ich hoffe es hat noch jemand einen Tip parat.. Danke! Grüße Alex ------------------ Alex Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
matzkowitzal45443 Mitglied Student

 Beiträge: 10 Registriert: 10.12.2014
|
erstellt am: 22. Dez. 2014 14:07 <-- editieren / zitieren --> Unities abgeben:         
Hier der Rest vom Code bevor der Abbruch erfolgt: Code: Creating mesh-to-mesh addressing for region0 and region0 regions using cellVolumeWeight Overlap volume: 0.05073 Creating AMI between source patch outlet and target patch inlet using faceAreaWeightAMI
------------------ Alex 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: 22. Dez. 2014 19:46 <-- editieren / zitieren --> Unities abgeben:          Nur für matzkowitzal45443
|
matzkowitzal45443 Mitglied Student

 Beiträge: 10 Registriert: 10.12.2014
|
erstellt am: 23. Dez. 2014 10:05 <-- editieren / zitieren --> Unities abgeben:         
Hi Tobias, danke für deine erneut schnelle Antwort! Hier die mapFieldsDict: Code: /*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.1.x | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; object mapFieldsDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // List of pairs of source/target patches for mapping patchMap ( inlet outlet ); // List of target patches cutting the source domain (these need to be // handled specially e.g. interpolated from internal values) cuttingPatches ( ); // ************************************************************************* //
Hab bereits auch noch mit anderen patches in der patchMap experimentiert. Zum Beispiel Schleuse (so heißt mein Geometriepatch Fällen) und auch atmosphere auf atmosphere, kam aber immer zum Abbruch.. Wenn du mir erklären könntest wie das MapFields genau funktionert, wär super, auf der OpfenFOAM-Seite ist das auch nur relativ knapp für zwei aufeinanderliegende Flächen beschrieben.. also welche patches ich alle mit einbeziehen muss usw. So wie sich die Fehlermeldung liest, erkennt er ja die patches inlet und outlet und auch das overlap-volume dazwischen. Grüße Alex ------------------ Alex Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
matzkowitzal45443 Mitglied Student

 Beiträge: 10 Registriert: 10.12.2014
|
erstellt am: 23. Dez. 2014 11:10 <-- editieren / zitieren --> Unities abgeben:         
Ergänzung: Hab jetzt nochmal zwei einfach Rechteckkanäle konstruiert um den Workflow und die Funktionalität zu testen: Es funktioniert mit dem eben geposteten mapFieldsDict nur, wenn outlet des 1. und inlet des 2. Teilstücks genau aufeinander liegen. jedoch kommen auch dann eine Vielzahl an Fehlermeldungen: Code: --> FOAM Warning : From function void Foam::faceAreaWeightAMI<SourcePatch, TargetPatch>::interArea(const label, const label) const in file lnInclude/faceAreaWeightAMI.C at line 359 Invalid normal for source face 477 points 4
Sieht so aus als ob er das für jedes Face der patches sagt.. beim betrachten der Ergebnisse sind zwar die Felder vorhanden aber die Werte stimmen nicht überein.. Glaube aber langsam bei mir liegts allgemein am Verständnis von mapFields... Grüße Alex ------------------ Alex Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
matzkowitzal45443 Mitglied Student

 Beiträge: 10 Registriert: 10.12.2014
|
erstellt am: 09. Jan. 2015 13:39 <-- editieren / zitieren --> Unities abgeben:         
Hallo Leute, habe mich nochmal schlau gemacht: das mappen läuft soweit, zumindest was die Abbildung von outlet auf inlet betrifft, allerdings erhalte ich dann eine Reihe von Fehlermeldung für "invalid normals" verschiedener Zellen. Für die von mir benutzte OF-Version 2.3.0 scheint das Problem mit MapFields bereits bekannt zu sein und es wird zu der Version 2.2.2 geraten. Falls es im Zuge meiner BA noch schaffe mit dieser Version zu mappen werde ich euch natürlich nochmal ein Feedback geben ;-) Beste Wünsche fürs noch für's neue Jahr! Grüße Alex ------------------ Alex Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
matzkowitzal45443 Mitglied Student

 Beiträge: 10 Registriert: 10.12.2014
|
erstellt am: 24. Mrz. 2015 13:03 <-- editieren / zitieren --> Unities abgeben:         
Hello again, wie versprochen hier die Rückmeldung und Lösung zu meinem Problem: Der Verdacht hat sich bestätigt, mapFields macht mit der OF-Version 2.3.0 ziemliche Probleme. Habe dann die Version 2.2.0 installiert und es hat funktioniert, wie ihr an den Bildern erkennen könnt! Nochmals vielen Dank für die Hilfe, meine Bachelorarbeit war auch dadurch erfolgreich! Grüße Alex ------------------ Alex 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: 26. Mrz. 2015 09:32 <-- editieren / zitieren --> Unities abgeben:          Nur für matzkowitzal45443
Hallo Alex, Gratulation zur erfolgreichen Arbeit. Sieht gut aus, wobei ich das mit FOAM-2.3.1 nicht bestätigen kann. Das Mappen funktioniert bei mir einwandfrei. Einzige Frage die ich habe:
Einfach nur zwecks Darstellung oder gibts nen Grund, da alpha definiert is zwischen 0 und 1. ------------------ Best regards, Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
matzkowitzal45443 Mitglied Student

 Beiträge: 10 Registriert: 10.12.2014
|
erstellt am: 26. Mrz. 2015 17:39 <-- editieren / zitieren --> Unities abgeben:         
Hallo shorty, erstmal vielen Dank! Meine Erfahrungen haben gezeigt, dass das mapFields-Tool in der OF-Version 2.3.0 nur funktioniert, wenn die Geometrie größtenteils gleich bleibt (von Problemen bei der Übertragung der skalaren Druckgrößen (Entstehen von "nan"-Werten) ganz zu schweigen). Das ist aber bei mir leider nicht der Fall gewesen. Ich hab viel recherchiert, leider keine ähnlichen Projekte gefunden und bin dann unter Anderem in dem Forum der Seite cfd-online.com auf die beschriebenen Bugs dieser Version gestoßen (welche auch auf der offiziellen OpenFOAM-Homepage vermerkt waren). Ich habe dann den Rat befolgt, eine ältere OF-Version zu installieren und die gleichen Operationen durchzuführen --> mit Erfolg. Leider hatte ich keine Zeit mehr mich mit den Hintergründen zu beschäftigen und zu erörtern, was da genau falsch gelaufen ist. Wäre vielleicht ne schöne Masterarbeit, die ganzen Programmcodes weiterzuentwickeln Als Anmerkung kann ich noch sagen, dass es sich effektiv kaum gelohnt hat sich speziell in meinem Problemfall so intensiv mit mapFields zu beschäftigen. Ein variableHeightFlowRate-Inlet mit den gemittelten Eingangsbedingungen und calculated Randbedingungen tut's genauso ;-). Wenn man allerdings feststellt, die Simulation führt nicht zum gewünschten Ergebnis, kann man etwas an der Geometrie und der Vernetzung ändern und darauf dann den letzten Zeitpunkt "mappen" an dem alles O.K. ist. Für so eine Anwendung ist das Tool also echt zu empfehlen! Beste Grüße ------------------ Alex Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
matzkowitzal45443 Mitglied Student

 Beiträge: 10 Registriert: 10.12.2014
|
erstellt am: 26. Mrz. 2015 17:43 <-- editieren / zitieren --> Unities abgeben:         
Sorry shorty, vor lauter mapFields habe ich deine Frage ganz vergessen... alpha.water (=alpha) ist natürlich auch bei mir von 0 bis 1 definiert. Das -1 bis 1 kommt nur von der Skala, die habe ich zur schnellen Darstellung nicht mehr geändert bzw. hätte sie ja gar nicht gebraucht. An sich spielt das aber ja auch keine große Rolle, da das Bild im contour-Modus erzeugt wurde. Ich glaube dabei habe ich einen Schwellenwert von ca. 0.65 verwendet. Grüße ------------------ Alex Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |