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/)
-   -   How does MULES work? (https://www.cfd-online.com/Forums/openfoam-solving/118217-how-does-mules-work.html)

Natalie2210 May 23, 2013 02:46

How does MULES work?
 
Hi!

Is there any reference somewhere which explains how MULES is working?

Thank you,
Natalie

santiagomarquezd May 28, 2013 12:07

Hi, check my Ph.D. thesis out. Let me know if you have problems to read it. MULES is explained in chapter 2 and its use in interFoam in chapter 5.

The link to my PhD thesis is provided in my user page at openfoamwiki.net: http://openfoamwiki.net/index.php/User:Santiagomarquezd

Regards

Natalie2210 June 4, 2013 02:21

Hi!

OK, I'll ask differently, but thanks to your link!

In the porousInterFoam solver, the alpha-equation reads

d(alpha)/dt + \nabla *(U alpha)+ \nabla * (Ur alpha (1-alpha)) = 0

where alpha is the phase-fraction, U the velocity and Ur the relative velocity between the two phases.

Now in alphaEqn.H, the above equation is solved by calling

Code:


MULES::explicitSolve(alpha, phi, phiAlpha,1,0)

where phiAlpha contains the discretized fluxes

\nabla *(U alpha)+ \nabla * (Ur alpha (1-alpha))

and 1 and 0 are the range of alpha. By the way, why do you need "phi" in this call?

However, for flow through porous media I need to modify the phase fraction equation which reads now

d(gamma * alpha)/dt + \nabla *(U alpha)+ \nabla * (Ur alpha (1-alpha)) = 0

where gamma is the porosity.

The call to MULES then reads

Code:


MULES::explicitSolve(gamma,alpha,phi,phiAlpha,zeroField(),zeroField(),1,0);

Now I have looked into the code and it seems to me that this calls directly a function in the file MULESTemplates.C (whereas the previous call for the ordinary phase-fraction equation calls a function in MULES.C which in turn calls a function in MULESTemplates.C). However, in my code, gamma is a volScalarField and in MULESTemplates.C, this argument should be of rhoType. Does the call to MULES including gamma really solve the equation I want it to solve?

Thanks a lot for your advice,
Natalie

Natalie2210 June 4, 2013 04:48

Ok,
I have now been testing the call to MULES including gamma and there is no difference to the one without gamma, although there should be. So I guess, gamma is not taken into account at all.. Does someone have an idea how I could achieve that?

Greetings,
Natalie

Natalie2210 June 4, 2013 06:12

Ok, problem solved, I'll stop troubleshooting now :)

Natalie

Kirv June 4, 2013 06:20

How did you solve it? I would like to know because I was asking myself almost the same question as you did?

Kirv

santiagomarquezd June 4, 2013 07:47

Hi Natalie respect to you question:

Quote:

Originally Posted by Natalie2210 (Post 431805)
Hi!

Code:


MULES::explicitSolve(alpha, phi, phiAlpha,1,0)

where phiAlpha contains the discretized fluxes

\nabla *(U alpha)+ \nabla * (Ur alpha (1-alpha))

and 1 and 0 are the range of alpha. By the way, why do you need "phi" in this call?

the answer is in MULESTemplates.C

Code:

00654    surfaceScalarField phiBD(upwind<scalar>(psi.mesh(), phi).flux(psi));
phi is used to determine the upwind direction of the flux in order to construct a low order flux for the FCT method (section 2.6.1 in my Ph.D. thesis).

Regards.

Natalie2210 June 4, 2013 11:41

Hi Kirv,

well, I was actually using the wrong file in my solver and therefore wondering whether the call to

MULES::explicitSolve(gamma,alpha,phi,phiAlpha,zero Field(),zeroField(),1,0);
really solved the equation I wanted it to solve, namely,

d(gamma * alpha)/dt + nabla (...) = 0 .

Using the correct alphaEqn.H, however, showed that this is actually the case.

Thank you, Santiago, for your help! I have actually found a document (not your PhD, but before you posted the link to it) written by you on the discretization technique within OpenFOAM and functionality of the interFoam
solver. This was really, really helpful to me understanding how OF works, thank you so much for sharing it!

Kind regards,
Natalie

Kirv June 5, 2013 03:47

Hi Natalie,

thank you for your response, so passing gamma to MULES in the way you described above should be ok?

If you were referring to "Description and utilization of interFoam multiphase solver", I have to agree with you, it is very helpful. Thank you Santiago for that!

Regards,
Kirv

Natalie2210 June 5, 2013 07:24

Yes, passing gamma should be ok.

Quote:

If you were referring to "Description and utilization of interFoam multiphase solver", I have to agree with you, it is very helpful. Thank you Santiago for that!
This was the title of the document :)

