CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > OpenFOAM Running, Solving & CFD

Implicit solver for gamma volumefraction equation

Register Blogs Members List Search Today's Posts Mark Forums Read

Like Tree2Likes

Reply
 
LinkBack Thread Tools Display Modes
Old   June 20, 2007, 11:19
Default Cuurently, the volume-fraction
  #1
sek
Member
 
Sung-Eun Kim
Join Date: Mar 2009
Posts: 76
Rep Power: 7
sek is on a distinguished road
Cuurently, the volume-fraction equation in interFoam, for instance, uses an explicit solver. I was curious whether using an implicit solver would allow me to use larger time-step size. So, I tried to call MULES::implicitSolve01 instead of MULE::explicitSolve1 in gammaEqn.H. It seems to work. One thing I'm not sure about is one of the argument Dpsi of dimensionedScalar type. Looking at the MULE implementation, Dpsi of appears to be a diffusivity introduced as a stabulity measure for gamma equation. I set it to a small value, which seems to work.

Can someone comment on whether I'm doing things right, please?
sek is offline   Reply With Quote

Old   September 9, 2008, 07:42
Default Hi all I would like to rest
  #2
ngj
Senior Member
 
Niels Gjoel Jacobsen
Join Date: Mar 2009
Location: Rotterdam, The Netherlands
Posts: 1,532
Rep Power: 23
ngj will become famous soon enoughngj will become famous soon enough
Hi all

I would like to restart this discussion. Is there anyone who has successfully implemented an implicit solver for the gamma equation?
I tried the above approach but was not able to get it to work.

Further, what is the argument behind the hard-coded "MULES::explicitSolve01" in the interFoam-solvers.

I am currently using 1.4.1.

Thank you for any help or suggestions.

/ Niels
__________________
Please note that I do not use the Friend-feature, so do not be offended, if I do not accept a request.
ngj is offline   Reply With Quote

Old   September 9, 2008, 12:12
Default MULES::implicitSolve works wit
  #3
Member
 
Patricio Bohorquez
Join Date: Mar 2009
Location: Jaén, Spain
Posts: 87
Rep Power: 7
pbohorquez is on a distinguished road
MULES::implicitSolve works with success in the solver interPhaseChangeFoam (OF-1.5).

Following src/finiteVolume/fvMatrices/solvers/MULES/MULES.H it reads

MULES:explicitSolve01(psi, phi, phiPsi) ask you for:
- psi: actual value of the variable to be solved
- phi: normal convective flux
- psiPhi: actual explicit flux of the variable to solve. It is also used to return the limited flux of the bounded solution.

Obviously, psi = gamma for interFoam. Then, phi = U·S, where U is the velocity vector and S is the normal to the cell surface times the cell-surface area. Its value comes from the PISO-loop. Finally, psiPhi = gamma [U+(1-gamma)U<sub>r,gamma</sub>]·S = gamma U<sub>gamma</sub>·S, where U<sub>r,gamma</sub> is the relative velocity of the water with respect to the air at the thick free-surface, and U<sub>gamma</sub> is the velocity of the gamma-phase.

Patricio
Pirlu likes this.
pbohorquez is offline   Reply With Quote

Old   September 10, 2008, 05:53
Default Hi Patricio Thanks for the
  #4
ngj
Senior Member
 
Niels Gjoel Jacobsen
Join Date: Mar 2009
Location: Rotterdam, The Netherlands
Posts: 1,532
Rep Power: 23
ngj will become famous soon enoughngj will become famous soon enough
Hi Patricio

Thanks for the quick answer. I will download 1.5. and look into it.

Best regards,

Niels
__________________
Please note that I do not use the Friend-feature, so do not be offended, if I do not accept a request.
ngj is offline   Reply With Quote

Old   September 12, 2008, 09:06
Default Hi all I have tried to find
  #5
ngj
Senior Member
 
