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

1. ## All about the PIMPLE algorithm - Part II

hi,

Quote:
I have a simple question about Pimple algorithm. I'm using pimple for my solver in combustion, but I don't know why still pressure doesn't converge after long time simulation.

The residual is still same as Piso for pressure.

I'm using GAMG solver for pressure with tolerance 1e-9 for pressure.3 iterations for inner part and 50 iterations for outer iteration and normally pressure reached 10e-9 in 10-12 iterations.

The discretization method is limitedlinear 1, and BCs is zerGrad for pressure in inlet and totalPressure in outlet. for velocity fixedValue in inlet and inletOutlet for outlet.

Could you please tell me why still I have oscillation in pressure residual between 0.1 to 0.001 without convergence?
some thoughts

1) maybe you should refine your mesh and doing the simulation again
2) depending of which OpenFOAM you are currently using you could try out a PCG or ICCG solver to calculate your pressure
3) if checkMesh shows some errors it could also help to add one or two nonorthogonal corrector steps in fvSolution to improve the quality of your results
Posted August 24, 2017 at 06:48 by fimbull
2. ## All about the PIMPLE algorithm - Part II

Hello all,

I have a simple question about Pimple algorithm. I'm using pimple for my solver in combustion, but I don't know why still pressure doesn't converge after long time simulation.

The residual is still same as Piso for pressure.

I'm using GAMG solver for pressure with tolerance 1e-9 for pressure.3 iterations for inner part and 50 iterations for outer iteration and normally pressure reached 10e-9 in 10-12 iterations.

The discretization method is limitedlinear 1, and BCs is zerGrad for pressure in inlet and totalPressure in outlet. for velocity fixedValue in inlet and inletOutlet for outlet.

Could you please tell me why still I have oscillation in pressure residual between 0.1 to 0.001 without convergence?
Posted July 19, 2017 at 02:07 by rezaeimahdi
3. ## All about the PIMPLE algorithm - Part II

I would say yes, with rigid body FSI, updating of the mesh in every outer loop is a must for dynamic simulations. Both the interFoam solver and sixDoF solvers should be required to converge before moving on to the next time step. This usually takes about 6 - 10 iterations even for the most dynamic cases with a reasonably good adaptive relaxation technique.

Quote:
Originally Posted by j91
Hi,

When using PIMPLE in a dynamic mesh solver such as interDyMFoam, the solver seems to execute mesh.update() in every PIMPLE iteration. Is this usually necessary or do you happen to know if it's appropriate to modify this and only update the mesh once per timestep? It's quite computationally intensive to update it in every outer loop.

EDIT: My mistake, the reason for the remeshing in every outer loop correction was due to accidentally mixing together some settings for sixDoF and prescribed motion solvers. The question might still be relevant for other cases, but in my case PIMPLE is running smoothly again.

Thank you for the guide, it was a useful read.

Thanks,
Jonathan
Posted March 7, 2017 at 04:38 by haze_1986
4. ## All about the PIMPLE algorithm - Part II

Hi,

When using PIMPLE in a dynamic mesh solver such as interDyMFoam, the solver seems to execute mesh.update() in every PIMPLE iteration. Is this usually necessary or do you happen to know if it's appropriate to modify this and only update the mesh once per timestep? It's quite computationally intensive to update it in every outer loop.

EDIT: My mistake, the reason for the remeshing in every outer loop correction was due to accidentally mixing together some settings for sixDoF and prescribed motion solvers. The question might still be relevant for other cases, but in my case PIMPLE is running smoothly again.

Thank you for the guide, it was a useful read.

Thanks,
Jonathan
Posted March 5, 2017 at 21:50 by j91
Updated March 6, 2017 at 00:26 by j91
5. ## All about the PIMPLE algorithm - Part II

Dear Emjay,

first check out the section about the PIMPLE algo in my book.
Posted October 22, 2016 at 18:12 by Tobi
6. ## All about the PIMPLE algorithm - Part II

