Hot News aus dem CAD.de-Newsletter:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  OpenFOAM
  Rotationinduzierte Strömung

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:   Rotationinduzierte Strömung (143 mal gelesen)
Bando00
Mitglied
Student

Sehen Sie sich das Profil von Bando00 an!   Senden Sie eine Private Message an Bando00  Schreiben Sie einen Gästebucheintrag für Bando00

Beiträge: 4
Registriert: 08.11.2018

OF v6.0

erstellt am: 08. Nov. 2018 18:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,

ich hoffe, dass ihr mir helfen könnt.

Ich würde gerne eine Rotation einer beliebigen Geometrie, z.B. einer zylindrischen Scheibe mit einer beliebigen Dicke, z.B. von 5mm realisieren wollen.
Axial zur Scheibe versetzt soll sich eine Wand befinden, um den Einfluss der Rotationsgeschwindigkeit der Scheibe und der Entfernung zur Wand bestimmen zu können.
Wie z.B. die Geschewindigkeits-, Druck- und die Schubspannungsverteilung an der Geometrie sowie der Wand/wall.

Zwischen der Geometrie und der Wand soll sich ein inkompressibles newtonsches Fluid mit einer beliebigen Viskosität befinden. Die Strömung kann als laminar angenommen werden.

Ich habe mich mit einigen Tutorials beschäftigt, um eine Lösung für dieses Problem zu finden, bis jetzt jedoch ohne Erfolg.
Meine Überlegungen waren folgende: Entweder

- die Scheibe/ der Rotor steht still und das Fluid/Geschwindigkeitsfeld erfährt eine Drehung (a) oder
- die Scheibe/ der Rotor rotiert und das Fluid "ruht" (b)

a) SRFPimpleFoam: https://github.com/OpenFOAM/OpenFOAM-6/tree/master/tutorials/incompressible/SRFPimpleFoam/rotor2D

In diesem Tutorial befindet sich ein fest definierter 2D-Rotor mittig in einer schmalen zylindrischen Scheibe. Dieser wird anschließend radial mit einem relativen Geschwindigkeitsfeld Urel beaufschlagt, indem durch das SRFProperties-Skript eine Rotation in [rpm] realisiert wird.
Hier kommt ein sogenannter freestreamPatch für die Mantelfläche der zylindrischen Scheibe zum Einsatz, welcher unterschiedlich auf eine Inlet- sowie Outletströmung reagiert / sich verhält. 

b) interPhaseChangeDyMFoam: https://github.com/OpenFOAM/OpenFOAM-6/tree/master/tutorials/multiphase/interPhaseChangeDyMFoam/propeller

In diesem Tutorial wird mit dem dynamicMesh-Skript durch die AMI-Definition eine Master-Slave Beziehung für einen patch definiert, welcher die rotierende 3D-Geometrie einschließt. Somit wird zusätzlich zu einer Inletströmung eine Propellerroation in der Strömung gewährleistet.
Hier wird der Propeller sowie die einzelnen zylinderischen Rechenräume zur Ausbreitung der Strömung als ein .obj file eingelesen und mit Skripten wie
.topoSetDict und createPatchDict die notwendigen Patches definiert. Leider verstehe ich den Ablauf im Skript nicht wirklich. 

Zusätzlich bin ich auf eine boundary condition für eine wall gestoßen, welche jene wall rotieren lassen kann: rotatingWallVelocity.

Nun zu meinen Fragen:

(1) Hat jemand Erfahrungswerte zu den verschiedenen Ansätzen? Hat jemand zufällig sich mit einem ähnlichen Fall beschäftigt?
(2) Habe ich irgendwo einen Denkfehler drin?
(3) Ansatz über rotatingWallVelocity: Kann in Kombination mit einem transienten Solver für laminare Strömungen wie z.B. icoFoam (icoDyMFoam wurde meine ich zu icoFoam zusammengefasst) eine Rotation realisieren?