Niels Gjoel Jacobsen
Join Date: Mar 2009
Location: Rotterdam, The Netherlands
Posts: 1,532
Rep Power: 23
ngj will become famous soon enoughngj will become famous soon enough
Hi all

I have tried to find some documentation on the MULES-procedure, but on Web of Science I can only find references to the "animal"-kind of MULES.

Further in Henrik Ruches he describes what looks like the used procedure, but refer to a N_a_b_l_a Ltd technical note.

Thus is is possible that

H.G.Weller, Derivation, modelling and solution of the conditionally averaged two-phase flow equations. Technical Report TR/HGW/02, N_a_b_l_a Ltd, 2002

could be made available? If anyone knows another source of documentation I would be happy to know about it.

Best regards and a good weekend to all,

Niels
__________________
Please note that I do not use the Friend-feature, so do not be offended, if I do not accept a request.
ngj is offline   Reply With Quote

Old   September 12, 2008, 10:50
Default MULES was invented by Henry la
  #6
Senior Member
 
Eugene de Villiers
Join Date: Mar 2009
Posts: 724
Rep Power: 11
eugene is on a distinguished road
MULES was invented by Henry last year (or was it 2006?) and nothing has ever been published, so you aren't likely to find any documentation about it.
eugene is offline   Reply With Quote

Old   September 13, 2008, 05:20
Default Hi @Eugene Okay, I am s
  #7
ngj
Senior Member
 
Niels Gjoel Jacobsen
Join Date: Mar 2009
Location: Rotterdam, The Netherlands
Posts: 1,532
Rep Power: 23
ngj will become famous soon enoughngj will become famous soon enough
Hi

@Eugene

Okay, I am sorry to hear that, but there is of course nothing to do about it.

@Other

I have tried to shift to a MULES::implicitSolver in interFoam, but I keep running it problems with my fvSolution file. From the source "MULESImplicit" should be a subDict in the gamma-solution file, thus I have added this to the file:

gamma PBiCG
{
MULESImplicit
{
maxIter 1000;
nLimiterIter 10;
maxUnboundedness 1;
CoCoeff 0.2;
}
preconditioner DILU;
tolerance 1e-06;
relTol 0;
};

thus even though I have added it as a subDict, I keep getting this error message:

keyword MULESImplicit is undefined in dictionary "/home/ngj/OpenFOAM/ngj-1.5/run/tutorials/interFoam/damBreak/system/fvSolution:: gamma"

file: /home/ngj/OpenFOAM/ngj-1.5/run/tutorials/interFoam/damBreak/system/fvSolution::g amma from line 47 to line 54.

From function dictionary::subDict(const word& keyword)
in file db/dictionary/dictionary.C at line 288.

FOAM exiting

Thus if any knows how to set the gamma-part of fvSolution, then please help.

Best regards,

Niels

P.S. For any, do not take the values in the subDict seriously, as I have not looked into the meaning behind those yet.
__________________
Please note that I do not use the Friend-feature, so do not be offended, if I do not accept a request.
ngj is offline   Reply With Quote

Old   September 13, 2008, 07:16
Default Hi Niels! I am sorry that I
  #8
Member
 
Kevin Maki
Join Date: Mar 2009
Location: Ann Arbor, MI, USA
Posts: 37
Rep Power: 7
kjmaki is on a distinguished road
Hi Niels!

I am sorry that I can't help you with the MULESImplicit, but I find it strange that the MULESExplicit controls are read from the PISO dict, and the Implicit are from the gamma dict. Do you know why they would do that?

Also, there is some mention on the gamma transport equation that FOAM uses in the thesis by Rusche (2002), sec 4.2.1. You will see that it references private communication with Weller for the details though.

Have a great weekend!

Kevin
kjmaki is offline   Reply With Quote

Old   September 13, 2008, 08:31
Default Hi Niels I suppose that you
  #9
Member
 
Patricio Bohorquez
Join Date: Mar 2009
Location: Jaén, Spain
Posts: 87
Rep Power: 7
pbohorquez is on a distinguished road
Hi Niels