Hi Tobi,

are there any advantages using a PIMPLE in a transient simulation when the Courant Number is below 1?

My thoughts are that when the Co-Number is below 1 the nOuterCorrectors could set 1 and don't waste any computational resources.
But i don't know if there are any advantages to increase nCorrectors when the solver is working in PISO mode.

And by the way, in that case that the solver is running in pimple mode with a Courant number greater than 1,
are there any artifacts like wiggles/overshoots when calculating with a passive scalar?

Best wishes,
emjay
Posted October 22, 2016 at 09:59 by emjay
Updated October 22, 2016 at 14:30 by emjay
7. ## All about the PIMPLE algorithm - Part II

Than you so much for your very useful explanation of PimpleFOAM
Posted February 6, 2016 at 20:23 by aghsin
8. ## All about the PIMPLE algorithm - Part II

Hi Gary,

ohh... my fault. I read some old comment and replayed.
You can Print out the residuals using gnuplot - search the forum to get a script. I think also in the foamwiki you can find something.

To your values... relTol should be 0. You can play with the other value. At least start your simulation and check if your solver realize the convergence criterions!
Posted December 18, 2015 at 08:58 by Tobi
9. ## All about the PIMPLE algorithm - Part II

Thanks Tobi

how can I print out the residual at the end of each pimple loop for U T or P?

Regards,
Gary
Posted December 18, 2015 at 08:35 by Gary
10. ## All about the PIMPLE algorithm - Part II

wrong entry.
Posted December 18, 2015 at 08:11 by Tobi
11. ## All about the PIMPLE algorithm - Part II

### residualControl does not work

Hi Tobi,

I found the your tips of using PIMPLE very useful.

I don't know why somehow the residualControl does work for my case.

I deliberately set very big values see below and set nOuterCorrectors = 30. I have expected the PIMPLE loop will exit without reaching the maximum (30), but in fact at each time level the PIMPLE loop exits only after reaching the maximum.

could you think of any thing possibly wrong in my fvSolution file?

residualControl
{
"T.*|U.*"
{
tolerance 1;
relTol 1;
}

"p_rgh.*|alpha.liquid.*"
{
tolerance 1;
relTol 1;
}
}

Many thanks

Gary
Posted December 18, 2015 at 07:40 by Gary
12. ## All about the PIMPLE algorithm - Part II

excellent and wonderful explanation on PIMPLE! what you post here reaaaally made my day. thanks so much Tobi.

but one question: in the equations subDict in relaxationFactors Dict, the relaxed equation is UEqn but why it gives "U|k|epsilon" and "(U|k|epsilon)Final" ? is this related to the turbulence modeling? how should i organize my equations subDict if i use the zeroEquation turbulent model? ( my UEquation: turbulence->divR(U) )

BTW, i've got several questions about the shallowWaterFoam implemented with the PIMPLE algo post here. http://www.cfd-online.com/Forums/ope...t-h-relax.html
do you mind taking a look?

best regards,

karelke
Posted November 20, 2015 at 01:11 by cfdopenfoam
Updated November 21, 2015 at 07:14 by cfdopenfoam
13. ## All about the PIMPLE algorithm - Part II

If you set lower values you will be less accurate within one time step. This depend on your problem. Imagine a sine wave and you want to approximate it. The first necessary thing is that you should be accurate enough in time to resolve the curvature. If you divide the timestep in a way that you have four time steps within one period (2pi) then you can imagine that you will not get all the informations of the problem. Furthermore consider that the residual control only work if you are using outer loop to leave the outer loop for the next time steps. Most people do not consider that. In the case of the sine wave, the more accurate you want, means that the calculated values should be at the sine curvature itself, the lower the residuals should be. Its not so easy to answer as you already mentioned. Also I have not the time to make a general investigation to that.

Thanks for the feedback to my website.
Posted November 10, 2015 at 04:55 by Tobi
14. ## All about the PIMPLE algorithm - Part II

Hi Tobi,