Die SuFu hat ergeben, dass sich bereits jemand mit einer strömungsinduzierten Rotation beschäftigt hat, welches genau das Gegenteil meines Ansatzes ist, aber leider der Beitrag zum stillstand kam.


Ich wäre für Ratschläge und Hinweise in der Form dankbar, dass ich bei erfolgreichem Aufsetzen der Simulation mein Skript/job-file zur Verfügung stellen würde.

Ich danke allen im voraus.

Mit Besten Grüßen,
Bando 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Shor-ty
Moderator





Sehen Sie sich das Profil von Shor-ty an!   Senden Sie eine Private Message an Shor-ty  Schreiben Sie einen Gästebucheintrag für Shor-ty

Beiträge: 2172
Registriert: 27.08.2010

OpenFOAM-dev (Foundation)

erstellt am: 08. Nov. 2018 19:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Bando00 10 Unities + Antwort hilfreich

Hi Bando,

willkommen und Hut ab für eine ausführliche Fragestellung. Damit sind alle Fragen erstmal geklärt. Daher direkt meine Antwort:


  • Ich habe so etwas bereits durchgeführt
  • Zu deinen Ansätzen: a) SRF oder MRF hab ich nicht verwendet, b) rotatingWallVelocity habe ich verwendet, c) und selbstverständlich auch AMI (wobei das in deinem Fall fast schon zu viel ist.
  • Adhoc, ohne weitere Details zu kennen würde ich zu b) tendieren

Einen Multiphasen-Löser brauchst du nicht. Du schreibst ja selbst, dass du eine laminare, inkompressible und damit (ich gehe davon aus) einphasiges Fluid hast, welches sich zwischen Scheibe und Wand befindet. Übrigens, dass erinnert mich ein bisschen an die Versuche zur Viskositätsbestimmung von Newtonschen Fluiden.

rotatingWallVelocity kann sowohl für stationäre als auch für transiente Betrachtungen verwendet werden.

Gutes Gelingen,
Tobi

------------------
Viele Grüße,
Tobi

OpenFOAM® Tutorials | Training | Publikationen | Für Anfänger wiki.openfoam.com

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Bando00
Mitglied
Student

Sehen Sie sich das Profil von Bando00 an!   Senden Sie eine Private Message an Bando00  Schreiben Sie einen Gästebucheintrag für Bando00

Beiträge: 4
Registriert: 08.11.2018

OF v6.0

erstellt am: 08. Nov. 2018 22:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Tobi,

ich danke dir für deine schnelle Antwort.

Genau, den Multiphasen-Solver habe ich nur als ein Beispiel aufgeführt, weil dort die zyklische AMI-Methode zum Einsatz kommt.
Ich möchte tatsächlich mit dieser Simulation ein bereits bekanntes einphasiges newtonsches Fluid mit gegebener Viskosität unter möglichst genauen Randbedingungen nachsimulieren.

Ich würde nun versuchen zunächst eine stationäre Simulation (vermutlich mit dem simpleFoam-solver mit ausgeschalteter Turbulenzmodellierung) aufsetzen und abschließend eine instationäre (mit dem icoFoam-Solver) für einen potentiellen Vergleich durchführen.

Ich hoffe, dass ich bis zum Sonntag eine stationäre Lösung parat habe, welche ich hier präsentieren kann. Und wenn nicht, werde ich mein Problem hier ausführlich wieder servieren. 

Danke und bis dahin,
Bando


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Shor-ty
Moderator





Sehen Sie sich das Profil von Shor-ty an!   Senden Sie eine Private Message an Shor-ty  Schreiben Sie einen Gästebucheintrag für Shor-ty

Beiträge: 2172
Registriert: 27.08.2010

OpenFOAM-dev (Foundation)

erstellt am: 09. Nov. 2018 07:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Bando00 10 Unities + Antwort hilfreich

Guten Morgen,