I suppose that you have replaced the files gamma* of interFoam with those from interPhaseChangeFoam, commented the lines related to Sp & Su in gammaEqn.H and call MULES::implicitSolve(oneField(), gamma, phi, phiGamma, zeroField(), zeroField(), 1, 0); (or similar)

Then you must try this option instead of the one you proposed:
gamma
MULESImplicit
{
maxIter 1000;
nLimiterIter 10;
maxUnboundedness 1;
CoCoeff 0.2;
solver PBiCG
{
preconditioner DILU;
tolerance 1e-06;
relTol 0;
};
};

and add to fvSchemes the following line:
div(rhoPhi,U) Gauss limitedLinearV 1; It works.




Patricio
pbohorquez is offline   Reply With Quote

Old   September 13, 2008, 08:36
Default Hi Niels I suppose that you
  #10
Member
 
Patricio Bohorquez
Join Date: Mar 2009
Location: Jaén, Spain
Posts: 87
Rep Power: 7
pbohorquez is on a distinguished road
Hi Niels

I suppose that you have replaced the files gamma* of interFoam with those from interPhaseChangeFoam, commented the lines related to Sp & Su in gammaEqn.H and call MULES::implicitSolve(oneField(), gamma, phi, phiGamma, zeroField(), zeroField(), 1, 0); (or similar)

Then you must try this option instead of the one you proposed:
gamma
MULESImplicit
{
maxIter 1000;
nLimiterIter 10;
maxUnboundedness 1;
CoCoeff 0.2;
solver PBiCG
{
preconditioner DILU;
tolerance 1e-06;
relTol 0;
};
};

and add to fvSchemes the following line: div(rhoPhi,U) Gauss limitedLinearV 1; It works. I have sent a message to your email with the files

Patricio
Pirlu likes this.
pbohorquez is offline   Reply With Quote

Old   September 13, 2008, 11:59
Default Hi Patricio Yes, I have cha
  #11
ngj
Senior Member
 
Niels Gjoel Jacobsen
Join Date: Mar 2009
Location: Rotterdam, The Netherlands
Posts: 1,532
Rep Power: 23
ngj will become famous soon enoughngj will become famous soon enough
Hi Patricio

Yes, I have changed the gamma* files, and I will get to work a.s.a.p.

Again, thanks for your kind help.

/ Niels
__________________
Please note that I do not use the Friend-feature, so do not be offended, if I do not accept a request.
ngj is offline   Reply With Quote

Old   September 14, 2008, 14:57
Default Dear Niels, i have been fol
  #12
caw
Member
 
Christian Winkler
Join Date: Mar 2009
Location: Mannheim, Germany
Posts: 63
Rep Power: 7
caw is on a distinguished road
Dear Niels,

i have been following up this thread and tried the impicit version of interFoam myself.
Out of curiosity: What do you try to achive by using an implicit formulation for the gamma equation?
And do you succeed?

Thing that spring to my mind:
- stability -> higher time steps
- steady state solutions

Could you comment on that please?

Best regards
Christian
caw is offline   Reply With Quote

Old   September 16, 2008, 08:30
Default Hi Christian Sorry for the
  #13
ngj
Senior Member
 
Niels Gjoel Jacobsen
Join Date: Mar 2009
Location: Rotterdam, The Netherlands
Posts: 1,532
Rep Power: 23
ngj will become famous soon enoughngj will become famous soon enough
Hi Christian

Sorry for the wait, I am in the middle of a not-coorporating reinstall, so I will make it short.

The actual goal was to consider if the implicit solver did give raise to a different exchange of energy between water and air. I, and I know others have the same problem, get large velocities in the air phase, significantly larger than the wave propagation speed.

Due to reinstallation, I have not reached a conclusion, thus this is the closests I can get.

Generally I have not experienced instability problems with waves, except if they break and I use a laminar solver, then the energy cannot be dissipated at a significantly large enough rate.

Best regards,

