
[Sponsors] 
Unexpected deltaT decrease in pimpleFoam simulation 

LinkBack  Thread Tools  Search this Thread  Display Modes 
April 6, 2014, 14:21 
Unexpected deltaT decrease in pimpleFoam simulation

#1 
Member
Roberto Pieri
Join Date: Feb 2012
Location: Milan
Posts: 57
Rep Power: 14 
Hi Foamers,
I am working on a pimpleFoam simulation with MRF option activated. I have problem in making the simulation stable to perform 6 seconds. As you can see below, deltaT suddenly decreases and after a lot of iterations the simulation stops with an error. Moreover I encounter a bounding omega warning (with high number of iteration to solve omega equation 1001) before the decrease of deltaT. Is it related to the increasing number of iteration to solve p? Code:
Courant Number mean: 0.219033 max: 10.0022 deltaT = 0.000256884 Time = 1.69945 DILUPBiCG: Solving for Ux, Initial residual = 0.00050968, Final residual = 5.31923e06, No Iterations 2 DILUPBiCG: Solving for Uy, Initial residual = 0.000478035, Final residual = 3.74021e06, No Iterations 2 DILUPBiCG: Solving for Uz, Initial residual = 0.000274494, Final residual = 8.97499e06, No Iterations 2 GAMG: Solving for p, Initial residual = 0.00760123, Final residual = 4.27931e05, No Iterations 5 time step continuity errors : sum local = 4.131e08, global = 9.20692e10, cumulative = 4.54905e06 GAMG: Solving for p, Initial residual = 0.00159695, Final residual = 8.68188e07, No Iterations 8 time step continuity errors : sum local = 8.38347e10, global = 2.37631e11, cumulative = 4.54902e06 DILUPBiCG: Solving for omega, Initial residual = 0.00013723, Final residual = 0.00808422, No Iterations 1001 bounding omega, min: 91365.5 max: 126745 average: 823.181 DILUPBiCG: Solving for k, Initial residual = 0.000550298, Final residual = 6.53352e06, No Iterations 2 ExecutionTime = 7531.18 s ClockTime = 7552 s Courant Number mean: 0.21883 max: 9.99752 deltaT = 0.000256884 Time = 1.6997 DILUPBiCG: Solving for Ux, Initial residual = 0.676568, Final residual = 2.13076e06, No Iterations 4 DILUPBiCG: Solving for Uy, Initial residual = 0.196484, Final residual = 5.24048e06, No Iterations 3 DILUPBiCG: Solving for Uz, Initial residual = 0.341194, Final residual = 7.24752e06, No Iterations 3 GAMG: Solving for p, Initial residual = 0.0180928, Final residual = 0.000168046, No Iterations 4 time step continuity errors : sum local = 1.63347e07, global = 1.0021e08, cumulative = 4.539e06 GAMG: Solving for p, Initial residual = 0.851594, Final residual = 9.52237e07, No Iterations 22 time step continuity errors : sum local = 1319.89, global = 33.0263, cumulative = 33.0263 DILUPBiCG: Solving for omega, Initial residual = 1, Final residual = 2404.53, No Iterations 1001 bounding omega, min: 1.30647e+29 max: 1.85931e+28 average: 3.31278e+27 DILUPBiCG: Solving for k, Initial residual = 0.401606, Final residual = 8.71858e14, No Iterations 1 ExecutionTime = 7543.81 s ClockTime = 7564 s Courant Number mean: 2.44738e+09 max: 3.10915e+15 deltaT = 8.2622e19 > FOAM Warning : From function Time::operator++() in file db/Time/Time.C at line 1055 Increased the timePrecision from 6 to 7 to distinguish between timeNames at time 1.6997 Time = 1.699702 DILUPBiCG: Solving for Ux, Initial residual = 0.0894012, Final residual = 7.65914e06, No Iterations 3 DILUPBiCG: Solving for Uy, Initial residual = 0.0923353, Final residual = 4.08565e06, No Iterations 3 DILUPBiCG: Solving for Uz, Initial residual = 0.0676507, Final residual = 1.5654e07, No Iterations 5 GAMG: Solving for p, Initial residual = 1, Final residual = 0.0062001, No Iterations 5 time step continuity errors : sum local = 1.56288e08, global = 2.77555e09, cumulative = 33.0263 GAMG: Solving for p, Initial residual = 0.0547949, Final residual = 8.07853e07, No Iterations 15 time step continuity errors : sum local = 5.48245e12, global = 2.31016e13, cumulative = 33.0263 DILUPBiCG: Solving for omega, Initial residual = 0.872425, Final residual = 3.91289e15, No Iterations 1 bounding omega, min: 7.84392e+23 max: 3.3123e+25 average: 4.83913e+20 DILUPBiCG: Solving for k, Initial residual = 0.59834, Final residual = 1.01994e06, No Iterations 1 ExecutionTime = 7545.14 s ClockTime = 7566 s Courant Number mean: 3.23617e06 max: 3.33316 deltaT = 9.91465e19 > FOAM Warning : From function Time::operator++() in file db/Time/Time.C at line 1055 Increased the timePrecision from 7 to 9 to distinguish between timeNames at time 1.6997 Time = 1.69970204 DILUPBiCG: Solving for Ux, Initial residual = 0.480664, Final residual = 4.31292e06, No Iterations 3 DILUPBiCG: Solving for Uy, Initial residual = 0.243898, Final residual = 4.23116e07, No Iterations 3 DILUPBiCG: Solving for Uz, Initial residual = 0.205338, Final residual = 6.8143e09, No Iterations 4 GAMG: Solving for p, Initial residual = 0.415985, Final residual = 0.00243229, No Iterations 5 time step continuity errors : sum local = 2.13818e08, global = 3.8758e09, cumulative = 33.0263 GAMG: Solving for p, Initial residual = 0.0894586, Final residual = 9.57609e07, No Iterations 17 time step continuity errors : sum local = 3.86934e12, global = 1.4289e13, cumulative = 33.0263 DILUPBiCG: Solving for omega, Initial residual = 0.999999, Final residual = 4.84813e16, No Iterations 1 bounding omega, min: 2.76819e+08 max: 1.25494e+20 average: 5.66184e+18 DILUPBiCG: Solving for k, Initial residual = 0.0253493, Final residual = 4.64098e06, No Iterations 1 ExecutionTime = 7546.5 s ClockTime = 7567 s Courant Number mean: 3.28599e06 max: 2.21188 deltaT = 1.18976e18 > FOAM Warning : From function Time::operator++() in file db/Time/Time.C at line 1055 Increased the timePrecision from 9 to 10 to distinguish between timeNames at time 1.6997 Time = 1.699702042 DILUPBiCG: Solving for Ux, Initial residual = 0.114399, Final residual = 6.89955e07, No Iterations 3 DILUPBiCG: Solving for Uy, Initial residual = 0.06611, Final residual = 2.26779e07, No Iterations 3 DILUPBiCG: Solving for Uz, Initial residual = 0.0669545, Final residual = 3.6835e06, No Iterations 3 GAMG: Solving for p, Initial residual = 0.28107, Final residual = 0.00247868, No Iterations 3 time step continuity errors : sum local = 1.12853e08, global = 6.20024e09, cumulative = 33.0263 GAMG: Solving for p, Initial residual = 0.0393327, Final residual = 7.7993e07, No Iterations 15 time step continuity errors : sum local = 2.61803e12, global = 1.80286e13, cumulative = 33.0263 DILUPBiCG: Solving for omega, Initial residual = 0.806297, Final residual = 1.26278e07, No Iterations 1 bounding omega, min: 1642.61 max: 9.39139e+18 average: 3.42263e+18 DILUPBiCG: Solving for k, Initial residual = 0.0195621, Final residual = 3.98071e06, No Iterations 1 ExecutionTime = 7547.77 s ClockTime = 7568 s Courant Number mean: 3.63278e06 max: 1.91779 deltaT = 1.42771e18 > FOAM Warning : From function Time::operator++() in file db/Time/Time.C at line 1055 Increased the timePrecision from 10 to 11 to distinguish between timeNames at time 1.6997 Time = 1.6997020424 DILUPBiCG: Solving for Ux, Initial residual = 0.0618404, Final residual = 4.24347e07, No Iterations 3 DILUPBiCG: Solving for Uy, Initial residual = 0.039055, Final residual = 6.00065e06, No Iterations 2 DILUPBiCG: Solving for Uz, Initial residual = 0.0439426, Final residual = 1.02212e06, No Iterations 3 GAMG: Solving for p, Initial residual = 0.232859, Final residual = 0.00135369, No Iterations 3 time step continuity errors : sum local = 5.35432e09, global = 3.08645e09, cumulative = 33.0263 GAMG: Solving for p, Initial residual = 0.0231275, Final residual = 8.75852e07, No Iterations 13 time step continuity errors : sum local = 2.85843e12, global = 1.94964e13, cumulative = 33.0263 DILUPBiCG: Solving for omega, Initial residual = 0.751881, Final residual = 1.51817e07, No Iterations 1 bounding omega, min: 16.8098 max: 4.45048e+18 average: 2.32139e+18 DILUPBiCG: Solving for k, Initial residual = 0.0161215, Final residual = 3.89756e06, No Iterations 1 ExecutionTime = 7548.98 s ClockTime = 7570 s Courant Number mean: 4.13771e06 max: 1.81145 deltaT = 1.71325e18 > FOAM Warning : From function Time::operator++() in file db/Time/Time.C at line 1055 Increased the timePrecision from 11 to 12 to distinguish between timeNames at time 1.6997 Time = 1.69970204241 DILUPBiCG: Solving for Ux, Initial residual = 0.0513661, Final residual = 3.59432e07, No Iterations 3 DILUPBiCG: Solving for Uy, Initial residual = 0.0339824, Final residual = 6.19584e06, No Iterations 2 DILUPBiCG: Solving for Uz, Initial residual = 0.037676, Final residual = 3.88398e07, No Iterations 3 GAMG: Solving for p, Initial residual = 0.188385, Final residual = 0.000806453, No Iterations 3 time step continuity errors : sum local = 3.3117e09, global = 1.69835e09, cumulative = 33.0263 GAMG: Solving for p, Initial residual = 0.016901, Final residual = 8.37202e07, No Iterations 11 time step continuity errors : sum local = 2.97013e12, global = 6.06414e14, cumulative = 33.0263 DILUPBiCG: Solving for omega, Initial residual = 0.712028, Final residual = 1.71042e07, No Iterations 1 bounding omega, min: 118.702 max: 2.72813e+18 average: 1.67489e+18 DILUPBiCG: Solving for k, Initial residual = 0.0137967, Final residual = 3.95515e06, No Iterations 1 ExecutionTime = 7550.13 s ClockTime = 7571 s Courant Number mean: 4.7452e06 max: 1.80144 deltaT = 2.0559e18 > FOAM Warning : From function Time::operator++() in file db/Time/Time.C at line 1055 Increased the timePrecision from 12 to 13 to distinguish between timeNames at time 1.6997 Time = 1.699702042413 DILUPBiCG: Solving for Ux, Initial residual = 0.0502811, Final residual = 2.77759e07, No Iterations 3 DILUPBiCG: Solving for Uy, Initial residual = 0.0329875, Final residual = 5.51329e06, No Iterations 2 DILUPBiCG: Solving for Uz, Initial residual = 0.0364956, Final residual = 2.06106e07, No Iterations 3 GAMG: Solving for p, Initial residual = 0.16494, Final residual = 0.000553674, No Iterations 3 time step continuity errors : sum local = 2.48088e09, global = 8.1257e10, cumulative = 33.0263 GAMG: Solving for p, Initial residual = 0.0137505, Final residual = 6.89309e07, No Iterations 12 time step continuity errors : sum local = 2.68517e12, global = 2.31621e13, cumulative = 33.0263 DILUPBiCG: Solving for omega, Initial residual = 0.682025, Final residual = 1.90232e07, No Iterations 1 bounding omega, min: 0.0388451 max: 1.86296e+18 average: 1.25543e+18 DILUPBiCG: Solving for k, Initial residual = 0.0120913, Final residual = 4.33272e06, No Iterations 1 ExecutionTime = 7551.31 s ClockTime = 7572 s Regarding the mesh: checkMesh is OK, with a maximum nonOrthogonality of 65.9 degrees and a average nonOrtho of 7 degrees. Regarding the fvSchemes: Code:
ddtSchemes { default Euler; } gradSchemes { default Gauss linear; grad(U) cellLimited Gauss linear 1; } divSchemes { default none; div(phi,U) Gauss linearUpwindV grad(U); div(phi,k) Gauss upwind; div(phi,omega) Gauss upwind; div((nuEff*dev(T(grad(U))))) Gauss linear; } laplacianSchemes { default Gauss linear corrected; } interpolationSchemes { default linear; } snGradSchemes { default corrected; } fluxRequired { default no; p; } Thanks, Roberto 