AMI kann jeder instationäre Solver. Da du die Foundation Version verwendest, ist im Allgemeinen das Netz bewegbar und daher so überall implementiert. Ergo. pimpleFoam kann moving meshes auch. icoFoam kannst du gern verwenden, würde aber auf den pimpleFoam wechseln, zwecks PIMPLE Algorithmus. Aber das kannst du machen wie du willst.

------------------
Viele Grüße,
Tobi

OpenFOAM® Tutorials | Training | Publikationen | Für Anfänger wiki.openfoam.com

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Bando00
Mitglied
Student

Sehen Sie sich das Profil von Bando00 an!   Senden Sie eine Private Message an Bando00  Schreiben Sie einen Gästebucheintrag für Bando00

Beiträge: 4
Registriert: 08.11.2018

OF v6.0

erstellt am: 11. Nov. 2018 17:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Abend zusammen, abend Tobi,

ich habe nun versucht eine stationäre Lösung mit dem simpleFoam solver aus dem motorbike-Tutorial zu generieren, bis jetzt leider ohne Erfolg.

Die Geometrie wird dabei im .stl-Format eingelesen. surfaceFeatures, blockMesh für das Fluid und anschließender sHM läuft durch.
Im log.simpleFoam bekomme ich einen Fehler, welchen ich nicht ganz verstehe und mir die Suche im Internet keine Lösung eingebracht hat.

Code:
Create time

Create mesh for time = 0


SIMPLE: No convergence criteria found

Reading field p

Reading field U

Reading/calculating face flux field phi

[0] [1] [2] [3] [4]
[1]
[1] --> FOAM FATAL IO ERROR:
[1] Unable to set reference cell for field p
    Please supply either pRefCell or pRefPoint
[1]
[1]

[1] file:
IOstream.SIMPLE[3]  from line
0[2]
to line [3] 0--> FOAM FATAL IO ERROR: [4]
.
[2]
[3] --> FOAM FATAL IO ERROR: [1] Unable to set reference cell for field p
    Please supply either pRefCell or pRefPoint

[4] [1] [3] [2]    From function --> FOAM FATAL IO ERROR: Unable to set reference cell for field p
    Please supply either pRefCell or pRefPoint

bool Foam::setRefCell(const volScalarField&, const volScalarField&, const Foam::Dictionary&, Foam::label&, Foam::scalar&, bool)
[3] [2]

[4]
[1] [3] [2] Unable to set reference cell for field p
    Please supply either pRefCell or pRefPoint
    in file file:
cfdTools/general/findRefCell/findRefCell.C[4] [2] IOstream.SIMPLE at line file:
from line 105[4] IOstream.SIMPLE0
. from line [4]
to line 0[1] file: 0 to line
FOAM parallel run exiting
IOstream.SIMPLE.[1] 0 from line

.[3] 0

to line [3] [2]    From function
0[2] bool Foam::setRefCell(const volScalarField&, const volScalarField&, const Foam::Dictionary&, Foam::label&, Foam::scalar&, bool).    From function

bool Foam::setRefCell(const volScalarField&, const volScalarField&, const Foam::Dictionary&, Foam::label&, Foam::scalar&, bool)[3] [4]
    in file

[2] cfdTools/general/findRefCell/findRefCell.C[4]    in file  at line    From function cfdTools/general/findRefCell/findRefCell.Cbool Foam::setRefCell(const volScalarField&, const volScalarField&, const Foam::Dictionary&, Foam::label&, Foam::scalar&, bool)105 at line .
105
[4] [3] .    in file [0]
FOAM parallel run exiting

cfdTools/general/findRefCell/findRefCell.C[2] [3]  at line

FOAM parallel run exiting


Ich habe auch versucht meine fvSolution um die angeblich fehlenden Einträge von RefCell und RefPoint zu ergänzen.
Wobei ich langsam bezweifle, dass es daran liegt.

--> Es wird zumindest ein Geschwindigkeitsfeld auf der Geometrie berechnet, welches auf dem ersten Blick plausibel aussieht.

