Hi guys, I am newbie to Ope
I am newbie to OpenFOAM. Could somebody explain the code about gammaEqn in interFoam?
surfaceScalarField phic = mag(phi/mesh.magSf());
phic = min(interface.cGamma()*phic, max(phic));
What is "cGamma"? Where can I find its definition?
surfaceScalarField phir = phic*interface.nHatf();
for (int gCorr=0; gCorr<nGammaCorr; gCorr++)
surfaceScalarField phiGamma =
-fvc::flux(-phir, scalar(1) - gamma, gammarScheme),
What are "fvc::flux" and "gammarScheme"? What is the definition of "phiGamma"?
MULES::explicitSolve(gamma, phi, phiGamma, 1, 0);
rhoPhi = phiGamma*(rho1 - rho2) + phi*rho2;
rhoPhi is mass flux (rho·uf·Sf), right?
In Rusche's thesis, the indicator equation is solved by Eq.(3.58)or (3.59). Why I can not find this equation in gammaEqn.h ??
Please give me some hint.
Thank you in advance.
Hi guys, I am newbie to O
Let me try to help you.
All other readers are welcome to correct me and help both of us.
phi=uf & Sf
(It's the dot product of the velocity at the face and the face vector, I will use & as the dot product)
So phic = |phi/|Sf||
You will find it in fvSolution in the PISO sub-dictionary.
This artificial compression velocity is Ur in (3.58) in Rusche's thesis.
So to calculate phir is to calculate phir = Ur & Sf! This is exactly what is done in the following steps!
With cGamma=0 you will simply skip the additional compression, with cGamma=1 the gamma-field will be solved like (3.58) in Rusche!
You will find the definitions for nHat and nHatf in the interfaceProperties.C and .H files.
nHatf = nHat & Sf !
nHat = grad(gamma)/(|grad(gamma)| + deltaN)
deltaN is a very small stabilization factor in case |grad(gamma)| will become 0 (the denumerator would be zero without deltaN, which will lead to termination of the program).
This is the case outside the transition region of gamma!
I understand it like this.
phiGamma = gamma * (uf & Sf) is the transformed (Gauss theorem) div(u*gamma) in (3.58).
When calling it with fvc::flux(phi,gamma,gammaScheme)
it will be discreizised using the gammaScheme, which is the scheme used for div(phi,gamma) in the fvSchemes dictionary. Have a look at the very first line in gammaEqn.H. The entry for div(phi,gamma) is assigned to the variable gammaScheme.
The same holds for calling -fvc::flux(-phir,scalar(1)-gamma,gammarScheme)
which will lead to a discretization of
(1-gamma)*(Ur & Sf) in (3.58) with the fvScheme for div(phirb,gamma). Calling THIS expression like
leads to a discretization of
gamma*(ur & Sf)*(1-gamma)
So after calculating the fluxes MULES will solve them explicitly in time.
I hope I could help you and would appreciate and further help from the message board, as this is very interesting for me too.
Thanks for such an elaborate explanation. I was looking exactly for this!
MULES::explicitSolve(gamma, phi, phiGamma, 1, 0);
This line means this:
gamma: is the actual value to be solved
phi: is the normal convective flux
phiGamma: U*gamma + gamma*(1-gamma)*U
1, 0 : max and min gamma values
Please correct me if I am wrong.
My doubt is: How can I add a source to this equation? I want to solve this:
d(gamma)/dt + div(phigamma) = Source
How can I add the source term?
http://www.cfd-online.com/Forums/ima...ser_online.gif http://www.cfd-online.com/Forums/ima...reputation.gif http://www.cfd-online.com/Forums/ima...ons/report.gif http://www.cfd-online.com/Forums/ima...c/progress.gif http://www.cfd-online.com/Forums/ima...ttons/edit.gif
did you succeed in implementing a source term into the gamma equation? And would you share you're knowledge?
There is a tutorial in Internet called "Solve Cavitating flow around a 2D hydrofoil using a user modified version of interPhaseChangeFoam"
I have followed that tutorial and tried this:
volScalarField Su = source;
volScalarField Sp = 0;
MULES::implicitSolve(oneField(), gamma, phi, phiGamma, Sp, Su, 1, 0);
The problem runs Ok but I don't have good convergence. I don't know if it is because I have set Sp to zero.
Hi kossity, try to read gammaEqn.H and pdEqn.H of the interPhaseChangeFoam solver, maybe you will find how to add source term to gamma equation.
Hi isable, why you set Sp = 0? Usually it is not useful because it will lead to be disconvergent. People always try to find a way to discrete the source term linearizing (namely Sp*psi + Su) in order to get the "diagonal predominance" of the matrix.
In fact, I also never try to derive this rule :o, however, it was wrote by every CFD book.
My source is cte*(grad(T) & grad(phi)), so I set:
volVectorField gradT = fvc::grad(T);
volVectorField gradpsi = fvc::grad(psi);
Sp = 0;
Su = cte*(gradT & gradpsi);
I don't know how to discretize Sp in order to became different from zero.
I suppose Isabel is right. Source got to be added in the MULES routine.
Finally added some (senseless) source - works. Now it's time to deal with the real source.
If you want more information about the gammaEqn, you must real carefully the file MULESTemplates.C
a: if source term = constant, you need to do nothing;
b: if there is a relationship between source term with the variable psi, you can do two ways:
1) if you use the value psi of the last interative step instead of the current varialbe, the source term is still equal to a constant; however, it will lead to a very very slowly iteration, so this method is not available;
2) you can linearize the source term into (Sp*psi + Su). You need to keep Sp <or= 0 in order to get the diagonal predominance.
Do you understand clearly? I seldom meet Sp = 0 because source terms are always a fuction relationship with the variable psi.
PS: I mean psi = the solved variable in a equation.
I have a problem. I want to add a source like source*psi, and the source is the funcion of runtime. When I use the form like
"MULES::explicitSolve(geometricOneField(), alpha1, phi, phiAlpha, source , geometricZeroField() , 1, 0);"
the result comes not true, the source fraction become complex at the souce place and the surface become inconsistent. I do not know what is wrong? can you give me some advice! Thank you!
different between mDotp() and mDotAlphal()??
Hello OpenFoam users ,
I'm studying on the Kunz model.we know in this model we have two term for mass dest and prod.(m+ and m-)
What mean mDotAlphal() and mDotP() In interphasechangeFoam?
What is the difference between these two?
this discussion is old but i hope that someone is still interested...
I have a question about the deltaN. Sega said:
in interfaceProperties.C deltaN is defined as:
so it depends on the Volume. With decresing Volume i.e. with a mesh refinement deltaN gets bigger!? Does that make sense? To me it looks like it could become a not so small constant that could influence the simulation?
Has anyone more details about the backround of that formula for deltaN and its influence?
Could anybody comment on this please?
It would be very helpful.
Anyway: I did two calculations
1 ) rough grid: the average cell volume is 10 m³ -> deltaN = 4.6e-9
2 ) fine grid: the average cell volume is 0.0001 m³ -> deltaN = 2.2e-7
So maybe the factor is still small enough not to influence the calculation - but I am not sure about it, because the gradients of alpha are also smaller in finer grid...
Thanks a lot for your help
|All times are GMT -4. The time now is 20:15.|