
[Sponsors] 
March 9, 2011, 16:35 
Help !

#1 
Member
William Tougeron
Join Date: Jan 2011
Location: Czech Republic
Posts: 50
Rep Power: 7 
Hello,
First, I would like to thank everybody who will spend time reading this post. So, that's it : for the second time I tried to make a calculation with a coarse mesh and nothing wrong happened. Then I tried with a finer mesh and I had this kind of error at the first iteration: Code:
Starting time loop Time = 0.450001 Courant Number mean: 0.000114088 max: 0.141285 DILUPBiCG: Solving for Ux, Initial residual = 4.08431e07, Final residual = 4.08431e07, No Iterations 0 DILUPBiCG: Solving for Uy, Initial residual = 5.36397e07, Final residual = 5.36397e07, No Iterations 0 DILUPBiCG: Solving for Uz, Initial residual = 1.92053e06, Final residual = 1.92053e06, No Iterations 0 DICPCG: Solving for p, Initial residual = 0.994395, Final residual = 0.0949762, No Iterations 10 time step continuity errors : sum local = 7.27923e09, global = 2.19507e11, cumulative = 2.19507e11 DICPCG: Solving for p, Initial residual = 0.0759985, Final residual = 9.46632e07, No Iterations 142 time step continuity errors : sum local = 1.55001e13, global = 5.68589e15, cumulative = 2.1945e11 #0 Foam::error::printStack(Foam::Ostream&) in "/opt/openfoam171/lib/linuxGccDPOpt/libOpenFOAM.so" #1 Foam::sigFpe::sigFpeHandler(int) in "/opt/openfoam171/lib/linuxGccDPOpt/libOpenFOAM.so" #2 Uninterpreted: #3 Foam::divide(Foam::Field<double>&, Foam::UList<double> const&, Foam::UList<double> const&) in "/opt/openfoam171/lib/linuxGccDPOpt/libOpenFOAM.so" #4 void Foam::divide<Foam::fvPatchField, Foam::volMesh>(Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh>&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) in "/opt/openfoam171/lib/linuxGccDPOpt/libincompressibleRASModels.so" #5 Foam::tmp<Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> > Foam::operator/<Foam::fvPatchField, Foam::volMesh>(Foam::tmp<Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> > const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) in "/opt/openfoam171/lib/linuxGccDPOpt/libincompressibleRASModels.so" #6 Foam::incompressible::RASModels::kEpsilon::correct() in "/opt/openfoam171/lib/linuxGccDPOpt/libincompressibleRASModels.so" #7 in "/opt/openfoam171/applications/bin/linuxGccDPOpt/pisoFoam" #8 __libc_start_main in "/lib/libc.so.6" #9 in "/opt/openfoam171/applications/bin/linuxGccDPOpt/pisoFoam" This is my case: (You can click to enlarge the pictures) I wanted to use pisoFoam with a kepsilon turbulence model. This is my first mesh (around 50 000 cells): ...and the result of the first calculation: I found this result good, so I did a finer mesh (around 500 000 cells): ... and I made a "mapField" onto it from the coarse mesh: But the story ends here... My fvSchemes : Code:
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // ddtSchemes { default Euler; } gradSchemes { default Gauss linear; grad(p) Gauss linear; grad(U) Gauss linear; } divSchemes { default none; div(phi,U) Gauss limitedLinearV 1; div(phi,k) Gauss limitedLinear 1; div(phi,epsilon) Gauss limitedLinear 1; div(phi,R) Gauss limitedLinear 1; div(R) Gauss linear; div(phi,nuTilda) Gauss limitedLinear 1; div((nuEff*dev(grad(U).T()))) 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 0.1; } pFinal { solver PCG; preconditioner DIC; tolerance 1e06; relTol 0; } U { solver PBiCG; preconditioner DILU; tolerance 1e05; relTol 0; } k { solver PBiCG; preconditioner DILU; tolerance 1e05; relTol 0; } epsilon { solver PBiCG; preconditioner DILU; tolerance 1e05; relTol 0; } R { solver PBiCG; preconditioner DILU; tolerance 1e05; relTol 0; } nuTilda { solver PBiCG; preconditioner DILU; tolerance 1e05; relTol 0; } } PISO { nCorrectors 2; nNonOrthogonalCorrectors 0; pRefCell 0; pRefValue 0; } // ************************************************************************* // Very sincerely, 

April 22, 2011, 07:27 