Irgendwo ist der Wurm drin und ich finde diesen nicht. Könnte sich jemand Bitte mal mein Beispiel anschauen? Vielleicht sehe ich den Wald vor lauter Bäumen nicht mehr.

https://drive.google.com/open?id=1GsiA9cRIpbTHeMWNrfe0eMincd9qfdvG

Danke vorab,
Bando00.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Shor-ty
Moderator





Sehen Sie sich das Profil von Shor-ty an!   Senden Sie eine Private Message an Shor-ty  Schreiben Sie einen Gästebucheintrag für Shor-ty

Beiträge: 2172
Registriert: 27.08.2010

OpenFOAM-dev (Foundation)

erstellt am: 11. Nov. 2018 18:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Bando00 10 Unities + Antwort hilfreich

Hi,

Zitat:

[0] [1] [2] [3] [4]
[1]
[1] --> FOAM FATAL IO ERROR:
[1] Unable to set reference cell for field p
    Please supply either pRefCell or pRefPoint

Du hast also schon alles richtig gemacht. Der Fehler ist darin begründet, dass du die pRef Definition im SIMPLE Dictionary machen musst und nicht im PIMPLE. Der PIMPLE hat hier überhaupt keine Auswirkung, da du das nicht ausliest 

------------------
Viele Grüße,
Tobi

OpenFOAM® Tutorials | Training | Publikationen | Für Anfänger wiki.openfoam.com

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Bando00
Mitglied
Student

Sehen Sie sich das Profil von Bando00 an!   Senden Sie eine Private Message an Bando00  Schreiben Sie einen Gästebucheintrag für Bando00

Beiträge: 4
Registriert: 08.11.2018

OF v6.0

erstellt am: 11. Nov. 2018 20:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Tobi,

wer lesen kann ist klar im Vorteil. Ich danke dir für die Hinweise!!!
Die Simulation ist gerade durchgelaufen, zumindest für die ersten 100 Iterationsschritte und endete mit einem Abbruch. Jedoch sahen die Ergebnisse vielversprechend aus.

Code:
Time = 114

[3] [1] #[2] 0  Foam::error: rintStack(Foam::Ostream&)[4] [0] ##0  0Foam::error: rintStack(Foam::Ostream&)  #Foam::error: rintStack(Foam::Ostream&)0  Foam::error: rintStack(Foam::Ostream&)#0  Foam::error: rintStack(Foam::Ostream&) at ??:?
[4] #1  Foam::sigFpe::sigHandler(int) at ??:?
[0] #1  Foam::sigFpe::sigHandler(int) at ??:?
[1] #1  Foam::sigFpe::sigHandler(int) at ??:?
[3] #1  Foam::sigFpe::sigHandler(int) at ??:?
[2] #1  Foam::sigFpe::sigHandler(int) at ??:?
[3] #2  ? at ??:?
[4] #2  ? at ??:?
[1] #2  ? at ??:?
[0] #2  ? at ??:?
[2] #2  ? in "/lib/x86_64-linux-gnu/libc.so.6"
[4] #3  Foam::GaussSeidelSmoother::smooth(Foam::word const&, Foam::Field<double>&, Foam::lduMatrix const&, Foam::Field<double> const&, Foam::FieldField<Foam::Field, double> const&, Foam::UPtrList<Foam::lduInterfaceField const> const&, unsigned char, int) in "/lib/x86_64-linux-gnu/libc.so.6"