I was talking about the residual control in the PIMPLE-Algorithm. Regarding my question I was not clear. I wanted to know how you decide what values to set in residual control. But I assume it is not so easy to answer. What I will do now is run a few simulations and test different values. So I can see how it changes the result in my case.
Thank you for your literature suggestion. I'll read this section as soon as I have access to this book again. By the way, you have an interesting website.

Best regards,

Kate
Posted November 10, 2015 at 04:23 by KateEisenhower
15. ## All about the PIMPLE algorithm - Part II

About what residual control are you talking? In SIMPLE or PIMPLE algorithm?

Normally it is depending on your problem and the amount of cells you have and so furth. I can not give you any literature nor links. Maybe you will find something in Ferziger Perić. Literature no. [1] here: http://www.holzmann-cfd.de/index.php/en/literature

I know that there is a section about error estimation and stuff like that which will actual belong to the residuals.
Posted November 9, 2015 at 04:23 by Tobi
16. ## All about the PIMPLE algorithm - Part II

Dear Tobi,

thank you for this reply. Can you give any hints how the residual control values depend on the problem, or can you recommend some literature or links on this topic?
Indeed I am doing a simpleFoam simulation on a wing profile. Since I'm particulary interested in high AoA, I want to do a transient simulation too.

Best regards,

Kate
Posted November 9, 2015 at 03:50 by KateEisenhower
17. ## All about the PIMPLE algorithm - Part II

Dear Kate,

for the residual control I put values from 1e-4 to 1e-8 depending on my problem. But do not mix up that residualControl with those used within the SIMPLE algorithm. In PIMPLE we use it to abort one timestep iteration and go on in time, however using SIMPLE its the residuals to stop the whole simulation. If you are doing a steady-state simulation I assume that you are using a SIMPLE solver and therefor your explanation is correct. Always check out the values you are interested. Sometimes it could happen that the pressure / velocity has reached a low level residual but the value you are interested is still not converged.

In your case you are doing everything well. Also you could implement some code that will check out the drag and lift coeffs. If the difference from two enclosed timesteps are less than some limit you can stop the simulation.

Kind regards,
Tobi
Posted November 9, 2015 at 03:34 by Tobi
18. ## All about the PIMPLE algorithm - Part II

Hi Tobi,

many thanks for this very helpful blog entry! I have one question though: How do you decide what value you put as tolerance in residual control?
When running a steady-state simulation I treat it this way: I am montitoring the residuals and when they are not decreasing any more on a already low level I look at the drag coefficient C_W for example and when this value is not changing anymore I am stopping the simulation and consider it as converged.

Best regards,

Kate
Posted November 5, 2015 at 11:46 by KateEisenhower
19. ## All about the PIMPLE algorithm - Part II

Hi Tobi;

If i relax U, i do not need storePrevIter(). Calling UEqn.relax(). {Directly working over the matrix}
If i relax p, i need storePrevIter(). Calling p.relax(). {will relax with the variable stored in p.storepreviousIter()}.
[http://www.cfd-online.com/Forums/openfoam-solving/59183-relaxation-factors-transient-solvers.html]

I work with interFoam and pitzDaily is new to me. Though i change the relaxation from 0{constant result expected} to 1{dependent only over the present time computation} for U, I get the same magnitude for 'U'. I run the simulation for 1 sec just to check. Am i running the sim for very less time or am i doing wrong?

NOTE: I am using nOuterCorrections =1. Though I think this shall not effect the behavior or values computed.

-Saideep
Posted August 20, 2015 at 07:05 by Saideep
20. ## All about the PIMPLE algorithm - Part II

Dear Saideep,

I am sorry but I can not tell you whats wrong in your case. Unfortunatelly I have no time for checking the stuff about storePrevIter() but I made a test with 2.3.1 and figured out that the pimple algorithm is more stable now (as far as I could find out in the few minutes).
Posted August 18, 2015 at 08:16 by Tobi

All times are GMT -4. The time now is 18:07.