April 8, 2014, 03:19 

#3 
Member
Roberto Pieri
Join Date: Feb 2012
Location: Milan
Posts: 57
Rep Power: 14 
Hi Pete, thank you for the quick reply. Here is my fvSolution
Code:
solvers { p { solver GAMG; tolerance 1e06; relTol 0.01; smoother GaussSeidel; cacheAgglomeration true; nCellsInCoarsestLevel 10; agglomerator faceAreaPair; mergeLevels 1; } pFinal { solver GAMG; tolerance 1e06; relTol 0; smoother GaussSeidel; cacheAgglomeration true; nCellsInCoarsestLevel 10; agglomerator faceAreaPair; mergeLevels 1; } "(Ukomegaepsilon)" { solver PBiCG; preconditioner DILU; tolerance 1e05; relTol 0.1; } "(Ukomegaepsilon)Final" { $U; tolerance 1e05; relTol 0; } } PIMPLE { // momentumPredictor yes; nOuterCorrectors 1; nCorrectors 2; nNonOrthogonalCorrectors 0; pRefCell 0; pRefValue 0; } relaxationFactors { fields { } equations { "p.*" 0.3; "U.*" 0.7; "k.*" 0.7; "omega.*" 0.7; } } 

April 8, 2014, 03:34 

#4 
Senior Member

Hi,
as you've got diverging solution (primary reason for omega going unbound and catastrophic decrease of time step), you can: 1. Increase number of outer correctors 2. Increase number of nonorthogonal correctors 3. Switch from fixed number of outer correctors to residual control to exit outer corrector loop 

April 8, 2014, 04:08 

#5 
Member
Roberto Pieri
Join Date: Feb 2012
Location: Milan
Posts: 57
Rep Power: 14 
Thanks.
1. Already done, no luck. 2. Is it necessary although I have low nonOrthogonality? 3. How can I switch to residual control to exit outer correction loop? Another important thing I just saw in my case: running on 48 processors I met the problem above while running on 56 it ran without problems. Have you any idea? Thank you in advance 

April 8, 2014, 04:41 

#6 
Senior Member

Well,
1. Can you tell that increased value? 2. You've said  "...maximum nonOrthogonality of 65.9 degrees..." 3. Change your PIMPLE subdictionary from Code:
PIMPLE { // momentumPredictor yes; nOuterCorrectors 1; nCorrectors 2; nNonOrthogonalCorrectors 0; pRefCell 0; pRefValue 0; } Code:
PIMPLE { // momentumPredictor yes; nOuterCorrectors 100; nCorrectors 2; nNonOrthogonalCorrectors 1; pRefCell 0; pRefValue 0; residualControl { "(pUkomega)" { tolerance 1e2; relTol 0; } } } Code:
p { solver GAMG; tolerance 1e06; relTol 0.01; smoother GaussSeidel; cacheAgglomeration true; nCellsInCoarsestLevel 10; agglomerator faceAreaPair; mergeLevels 1; } 5. Are you sure about linearUpwindV? Change it to upwind first, if solution will not diverge, then you can go with higher order schemes. And finally about 48 and 56 processors: as you do not check convergence of the solution on every time step, there can be anything (different time stepping, more lucky distribution of cells). Update: Also with 56 processors, you've got smaller subdomains, maybe with these smaller subdomains GAMG behaves better with your nCellsInCoarsestLevel 10 settings. 

April 8, 2014, 05:39 

#7 
Member
Roberto Pieri
Join Date: Feb 2012
Location: Milan
Posts: 57
Rep Power: 14 
Thank you very much for your advices.
I will perform these tests as soon as possible and I will post the results. 

April 11, 2014, 14:54 

#8 
Member
Roberto Pieri
Join Date: Feb 2012
Location: Milan
Posts: 57
Rep Power: 14 
Sorry for my late reply.
I performed simulation with your advices and now it works very well. Thank you very much. Just for clarity:  Increasing the number of Outer and nonOrthogonal correctors didn't give me any stability;  Following your advice for GAMG increased the stability, also in parallel!!!  Using upwind scheme increased the stability! Thank you again. Roberto 

April 11, 2014, 17:53 

#9 
Senior Member

Hi,
Keep in mind, upwind is a first order scheme, so in some cases with this scheme you can flow can loose certain flow features (for example in certain melting problems first order schemes do not resolve all flow cells). About increased number of outer corrector iterations. When you use residual control to exit outer corrector loop, you at least can be sure that your solution is converged. Otherwise you can't be sure in the results you get. 

June 27, 2014, 06:52 

#10 
Senior Member
Ali reza
Join Date: Mar 2014
Posts: 110
Rep Power: 12 
hi guys
My simulation has the same problem that here is mentioned ,I have read all these posts but I don't know how to solve it .these are my fv scheme and fv solution Code:
ddtSchemes { default Euler; } gradSchemes { default Gauss linear; grad(p) Gauss linear; grad(U) Gauss linear; } divSchemes { default none; div(phi,U) Gauss Gamma 0.2; div(phi,k) Gauss Gamma 0.2; div(phi,epsilon) Gauss Gamma 0.2; div(phi,R) Gauss Gamma 0.2; div(R) Gauss Gamma 0.2; div(phi,nuTilda) Gauss Gamma 0.2; div((nuEff*dev(T(grad(U))))) Gauss linear; } laplacianSchemes { default none; laplacian(nuEff,U) Gauss linear corrected; laplacian((1A(U)),p) Gauss linear corrected; laplacian(DkEff,k) Gauss linear corrected; laplacian(DepsilonEff,epsilon) Gauss linear corrected; laplacian(DREff,R) Gauss linear corrected; laplacian(DnuTildaEff,nuTilda) Gauss linear corrected; } interpolationSchemes { default linear; interpolate(U) linear; } snGradSchemes { default corrected; } fluxRequired { default no; p ; } Code:
solvers { p { solver PCG; preconditioner DIC; tolerance 1e06; relTol 1e05; } pFinal { solver PCG; preconditioner DIC; tolerance 1e08; relTol 0; } "(Ukepsilon)" { solver PBiCG; preconditioner DILU; tolerance 1e05; relTol 0.1; } "(Ukepsilon)Final" { $U; tolerance 1e05; relTol 0; } } PIMPLE { nOuterCorrectors 4; nCorrectors 2; nNonOrthogonalCorrectors 3; pRefCell 0; pRefValue 0; residualControl { U { tolerance 1e2; relTol 0; } p { tolerance 1e2; relTol 0; } } } relaxationFactors { fields { } equations { "p.*" 0.3; "U.*" 0.7; "k.*" 0.4; "epsilon.*" 0.5; } } 

Thread Tools  Search this Thread 
Display Modes  


Similar Threads  
Thread  Thread Starter  Forum  Replies  Last Post 
FSI TWOWAY SIMULATION  Smagmon  CFX  1  March 6, 2009 13:24 
Continuous vs interrupted simulation  sega  OpenFOAM Running, Solving & CFD  4  November 3, 2008 14:29 
Overflow problem in steady simulation  ReeKo  CFX  11  October 8, 2008 17:57 
Fire simulation using FDS from NIST  Jens  Main CFD Forum  1  January 22, 2004 01:53 
3D Contaminant Dispersal Simulation  Apple L S Chan  Main CFD Forum  1  December 23, 1998 10:06 