#2 
New Member
Daniel Cebrián
Join Date: Nov 2010
Posts: 8
Rep Power: 7 
Hello William.
I think you used a fine mesh near the surface the body, this is good, but there is a problem with the change of cell´s size. I think the solution maybe not to make big change of size between cells. I don´t know why you are using triangular cells. Square cells are better. I´m doing a case similar to yours. I simulate a flat plate with pisoFoam, if you want we could talk about it. I calculate the forces in the bluff body and the aerodynamic coef. My name is Daniel and my email is: danielcebrianr@gmail.com 

April 22, 2011, 07:50 

#3 
Senior Member
Niels Gjoel Jacobsen
Join Date: Mar 2009
Location: Deltares, Delft, The Netherlands
Posts: 1,693
Rep Power: 27 
Hello William
The error message tells you that you are dividing by 0 within the kepsilon equations. Are you sure that you have not changed the boundary conditions/internal values for either k or epsilon from the coarse to the fine mesh? Neither property most be 0, but should take a finite value. Good luck Niels 

April 24, 2011, 16:00 

#4 
Member
William Tougeron
Join Date: Jan 2011
Location: Czech Republic
Posts: 50
Rep Power: 7 
Hello, everybody,
Thank you very much for your replies. To Daniel: Actually, I did that case as an example for a school project consisting in presenting and giving the bases of OpenFOAM. As I didn't find my mistake, I made another case, very similar but not exactly the same, and this time it worked. So, I don't spend any time on this case at all, but would be glad to speak about OpenFOAM anyway. Just for the pleasure, my final case: The rough mesh : (You can click to enlarge the pictures) The velocity field after few iterations: The mesh with a refinement box enclosing the high velocity gradient zone: The refinement box to enclose the vortex after having rotated the mesh: The final result: PS: The mesh isn't triangular. It's a matter of visualization with Paraview when you use a cutting plane. To Neils: Thank you very much for your details about the error. As a novice like me, one of the much difficult thing to do is to decrypt the error messages. I thought this kind of error appeared when the calculation "blows up" (diverges). I have already seen such error after maybe 150 iterations on a case, and after reducing the current number this error disappeared. In fact, I don't know how to read these error messages. For example, what are these "#1", "#2", etc. And, how do we know that it is a division by zero in the kepsilon equation ? Yes, one can read "divide" and "KEpsilon" in the error message, but how to be sure it is a division by zero ? I think I should learn to understand these message by reading some C++ documentation, isn't it ? But thank you very much for your explanation. Very sincerely, William 

April 24, 2011, 16:19 

#5 
Senior Member
Niels Gjoel Jacobsen
Join Date: Mar 2009
Location: Deltares, Delft, The Netherlands
Posts: 1,693
Rep Power: 27 
Hi William
Sure, here is a small explanation. I have always interpreted the numbering as a kind of unwinding of the error, essentially like an onion, where the inner part, the actual problem is given "#0", and then you can trace back from there. So: #2: (SIGFPE) You can always try wiki, however, this error tells you that you have performed an illegal arithmetic operation. #3: This tells you that the SIGFPE reported in #2 originates from a divide operator, meaning that the denominator is numerically taken as zero. #6: Those in #4 and #5 tells something about the fields, which cause the error, and this part of the error tells you that it occurs in kEpsilon.correct(). Therefore find the place in this method in the object kEpsilon, where you divide by zero. The reason for my suggestion to the origin of the error is: 1. It is the very first encounter with a solution to either k or epsilon after the start of the simulation, because the top of what you have reported states "starting time loop". 2. I have seen questions about this error so many times on this forum during the last 34 years. (I know it does not help you, though ) I hope my suggestions have solved your problem. Happy Easter  Niels 

December 27, 2011, 21:38 

#6 
Member
张德胜
Join Date: Oct 2011
Posts: 71
Rep Power: 6 
Hi,friend,i got the same error when i calculated my case.Did you solve your question? Can you give me some advice? Thanks a lot .My email is :zhangdesheng0068@126.com.Please contact me,ok?


December 28, 2011, 02:59 

#7 
Member
William Tougeron
Join Date: Jan 2011
Location: Czech Republic
Posts: 50
Rep Power: 7 
Dear hei@ge,
Unfortunatelly, I didn't solved this problem and won't use OpenFoam before a while I think (no time). If you are like me using a coarser and a finer mesh, you can maybe take a look to the danielcebrian or ngj advices below (cells too much different between coarse and fine meshes or a change in the kepsilon boundary or initial conditions) ? In each case, have a happy new year ! Best regards, 

December 28, 2011, 03:50 

#8 
Member
张德胜
Join Date: Oct 2011
Posts: 71
Rep Power: 6 
Thanks for your reply.I think i should discuss it with my boss.Happy new year.


Tags 
error, pisofoam 
Thread Tools  
Display Modes  