Niels
__________________
Please note that I do not use the Friend-feature, so do not be offended, if I do not accept a request.
ngj is offline   Reply With Quote

Old   April 6, 2009, 10:42
Default
  #14
New Member
 
SJ
Join Date: Mar 2009
Posts: 4
Rep Power: 7
santhanuj is on a distinguished road
can anyone tell me how the relative velocity is calculated???
santhanuj is offline   Reply With Quote

Old   June 29, 2009, 13:27
Default
  #15
Senior Member
 
isabel
Join Date: Apr 2009
Location: Spain
Posts: 167
Rep Power: 7
isabel is on a distinguished road
I need to solve the gamma equation in interFoam. But I want to add a source as that:

d(gamma)/dt + div(U*gamma) + div(phigamma) = source

How can I do this? Perhaps with this line: ?

MULES:: implicitSolve(gamma,phi,phiGamma,source)
isabel is offline   Reply With Quote

Old   June 30, 2009, 05:39
Default
  #16
ngj
Senior Member
 
Niels Gjoel Jacobsen
Join Date: Mar 2009
Location: Rotterdam, The Netherlands
Posts: 1,532
Rep Power: 23
ngj will become famous soon enoughngj will become famous soon enough
Hi Isabel

Please look into the source in the folder:

~/OpenFOAM/src/finiteVolume/fvMatrix/solvers/MULES

and you will be able to find out about the syntax.

Best regards,

Niels
ngj is offline   Reply With Quote

Old   June 30, 2009, 07:54
Default
  #17
Senior Member
 
isabel
Join Date: Apr 2009
Location: Spain
Posts: 167
Rep Power: 7
isabel is on a distinguished road
Thank you very much, ngj
The key is in MULESTemplates.C in these lines:


fvScalarMatrix psiConvectionDiffusion
(
fvm::ddt(rho, psi)
+ fv::gaussConvectionScheme<scalar>(mesh, phi, UDs).fvmDiv(phi, psi)
- fvm::Sp(Sp, psi)
- Su
);


I think that the equation that it is solving is:

d(rho*psi)/dt + div(phi*psi) - Sp*psi - Su = 0

Am I right?
isabel is offline   Reply With Quote

Old   July 7, 2009, 04:29
Default
  #18
Senior Member
 
Sandy Lee
Join Date: Mar 2009
Posts: 207
Rep Power: 8
sandy is on a distinguished road
Quote:
Originally Posted by isabel View Post
Thank you very much, ngj
The key is in MULESTemplates.C in these lines:


fvScalarMatrix psiConvectionDiffusion
(
fvm::ddt(rho, psi)
+ fv::gaussConvectionScheme<scalar>(mesh, phi, UDs).fvmDiv(phi, psi)
- fvm::Sp(Sp, psi)
- Su
);


I think that the equation that it is solving is:

d(rho*psi)/dt + div(phi*psi) - Sp*psi - Su = 0

Am I right?
==================================

Hi, it seems that you lost the compressible term: div(gamma*(1-gamma)*phi). I guess the gamma equation should be as follows:

d(rho*gamma)/dt + div(phi*gamma) + div(gamma*(1-gamma)*phi) - Sp*gamma - Su = 0

In MULESTemplates.C,
phiPsi = phiGamma = phi*gamma + gamma*(1-gamma)*phi

is it right? If that, in gammaEqu.H, why Su = divU*gamma + vDotcAlphal ? It look like that the term divU*gamma was repeatedly solved ??

I knew, to the gamma transport equation,
Source term = vDotvAlphal * gamma + (1 - gamma) * vDotcAlphal = (vDotvAlphal - vDotcAlphal) * gamma + vDotcAlphal.
So, Sp = (vDotvAlphal - vDotcAlphal) * gamma , and it will be solved implicitly.
Su = vDotcAlphal, and it is an explicit term in this equation.

but again, why Su also includes the term divU*gamma in gammaEqu.H ? If the MULES::implicitSolver was chose, this term should be deleted, right?
sandy is offline   Reply With Quote

