Adding a Source Term to Pressure equation pEqn in SimpleFoam
2 Attachment(s)
Hello foamers,
i'm trying to add a source term in the pressure equation pEqn in SimpleFoam, the way that i'm doing it is : while (simple.correctNonOrthogonal()) { fvScalarMatrix pEqn ( fvm::laplacian(rAU, p) + rAU*source == fvc::div(phi) ); pEqn.setReference(pRefCell, pRefValue); pEqn.solve(); if (simple.finalNonOrthogonalIter()) { phi = pEqn.flux() ; } } the pressure seem to go ok, but the velocity is completely wrong, instead of slowing down it accelerates right after the discontinuity and then slows down. (i'm attaching 2 images) can anyone tell me why this is? also how should i treat a source term for the pressure equation? is there a way to make it implicit? i've been looking around the forum and i couldn't find a post about anyone trying to insert a source term in pEqn. any help would be greatly appreciated thansk to all Oscar 
Hi Oscar,
Could you tell me what your UEqn looks like? Is your source term included in the a)UEqn or b)solve? a) tmp<fvVectorMatrix> UEqn ( fvm::div(phi, U) + turbulence>divDevReff(U) + source ); b) solve(UEqn() == fvc::grad(p) source); Best regards, fumiya 
Hello,
How the source term added in the PEqn??
Have you specified the term "source" in the project directory? can you please upload your case? So, that one can have better glance to it... 
2 Attachment(s)
Hi Tushar,
thanks for the quick response, i'm attaching my case and the solver so you can take a look at it, basically what i'm trying to do is insert a source term in pEqn to generate a pressure jump and velocity discontinuity, kind of the same way you would instert a volume force in uEqn but for some reason i get an acceleration right after my source term and then a deceleration as suppose to just a deceleration like when i insert a volume force and i don't understand why. any ideas would be really helpfull, thanks Oscar 
Hello,
Since you are using SIMPLE approach, so why don't you try using // Store pressure for underrelaxation p.storePrevIter(); in PEqn. after the "adjustPhi(phi, U, p);". Everything appears OK to me, try checking the "system" files. Redefine the relaxationfactors.. for equations... Hope this will resolve your problem... 
Quote:
one easy way to avoid adding the contribution of source to pressure equation is to add source in UEqn directly. then u don't need to do nth. Cheers Mahdi 
hi Mahdi,
thanks for the answer, i have already done the source term in UEqn, my questions is why doesn't a similar term in pEqn work? cause in UEqn i add a pressure gradient source term, and in pEqn i add the divergence of that gradient which should give me the same result but it doesn't and i don't understand why cause the pressure seems to be fine is just the velocity that doesn't work. thanks 
Hi all,
Could you tell me what the difference is if the source term is included in the UEqn or in the solve (UEqn == ) line? Fumiya's post mentioned it but I would like a detailed explanation. Thank you in advance. 
Hi Srivaths,
if you include the source term lets call it force in the UEqn equation, tmp<fvVectorMatrix> UEqn ( fvm::div(phi, U) +Force //+ turbulence>divDevReff(U) == fvOptions(U) ); it will be included in the matrix and carried to the pressure equation. if you put it in (UEqn == ) like this: solve(UEqn() == fvc::grad(p)  force ); it won't be included in the matrix and you have to add the same term in U = HbyA  rAU*fvc::grad(p)  rAU*Force ; for it to have the same effect. if you read all the line codes in Ueqn and pEqn it'll make sense, hope it helps, Oscar 
Thank you Oscar. That was very clear.

Hi Oscar,
When using the first method some wiggles are founded in the solution because forces are applied directly over cell centers. It seems like this is not so good for pressure equation. http://www.cfdonline.com/Forums/ope...lwiggles.html Here it is potential solution for this issue where forces are included in a different way. http://www.cfdonline.com/Forums/ope...tml#post315788 Did you see this U and p variation near your source location? 
All times are GMT 4. The time now is 13:55. 