InterFoam Simulation von Blasen / OpenFOAM
mars001 02. Mai. 2019, 20:56


Modellvorstellung.JPG

 
Hallo zusammen,

ich beschäftige mich derzeit mit der Simulation von Blasen mit Hilfe des "interFoam" Solvers.

Mir ist es nun nach anfänglichen Schwierigkeiten gelungen, dass der Rechenfall zumindest fehlerfrei erstmal durchläuft. Ich tue mich allerdings bei der Festlegung der "boundary Conditions" schwer.

Simulationsbeschreibung

Wie man in der Abbildung entnehmen kann, soll durch das Inlet ein Luft-Gemisch über ein Volumenstrom eingeführt werden, dass zur Blasenbildung führt. Somit entsteht gegenüber der Förderflüssigkeit (Wasser) ein spezifisch leichteres Luftflüssigkeitsgemisch. Das leichtere Luftflüssigkeitsgemisch steigt im Rohr zusammen mit der Luft von selbst nach oben.

Ziel ist es, ein Wassertransport mit Hilfe der Blasenbildung in das obere Becken zu realisieren (Prinzip Mammutpumpe).

Randbedingungen: laminare Strömung, geordneter Blasenaufstieg, Umgebung: Atmosphärische Bedingung 

Nachfolgend die derzeit gesetzten boundary conditions.

Code:

/*
Shor-ty 13. Mai. 2019, 09:57

Grüß dich Mars,

sorry für die späte Rückmeldung (auch auf meine Holzmann CFD Email) aber es gibt einiges zu tun und da kommt gerade sehr vieles sehr kurz.

Wo liegt das Problem? Das kommt bei deiner Frage nicht wirklich hervor. Die p_rgh BC scheinen mir nicht korrekt zu sein vor allem beim Inlet!

mars001 13. Mai. 2019, 22:07


Blase_zeit_0_5s.JPG

 
Servus Tobi,

in erster Linie bin ich mir nicht sicher, ob ich die Randbedingungen richtig gesetzt habe. Habe diese nochmals abgeändert, bin aber der Meinung, dass diese immer noch fehlerhaft sind (habe die aktuellen unten angefügt). Die Abbildung im Anhang zeigt das Ergebnis der Simulation bei 0,5 Sekunden. Sowohl bei einem groben als auch bei einem feineren Netz bricht die Simulation ab.

Bei einem groben Netz bricht die Rechnung ab, da das deltaT enorm klein wird (^-110). Meine Idee war zunächst, dass interFoam Probleme beim lösen der Gleichung hat, wenn das Netz zu grob ist. Deshalb habe ich versucht eine Rechnung mit einem etwas feineren Netz durchzuführen. Allerdings erscheint dann nachfolgende Fehlermeldung (siehe nachfolgende log-File Ausgabe). Habe in verschiedenen Foren gelesen, dass dieser Fehler auftritt wenn die Randbedingungen fehlerhaft/schlecht sind.


Code:

Pstream initialized with:
    floatTransfer      : 0
    nProcsSimpleSum    : 0
    commsType          : nonBlocking
    polling iterations : 0
sigFpe : Enabling floating point exception trapping (FOAM_SIGFPE).
fileModificationChecking : Monitoring run-time modified files using timeStampMaster
allowSystemOperations : Allowing user-supplied system call operations

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create time

Create mesh for time = 0


PIMPLE: Operating solver in PISO mode

Reading field p_rgh

Reading field U

Reading/calculating face flux field phi

Reading transportProperties

Selecting incompressible transport model Newtonian
Selecting incompressible transport model Newtonian
Selecting turbulence model type laminar

Reading g

Reading hRef
Calculating field g.h

No MRF models present

No finite volume options present

DICPCG:  Solving for pcorr, Initial residual = 0, Final residual = 0, No Iterations 0
time step continuity errors : sum local = 0, global = 0, cumulative = 0
Courant Number mean: 0 max: 0

Starting time loop

Courant Number mean: 0 max: 0
Interface Courant Number mean: 0 max: 0
deltaT = 0.001
Time = 0.001

PIMPLE: iteration 1
MULES: Solving for alpha.water
Phase-1 volume fraction = 0  Min(alpha.water) = 0  Max(alpha.water) = 0
MULES: Solving for alpha.water
Phase-1 volume fraction = 0  Min(alpha.water) = 0  Max(alpha.water) = 0
[7] #0  Foam::error: rintStack(Foam::Ostream&)[8] #0  Foam::error: rintStack(Foam::Ostream&)[9] #0  Foam::error: rintStack(Foam::Ostream&)[10] #0  Foam::error: rintStack(Foam::Ostream&)[11] #0  Foam::error: rintStack(Foam::Ostream&)[0] #0  Foam::error: rintStack(Foam::Ostream&)[1] #0  Foam::error: rintStack(Foam::Ostream&)[2] #0  Foam::error: rintStack(Foam::Ostream&)[3] #0  Foam::error: rintStack(Foam::Ostream&)[4] #0  Foam::error: rintStack(Foam::Ostream&)[5] #0  Foam::error: rintStack(Foam::Ostream&)[6] #0  Foam::error: rintStack(Foam::Ostream&) at ??:?
at ??:?
[11] #1  Foam::sigFpe::sigHandler(int)[3] #1  Foam::sigFpe::sigHandler(int) at ??:?
[6] #1  Foam::sigFpe::sigHandler(int) at ??:?
at ??:?
at ??:?
[10] #1  Foam::sigFpe::sigHandler(int)[5] #1  Foam::sigFpe::sigHandler(int)[1] #1  Foam::sigFpe::sigHandler(int) at ??:?
at ??:?
[8] #1  Foam::sigFpe::sigHandler(int)[9] #1  Foam::sigFpe::sigHandler(int) at ??:?
[0] #1  Foam::sigFpe::sigHandler(int) at ??:?
[7] #1  Foam::sigFpe::sigHandler(int) at ??:?
[4] #1  Foam::sigFpe::sigHandler(int) at ??:?
[2] #1  Foam::sigFpe::sigHandler(int) at ??:?
[9] #2  ? at ??:?
[6] #2  ? at ??:?
[11] #2  ? at ??:?
[5] #2  ? at ??:?
[3] #2  ? at ??:?
[0] #2  ? at ??:?
[10] #2  ? at ??:?
[8] #2  ? at ??:?
[1] #2  ? at ??:?
[7] #2  ? at ??:?
[2] #2  ? at ??:?
[4] #2  ? in "/lib64/libc.so.6"
[9] #3  Foam::flowRateInletVelocityFvPatchVectorField::updateCoeffs() in "/lib64/libc.so.6"
in "/lib64/libc.so.6"
[6] #3  Foam::flowRateInletVelocityFvPatchVectorField::updateCoeffs()[5] #3  Foam::flowRateInletVelocityFvPatchVectorField::updateCoeffs() in "/lib64/libc.so.6"
[11] #3  Foam::flowRateInletVelocityFvPatchVectorField::updateCoeffs() in "/lib64/libc.so.6"
in "/lib64/libc.so.6"
[3] #3  Foam::flowRateInletVelocityFvPatchVectorField::updateCoeffs() in "/lib64/libc.so.6"
in "/lib64/libc.so.6"
[10] #3  Foam::flowRateInletVelocityFvPatchVectorField::updateCoeffs()[0] #3  Foam::flowRateInletVelocityFvPatchVectorField::updateCoeffs()[8] #3  Foam::flowRateInletVelocityFvPatchVectorField::updateCoeffs() in "/lib64/libc.so.6"
[7] #3  Foam::flowRateInletVelocityFvPatchVectorField::updateCoeffs() in "/lib64/libc.so.6"
[4] #3  Foam::flowRateInletVelocityFvPatchVectorField::updateCoeffs() in "/lib64/libc.so.6"
[2] #3  Foam::flowRateInletVelocityFvPatchVectorField::updateCoeffs() in "/lib64/libc.so.6"
[1] #3  Foam::flowRateInletVelocityFvPatchVectorField::updateCoeffs() at ??:?
[8] #4  at ??:?
[3] #4  at ??:?
[6] #4  at ??:?
[10] #4  at ??:?
[9] #4  at ??:?
[5] #4  at ??:?
[11] #4  at ??:?
[0] #4  at ??:?
[7] #4  at ??:?
[4] #4  at ??:?
[2] #4  Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh>::GeometricBoundaryField::updateCoeffs()Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh>::GeometricBoundaryField::updateCoeffs()Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh>::GeometricBoundaryField::updateCoeffs()Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh>::GeometricBoundaryField::updateCoeffs()Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh>::GeometricBoundaryField::updateCoeffs() at ??:?
[1] #4  Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh>::GeometricBoundaryField::updateCoeffs()Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh>::GeometricBoundaryField::updateCoeffs()Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh>::GeometricBoundaryField::updateCoeffs()Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh>::GeometricBoundaryField::updateCoeffs()Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh>::GeometricBoundaryField::updateCoeffs()Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh>::GeometricBoundaryField::updateCoeffs() at ??:?
[6] #5  Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh>::GeometricBoundaryField::updateCoeffs() at ??:?
[10] #5  at ??:?
[8] #5  at ??:?
[3] #5  at ??:?
[5] #5  at ??:?
[9] #5  at ??:?
[11] #5  at ??:?
[0] #5  at ??:?
[2] #5  at ??:?
[7] #5  Foam::fvMatrix<Foam::Vector<double> >::fvMatrix(Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh> const&, Foam::DimensionSet const&)Foam::fvMatrix<Foam::Vector<double> >::fvMatrix(Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh> const&, Foam::DimensionSet const&) at ??:?
[4] #5  Foam::fvMatrix<Foam::Vector<double> >::fvMatrix(Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh> const&, Foam::DimensionSet const&)Foam::fvMatrix<Foam::Vector<double> >::fvMatrix(Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh> const&, Foam::DimensionSet const&)Foam::fvMatrix<Foam::Vector<double> >::fvMatrix(Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh> const&, Foam::DimensionSet const&)Foam::fvMatrix<Foam::Vector<double> >::fvMatrix(Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh> const&, Foam::DimensionSet const&)Foam::fvMatrix<Foam::Vector<double> >::fvMatrix(Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh> const&, Foam::DimensionSet const&) at ??:?
[1] #5  Foam::fvMatrix<Foam::Vector<double> >::fvMatrix(Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh> const&, Foam::DimensionSet const&)Foam::fvMatrix<Foam::Vector<double> >::fvMatrix(Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh> const&, Foam::DimensionSet const&) at ??:?
[5] #6  Foam::fvMatrix<Foam::Vector<double> >::fvMatrix(Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh> const&, Foam::DimensionSet const&)Foam::fvMatrix<Foam::Vector<double> >::fvMatrix(Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh> const&, Foam::DimensionSet const&) at ??:?
[10] #6  at ??:?
[8] #6  at ??:?
[0] #6  at ??:?
[6] #6  Foam::fvMatrix<Foam::Vector<double> >::fvMatrix(Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh> const&, Foam::DimensionSet const&) at ??:?
[3] #6  at ??:?
[9] #6  at ??:?
[11] #6  ?? at ??:?
[7] #6  at ??:?
[2] #6  ?? at ??:?
[4] #6  ?? at ??:?
[1] #6  ?? at ??:?
[5] #7  ? at ??:?
[8] #7  at ??:?
[10] #7  at ??:?
[0] #7  ?? at ??:?
[9] #7  at ??:?
[6] #7  ? at ??:?
[11] #7  at ??:?
[3] #7  ???? at ??:?
[2] #7  ? at ??:?
[4] #7  at ??:?
[1] #7  ? at ??:?
[7] #7  ? at ??:?
[5] #8  __libc_start_main? at ??:?
[8] #8  __libc_start_main? at ??:?
[0] #8  __libc_start_main at ??:?
[10] #8  __libc_start_main? at ??:?
[9] #8  __libc_start_main?? at ??:?
[6] #8  __libc_start_main at ??:?
[11] #8  __libc_start_main in "/lib64/libc.so.6"
[5] #9  at ??:?
[3] #8  __libc_start_main in "/lib64/libc.so.6"
[0] #9  at ??:?
[2] #8  in "/lib64/libc.so.6"
[8] #9  __libc_start_main at ??:?
[4] #8  __libc_start_main in "/lib64/libc.so.6"
[10] #9  at ??:?
[1] #8  __libc_start_main in "/lib64/libc.so.6"
[9] #9  at ??:?
[7] #8  __libc_start_main in "/lib64/libc.so.6"
[6] #9  in "/lib64/libc.so.6"
[11] #9  ??? in "/lib64/libc.so.6"
[3] #9  in "/lib64/libc.so.6"
[2] #9  ?? in "/lib64/libc.so.6"
[4] #9  in "/lib64/libc.so.6"
[1] #9  ? in "/lib64/libc.so.6"
[7] #9  ? at ??:?

Shor-ty 15. Mai. 2019, 09:15

Solch eine Fehlermeldung kann ich jetzt adhoc nicht beurteilen. Wie wäre es, wenn du mal mit 1e-8 anfängst (dt).  Ferner sind deine Randbedingungen für p_rgh nicht korrekt! Am outlet kann nicht der gleiche Wert anliegen wie am Inlet, da am Outlet sicherlich Luft ist und am Inlet hast du eine Mischung. Wieso fixierst du das Inlet überhaupt beim Druck?