und weiter unten
[...]
[3] #7  at ??:?
[2] #8  at ??:?
[1] #8  ? at ??:?
[0] #8  ? at ??:?
[4] #8  ?? at ??:?
[3] #8  ? at ??:?
[2] #9  __libc_start_main at ??:?
[1] #9  __libc_start_main? at ??:?
[0] #9  __libc_start_main at ??:?
[4] #9  __libc_start_main in "/lib/x86_64-linux-gnu/libc.so.6"
[2] #10  in "/lib/x86_64-linux-gnu/libc.so.6"
[1] #10  at ??:?
[3] #9  __libc_start_main? in "/lib/x86_64-linux-gnu/libc.so.6"
[4] #10  in "/lib/x86_64-linux-gnu/libc.so.6"
[0] #10  ? in "/lib/x86_64-linux-gnu/libc.so.6"
[3] #10  ? at ??:?
[ag-VirtualBox:02743] *** Process received signal ***
[ag-VirtualBox:02743] Signal: Floating point exception (8)
[ag-VirtualBox:02743] Signal code:  (-6)
[ag-VirtualBox:02743] Failing at address: 0x3e800000ab7
[ag-VirtualBox:02743] [ 0] /lib/x86_64-linux-gnu/libc.so.6(+0x36cb0) [0x7f5063a0ccb0]

und ganz unten

[...] mpirun noticed that process rank 1 with PID 2742 on node ag-VirtualBox exited on signal 8 (Floating point exception).



Ich werde aus der Fehlermeldung leider nicht schlauer. Ist etwa der RAM-Speicher übergelaufen oder stimmt eine oder mehrere Randbedingungen eventuell noch nicht?


Und zum Schluss eine Verständnisfrage:

Wenn ich nun die stationäre Lösung mit dem simpleFoam-solver ohne das k-epsilon-Turbulenzmodell rechnen möchte, wird ein einfacher Wechsel von "tubulence  on;" zu "turbulence  off; im tubulenceProperties-file ausreichen, um eine laminare Strömung zu erzwingen?

An dieser Stelle möchte ich dir nochmals vielmals danken Tobi, dass du dir die Zeit genommen hast.

Grüße,
Bando00.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Ingenieur Medizintechnik (w/m)
Jobs mit Aussicht Spitzenmedizin braucht Forschung Das Universitäts­Centrum für Orthopädie und Unfall­chirurgie (OUC) am Universitäts­klinikum Carl Gustav Carus Dresden deckt das konservative und operative Spektrum sämtlicher Erkrankungen und Verletzungen des muskuloskelettalen Systems vollständig ab. In Spezial­sektionen,  Ambulanzen und der Chirurgischen Not­aufnahme erfolgt  eine spezialisierte Betreuung ambulanter und stationärer Patienten....
Anzeige ansehenMedizintechnik
Shor-ty
Moderator





Sehen Sie sich das Profil von Shor-ty an!   Senden Sie eine Private Message an Shor-ty  Schreiben Sie einen Gästebucheintrag für Shor-ty

Beiträge: 2172
Registriert: 27.08.2010

OpenFOAM-dev (Foundation)

erstellt am: 13. Nov. 2018 07:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Bando00 10 Unities + Antwort hilfreich

Zitat:

[ag-VirtualBox:02743] Signal: Floating point exception (8)

Division durch Null löst den Floating Point exception aus. Siehe auch:

Zitat:

A "floating point number" is how computers usually represent numbers that are not integers -- basically, a number with a decimal point. In C++ you declare them with float instead of int. A floating point exception is an error that occurs when you try to do something impossible with a floating point number, such as divide by zero.


https://stackoverflow.com/questions/4236853/floating-point-exception-c-why-and-what-is-it

Heißt also, aus irgendwelchen Gründen hast du irgendwo in deinem Lösungsgebiet eine Konstellation, wo durch Null geteilt wird. Zur Prüfung, jeden Iterationsschritt speichern und sich alle Größen zeitlich betrachten (ParaView). Normalerweise findet man die Problemstellen dann recht schnell und kann auf Netz, Randbedingungen zurückschließen. Zu deiner zweiten Frage; so halbwegs ja. Da du die OpenFOAM Foundation Version 6 verwendest musst du das simulationType: RAS Attribut zu simulationType: laminar umändern. Siehe hier auch verschiedene Tutorials.

------------------
Viele Grüße,
Tobi

OpenFOAM® Tutorials | Training | Publikationen | Für Anfänger wiki.openfoam.com

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2018 CAD.de | Impressum | Datenschutz