Kind regards,
Natalie

sharonyue June 12, 2013 21:57

Quote:

Originally Posted by santiagomarquezd (Post 430566)
Hi, check my Ph.D. thesis out. Let me know if you have problems to read it. MULES is explained in chapter 2 and its use in interFoam in chapter 5.

https://drive.google.com/file/d/0B2l...it?usp=sharing

Regards

Hi Santiago,

I cannot download your thesis, can you send me one copy? Email: chivasbeijing@qq.com

Thanks

santiagomarquezd June 12, 2013 22:01

Hi, it is only available for reading by now. Once I'd ended the final corrections I will free it for public downloading.

Regards.

sharonyue June 12, 2013 22:04

Quote:

Originally Posted by santiagomarquezd (Post 433692)
Hi, it is only available for reading by now. Once I'd ended the final corrections I will free it for public downloading.

Regards.

Okay, Thanks anyway bro. :)

santiagomarquezd March 22, 2014 12:06

Please download the final version of the thesis for reference:

https://drive.google.com/file/d/0B2l...it?usp=sharing

Regards

zhaoshiyu May 15, 2017 11:18

Quote:

Originally Posted by Natalie2210 (Post 431805)
Hi!

OK, I'll ask differently, but thanks to your link!

In the porousInterFoam solver, the alpha-equation reads

d(alpha)/dt + \nabla *(U alpha)+ \nabla * (Ur alpha (1-alpha)) = 0

where alpha is the phase-fraction, U the velocity and Ur the relative velocity between the two phases.

Now in alphaEqn.H, the above equation is solved by calling

Code:


MULES::explicitSolve(alpha, phi, phiAlpha,1,0)

where phiAlpha contains the discretized fluxes

\nabla *(U alpha)+ \nabla * (Ur alpha (1-alpha))

and 1 and 0 are the range of alpha. By the way, why do you need "phi" in this call?

However, for flow through porous media I need to modify the phase fraction equation which reads now

d(gamma * alpha)/dt + \nabla *(U alpha)+ \nabla * (Ur alpha (1-alpha)) = 0

where gamma is the porosity.

The call to MULES then reads

Code:


MULES::explicitSolve(gamma,alpha,phi,phiAlpha,zeroField(),zeroField(),1,0);

Now I have looked into the code and it seems to me that this calls directly a function in the file MULESTemplates.C (whereas the previous call for the ordinary phase-fraction equation calls a function in MULES.C which in turn calls a function in MULESTemplates.C). However, in my code, gamma is a volScalarField and in MULESTemplates.C, this argument should be of rhoType. Does the call to MULES including gamma really solve the equation I want it to solve?

Thanks a lot for your advice,
Natalie

Hi
May I ask why you add
zeroField() in your MULES, what does this mean?
And what if I want to modify the alpha equation to d(gamma * alpha)/dt + \nabla *(gamma*alpha*U)+ \nabla * (gamma*Ur alpha (1-alpha)) = 0 ?

Elham September 27, 2017 10:32

Quote:

Originally Posted by zhaoshiyu (Post 648943)
Hi
May I ask why you add
zeroField() in your MULES, what does this mean?
And what if I want to modify the alpha equation to d(gamma * alpha)/dt + \nabla *(gamma*alpha*U)+ \nabla * (gamma*Ur alpha (1-alpha)) = 0 ?

zeroFields are for source terms.

Elham September 27, 2017 10:34

Hi,

I have source terms in multiphaseMixture.C of multiphaseinterFoam that are the function of other species. Anybody knows if I can have some unknowns in source terms of MULES?

Cheers,

Elham

randolph March 20, 2021 16:55

For MULESCorr, the porosity field should also be included in the fvmDdt.

Thx,
Rdf


All times are GMT -4. The time now is 11:40.