Old   July 7, 2009, 13:28
Default
  #19
Senior Member
 
isabel
Join Date: Apr 2009
Location: Spain
Posts: 167
Rep Power: 7
isabel is on a distinguished road
Thank you very much, sandy.


I have been studying the interPhaseChange solver carefully.
As you say, in gammaEqn.H we define the variable phigamma:


phigamma = phi*gamma + gamma*(1-gamma)*phir
Sp = vDotvAlphal – vDotcAlphal
Su = div(U)*gamma + vDotcAlphal


And then, when we execute MULES::explicitSolve(oneField(),gamma,phi,phiGamma ,Sp,Su,1,0);
we associate:

rho → oneField ()
psi → gamma
phi → phi
phiPsi → phigamma
Sp → Sp
Su → Su
psiMax → 1
psiMin → 0


and then, the key is in this lines of MULESTemplates.C:


fvScalarMatrix psiConvectionDiffusion
(
fvm::ddt(rho, psi)
+ fv::gaussConvectionScheme<scalar>(mesh, phi, UDs).fvmDiv(phi, psi)
- fvm::Sp(Sp, psi)
- Su
);

......


solve
(
psiConvectionDiffusion + fvc::div(lambda*phiCorr),
MULEScontrols.lookup("solver")
);


That I think that the equation is


d(1*psi)/dt + div(phigamma) + Sp*gamma - Su = 0



I don't know what means this line:
fv::gaussConvectionScheme<scalar>(mesh, phi, UDs).fvmDiv(phi, psi)

but I think you are right, div(U) is repeated. I will ask for my advisors and I will confirmate.

Do you know what these lines means?


slicedSurfaceScalarField lambda
(
IOobject
(
"lambda",
mesh.time().timeName(),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE,
false
),
mesh,
dimless,
allLambda,
false // Use slices for the couples
);
isabel is offline   Reply With Quote

Old   July 7, 2009, 19:20
Default
  #20
Senior Member
 
Sandy Lee
Join Date: Mar 2009
Posts: 207
Rep Power: 8
sandy is on a distinguished road
but I think you are right, div(U) is repeated. I will ask for my advisors and I will confirmate.

Do you know what these lines means?


slicedSurfaceScalarField lambda
(
IOobject
(
"lambda",
mesh.time().timeName(),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE,
false
),
mesh,
dimless,
allLambda,
false // Use slices for the couples
);[/QUOTE]
=============================

Hi isabel, you have a great advisor, right? You are lucky. I think, in above code, lambda = allLambda, if you want know more informations about it, you can change the code as follows:

-------------------------------------
slicedSurfaceScalarField lambda
(
IOobject
(
"lambda",
mesh.time().timeName(),
mesh,
IOobject::NO_READ,
IOobject::AUTO_WRITE,
false
),
mesh,
dimless,
allLambda,
false // Use slices for the couples
);
-----------------------------------

Then, you can get an detailed output file in every iterative step about the "lambda" field.

By the way, this kind of method can also help us to easily debug the codes in OF.

But, now I still don't know what means this line:
fv::gaussConvectionScheme<scalar>(mesh, phi, UDs).fvmDiv(phi, psi), and how to deal with the divU*gamma of Su ..... if you know them, please let me know too. Thanks.
sandy is offline   Reply With Quote

Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Euler Equation Implicit Upwind Schemes felixrieper OpenFOAM Running, Solving & CFD 1 February 9, 2014 00:58
FEM pressure poisson equation (Implicit) cfd-beginner Main CFD Forum 0 August 9, 2005 13:32
Compressive term in gamma equation Ali (Ali) OpenFOAM Running, Solving & CFD 0 February 17, 2005 17:19
Implicit equation solving Dr B.M. Smith (Smith) OpenFOAM Running, Solving & CFD 2 December 10, 2004 05:36
implicit solver john CD-adapco 1 November 11, 2003 08:55


All times are GMT -4. The time now is 21:31.