CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Running, Solving & CFD (https://www.cfd-online.com/Forums/openfoam-solving/)
-   -   twoPhaseEulerFoam Problems (https://www.cfd-online.com/Forums/openfoam-solving/62846-twophaseeulerfoam-problems.html)

Dale March 22, 2009 03:57

twoPhaseEulerFoam Problems
 
Hi all,

I'm trying to simulate a small bubble column with twoPhaseEuler foam and I get the errors below.

Also, I am curious, what is the best way to initialize the values of Ua, Ub and P? I've set Ua and Ub to zero throughout the column, and P to the values corresponding to the static pressure.

Thanks for the help,
Dale

/*---------------------------------------------------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 |
| \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
Exec : twoPhaseEulerFoam
Date : Mar 22 2009
Time : 18:23:03
Host : debian
PID : 25099
Case : /home/dale/OpenFOAM/dale-1.5/run/2dcol
nProcs : 1

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

Create mesh for time = 0


Reading environmentalProperties
Reading transportProperties

Calculating face flux field phia
Calculating face flux field phib
Reading field alpha

Reading field p

Reading field k

Reading field epsilon

Calculating field nutb

Calculating field nuEffa

Calculating field nuEffb

Calculating field DDtUa and DDtUb

Calculating field g.h

Selecting dragModel for phase a: SchillerNaumann
Selecting dragModel for phase b: SchillerNaumann
dragPhase is blended
Selecting viscosityModel Syamlal
Selecting conductivityModel HrenyaSinclair
Selecting radialModel Gidaspow
Selecting granularPressureModel Lun
Selecting frictionalStressModel JohnsonJackson
Courant Number mean: 0 max: -0

Starting time loop

Courant Number mean: 0 max: -0
Max Ur Courant Number = 5
Reading/calculating field UaMean

Reading/calculating field UbMean

Reading/calculating field alphaMean

Reading/calculating field pMean

Time = 0.1

#0 Foam::error::printStack(Foam::Ostream&) in "/home/dale/OpenFOAM/OpenFOAM-1.5/lib/linux64GccDPOpt/libOpenFOAM.so"
#1 Foam::sigFpe::sigFpeHandler(int) in "/home/dale/OpenFOAM/OpenFOAM-1.5/lib/linux64GccDPOpt/libOpenFOAM.so"
#2 ?? in "/lib/libc.so.6"
#3 Foam::LimitedScheme<double, Foam::Limited01Limiter<Foam::limitedLinearLimiter< Foam::NVDTVD> >, Foam::limitFuncs::magSqr>::limiter(Foam::Geometric Field<double, Foam::fvPatchField, Foam::volMesh> const&) const in "/home/dale/OpenFOAM/OpenFOAM-1.5/lib/linux64GccDPOpt/libfiniteVolume.so"
#4 Foam::limitedSurfaceInterpolationScheme<double>::w eights(Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) const in "/home/dale/OpenFOAM/OpenFOAM-1.5/lib/linux64GccDPOpt/libfiniteVolume.so"
#5 Foam::surfaceInterpolationScheme<double>::interpol ate(Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) const in "/home/dale/OpenFOAM/OpenFOAM-1.5/lib/linux64GccDPOpt/libfiniteVolume.so"
#6 Foam::fv::gaussConvectionScheme<double>::interpola te(Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) const in "/home/dale/OpenFOAM/OpenFOAM-1.5/lib/linux64GccDPOpt/libfiniteVolume.so"
#7 Foam::fv::gaussConvectionScheme<double>::flux(Foam ::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) const in "/home/dale/OpenFOAM/OpenFOAM-1.5/lib/linux64GccDPOpt/libfiniteVolume.so"
#8 Foam::tmp<Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> > Foam::fvc::flux<double>(Foam::GeometricField<doubl e, Foam::fvsPatchField, Foam::surfaceMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&, Foam::word const&) in "/home/dale/OpenFOAM/OpenFOAM-1.5/applications/bin/linux64GccDPOpt/twoPhaseEulerFoam"
#9 Foam::tmp<Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh> > Foam::fvc::flux<double>(Foam::tmp<Foam::GeometricF ield<double, Foam::fvsPatchField, Foam::surfaceMesh> > const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&, Foam::word const&) in "/home/dale/OpenFOAM/OpenFOAM-1.5/applications/bin/linux64GccDPOpt/twoPhaseEulerFoam"
#10 main in "/home/dale/OpenFOAM/OpenFOAM-1.5/applications/bin/linux64GccDPOpt/twoPhaseEulerFoam"
#11 __libc_start_main in "/lib/libc.so.6"
#12 Foam::regIOobject::readIfModified() in "/home/dale/OpenFOAM/OpenFOAM-1.5/applications/bin/linux64GccDPOpt/twoPhaseEulerFoam"
Floating point exception

raagh77 March 22, 2009 07:30

this could be useful.
 
http://www.cfd-online.com/Forums/ope...onditions.html

what value you have given for particle velocity ?

Regards
Raghavendra

Dale March 22, 2009 20:22

I made the velocity Ua at the bottom boundary 0.25 m/s

raagh77 March 23, 2009 15:59

Boundary condition problem?
 
Hi..
probably u may have some wrong boundary condition..
and also with small time step the simulation could be stable (even I am very much new to this usage of twoPhaseEulerFoam )..


Hope the other link (replies from Alberto) would have helped you to achieve a stable simulation running! ?

Regards
Raghavendra

Dale March 24, 2009 06:08

Yes, I think there is a problem with my boundary conditions or initial values, which is causing the problems with interpolation. I've tried other interpolation schemes with little success. Reducing the time interval to 1e-6 also doesn't help.

Perhaps my mesh isn't fine enough, it is 30 x 10 cells, each 1 cm square (it is a 2D simulation).

With regards to the initial values for Ua and Ub in the /0 directory, what is the best manner to determine these?

raagh77 March 24, 2009 16:02

Hello Dale,

In my case, am trying to simulate 2D bubble column with air injected at the bottom to the wall (as I mentioned in the previous thread i.e. with the link in my previous post). Inlet velocity was given so there was no problem for me to choose the inlet velocity..

But also in some journal I found inlet velocity can be found

alpha = Vinlet/Vsuperficial, thus if you know the values for alpha and superficial velocity Vinlet can be calculated easily..

And regarding the drag model .. is there any specific reason to choose blended in the dragPhase ..I tried with dragPhase a (a is the discrete phase in my case)..
What about your inlet, is it the entire bottom or just a part of it ?

Also lookup for the alpha value at the inlet ..
(the previous thread which I started could be really useful for your case..coz it is like step by step procedure and do's and don't's ..thanks to Alberto :)

If possible mail me the case files to my id raagh77@gmail.com..

Regards
Raghavendra

raagh77 March 24, 2009 16:08

small correction
 
alpha = Vsup/Vinlet..

Dale March 25, 2009 03:30

1 Attachment(s)
Hi Raghavendra,

I've attached the archive of the directory, it should have everything you need.

Thanks for all the help, hopefully you can give me some ideas, since I'm out.

Many thanks,
Dale

alberto March 25, 2009 03:33

Hi

if you are simulating a gas-liquid system, this

Quote:

Selecting viscosityModel Syamlal
Selecting conductivityModel HrenyaSinclair
Selecting radialModel Gidaspow
Selecting granularPressureModel Lun
Selecting frictionalStressModel JohnsonJackson
says the settings are wrong. All the settings in the list show you did not turn the kinetic theory closures for the granular flow, so you're actually trying to describe your particles as solid particles. :D
Turn it off in the constant/kineticTheoryProperties dictionary.

From here:

Quote:

Max Ur Courant Number = 5
you also understand that your time step is huge (dt = 0.1s). The Courant number can at best be 1, but you might want it to be smaller for accuracy.

Best regards

Dale March 25, 2009 04:07

Hi Alberto,

Thanks for the tip about dt, I was just trying to get things to work - I have turned this down a lot.

Below is my kineticTheoryProperties file, it looks to me like the flag is set to off?

I've read the thesis by Rusche but couldn't find mention of any of those models - I copied the files straight from the bubbleColumn tutorial which worked fine.

Is there any other source of documentation that I could refer to other than the Rusche thesis?

Many thanks,
Dale

/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 |
| \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object kineticTheoryProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

kineticTheory off;

equilibrium on;

e e [ 0 0 0 0 0 0 0 ] 0.9 ;

alphaMax alphaMax [ 0 0 0 0 0 0 0 ] 0.6 ;

alphaMinFriction alphaMinFriction [ 0 0 0 0 0 0 0 ] 0.5 ;

Fr Fr [ 1 -1 -2 0 0 0 0 ] 0.05 ;

eta eta [ 0 0 0 0 0 0 0 ] 2.0 ;

p p [ 0 0 0 0 0 0 0 ] 5.0 ;

phi phi [ 0 0 0 0 0 0 0 ] 25.0 ;

viscosityModel Syamlal;

conductivityModel HrenyaSinclair;

granularPressureModel Lun;

frictionalStressModel JohnsonJackson;

radialModel Gidaspow;

HrenyaSinclairCoeffs
{
L L [ 0 1 0 0 0 0 0 ] 5.0e-4 ;
}

// ************************************************** *********************** //

alberto March 25, 2009 09:44

Hi,

I'm sorry, I was wrong. The code is simply reading those settings even if not using them. So the problem is not there. Please ignore my previous comment on these submodels.

About the documentation, these submodels were added by Niklas Nordin and in part by me. There is no OF based documentation that I know of, but you can find the theory behind them for example in the book Gidaspow, Multiphase flow and fluidization, 1994, Academic Press, or in Berend van Wachem PhD thesis.

Best regards,

Dale April 2, 2009 08:54

I've fiddled around with the timesteps, number of cells etc to no avail. I think the problem is in the mesh, as soon as I put the mesh in from the tutorial things work perfectly.

I've posted my mesh below, if anyone can give any advice as to what's wrong with this?

Cheers,
DAle



/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 |
| \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //


convertToMeters 1;

vertices
(
(0 0 0) //Vertex 0, bottom left, front face
(0.1 0 0) //Vertex 1, bottom right, front face

(0.1 0 0.01) //Vertex 2, bottom left, back face (null)
(0 0 0.01) //Vertex 3, bottom right, back face (null)

(0 0.3 0) // Vertex 4, top left, front face
(0.1 0.3 0) //Vertex 5, top right front face

(0.1 0.3 0.01) //Vertex 6, top right, back face (null)
(0 0.3 0.01) //Vertex 7, top left, back face (null)
);

edges
(
);

blocks
(
hex (0 1 2 3 4 5 6 7)(100 1 300) simpleGrading (1 1 1)
);


patches
(
patch
inlet
(
(3 2 1 0)
)

patch
outlet
(
(4 5 6 7)
)
wall
walls

(
(4 7 3 0) //left wall
(6 5 1 2) //right wall
)

/*
empty
frontandback
(
(5 4 0 1) // front
(7 6 2 3) //back
)
*/
);

mergePatchPairs
(
);

sachin April 2, 2009 10:07

Hi
As far as i think the mesh seems to be too much stretched.
As you have divided 0.01 into 300 parts and 0.1 into 100 parts and 0.3 is just 1 cell... division and domain usually are proportionate...if the case is 2D why such huge difference ? Increase gradually instead of going so high directly...
Initial values could also be a problem...check for some experimental results if possible. And i would suggest check it for laminar flow first and then include turbulence models as these might increase your complexities
Just suggestions.. hope it helps and reduces confusion
bye
Sachin

Dale April 5, 2009 04:37

Hey all,

Thanks for the advice, I got it going (after fiddling with the meshing, which was valid, but wrong).

As another question, I want to study liquid mixing in the column. Is there a way in paraview to monitor the progress of say a particular bit of fluid as it moves its way through the column?

This to me seems unlikely. If that's correct then the other option would be to modify the code so it keeps track of the concentration/fraction of the third phase (for the record the third phase would be a solution with properties pretty much the same as water, and also totally miscible).

To summarise I'm interested in tracking the spread of a miscible fluid that enters at a single point, or obtaining some idea of the mixing time.

Any insight into the problem would be muchly appreciated.

Many thanks,
Dale

alberto April 6, 2009 03:25

Hi Dale,
if what you want is studying how a "bit" of water mixes inside your column, you probably don't need a third phase, but simply a passive scalar transported by the water phase.

If this is your case, the modification to the code is straightforward. See scalarTransportFoam to see how you can add such a transport equation to your code.

Best,

Dale April 10, 2009 21:19

1 Attachment(s)
I did as you suggested, alberto and copied the scalar transport equation into my code, I placed it into a new folder called Advection.H (which is shown below) and modified createFields.H accordingly.

However, I must be doing something wrong as my code isn't compiling. Rather than paste all the code into here, I've archived the whole directory and attached it to the post.

I'd be grateful if anyone can explain what I'm doing wrong (and why it isn't working)

Thanks for all the help,
Dale

Advection.H
{
DDtC =
fvm::ddt(C)
+ fvm::div(phib, C);
}

alberto April 10, 2009 21:56

Hi Dale,

please refer to this tutorial:

http://openfoamwiki.net/index.php/Ho...sport_equation

Best regards,

Dale April 19, 2009 06:11

Thanks a lot alberto, you've definitely put me on the right track.

I'm having some problems with meshing, I'm trying to make a small inlet on the side of the column where the tracer solution will enter, but it does not seem to be working in 2D. I'll post the blockMeshDict file below, if anyone can offer suggestions that'd be great.

Also, has anyone attempted to include mass transfer and or a population balance model for bubble size in the code? Any insights on these topics will be appreciated.

Thanks,
Dale

/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 |
| \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //


convertToMeters 1;

vertices
(
(0 0 0) //Vertex 0, bottom left, front face
(1 0 0) //Vertex 1, bottom right, front face

(1 6 0) //Vertex 2, top right, front face
(0 6 0) //Vertex 3, top left, front face

(0 0 0.01) // Vertex 4, Bottom left, back face
(1 0 0.01) //Vertex 5, bottom right, back face

(1 6 0.01) //Vertex 6, top right, back face
(0 6 0.01) //Vertex 7, top left, back face

(1 0.789 0)
(1.25 0.789 0)

(1.25 0.868 0)
(1 0.868 0)

(1 0.789 0.01)
(1.25 0.789 0.01)

(1.25 0.868 0.01)
(1 0.868 0.01)

);

edges
(
);

blocks
(
hex (0 1 2 3 4 5 6 7)(20 76 1) simpleGrading (1 1 1)
hex (8 9 10 11 12 13 14 15)(10 1 1) simpleGrading (1 1 1)
);


patches
(
patch
airinlet
(
(1 5 4 0)
)

patch
liquidinlet
(
(14 10 9 13)

)

/*patch
liquidoutlet
(
(8 12 11 15)
)
*/

patch
outlet
(
(3 7 6 2)
)
wall
walls
(
(0 4 7 3) //left wall
(2 6 5 1)
)

/*
wall
rightwall
(
//right wall
//(8 12 15 11)
)

/*
empty
frontandback
(
(5 4 0 1) // front
(7 6 2 3) //back
)
*/
);

mergePatchPairs
(
//<liquidoutlet> <rightwall>
);

alberto April 19, 2009 17:23

Quote:

Originally Posted by Dale (Post 213422)

Also, has anyone attempted to include mass transfer and or a population balance model for bubble size in the code? Any insights on these topics will be appreciated.

There is a paper published on the implementation of population balances:

L.F.L.R. Silva, R.B. Damian, P.L.C. Lage, Implementation and analysis of numerical solution of the population balance equation in CFD packages, Computers and Chemical Engineering 32 (2008) 2933–2945.

Best,

Dale April 21, 2009 10:02

Hey alberto,

Thanks for the article. I have quite a few, but it is always good to have one more for the list. I was just looking to see if anyone had any success in implementing such a model.

When I modeled the concentration I got crazy numbers (i.e. 10 times greater than the initial concentrations) as well as negatives. I'm not sure what's causing this, perhaps my too large mesh.

Any help is appreciated,
Cheers,
Dale


All times are GMT -4. The time now is 10:00.