|
[Sponsors] |
![]() |
![]() |
#1 |
Member
Join Date: Nov 2015
Posts: 38
Rep Power: 10 ![]() |
I'm modeling water flow through a small opening (see attached image). Using snappyHexMesh, I've created refinement regions to transition the cell size around the opening. As flow approaches the opening, large waves form on the surface that aren't realistic. I'm unsure if I need to do something different with the mesh, or if I need to make changes to the fvScheme/fvSolution settings? Any insight is greatly appreciated.
fvScheme Code:
ddtSchemes { default Euler; } gradSchemes { default cellMDLimited Gauss linear 1; grad(k) faceLimited leastSquares 1; grad(omega) faceLimited leastSquares 1; } divSchemes { div(rhoPhi,U) Gauss limitedLinearV 1; //Gauss upwind; div(phi,alpha) Gauss vanLeer; div(phirb,alpha) Gauss interfaceCompression 1; div(phi,p_rgh) Gauss upwind; div(phi,k) Gauss upwind; div(phi,epsilon) Gauss upwind; div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear; div(phi,omega) Gauss upwind; } laplacianSchemes { default Gauss linear uncorrected; } interpolationSchemes { default linear; } snGradSchemes { default uncorrected; } fluxRequired { default no; p_rgh; pcorr; gamma; } wallDist { method meshWave; } Code:
solvers { "alpha.water.*" { nAlphaCorr 1; nAlphaSubCycles 1; alphaOuterCorrectors yes; cAlpha 1; MULESCorr yes; nLimiterIter 3; solver smoothSolver; smoother symGaussSeidel; tolerance 1e-8; relTol 0; } "pcorr.*" GAMG { tolerance 1e-7; relTol 0.0; smoother DIC;//GaussSeidel; nPreSweeps 0; nPostSweeps 2; nFinestSweeps 2; cacheAgglomeration true; nCellsInCoarsestLevel 10; agglomerator faceAreaPair; mergeLevels 1; maxIter 10; }; p_rgh GAMG { tolerance 1e-7; relTol 0.0; smoother DIC;//GaussSeidel; nPreSweeps 0; nPostSweeps 2; nFinestSweeps 2; cacheAgglomeration true; nCellsInCoarsestLevel 10; agglomerator faceAreaPair; mergeLevels 1; }; p_rghFinal GAMG { tolerance 1e-8; relTol 0.0; smoother DIC;//GaussSeidel; nPreSweeps 0; nPostSweeps 2; nFinestSweeps 2; cacheAgglomeration true; nCellsInCoarsestLevel 10; agglomerator faceAreaPair; mergeLevels 1; }; "(U|k|omega|epsilon).*" { solver smoothSolver; smoother symGaussSeidel; nSweeps 1; tolerance 1e-6; relTol 0.1; }; "(U|k|epsilon)Final" { $U; relTol 0; } } PIMPLE { momentumPredictor no; nOuterCorrectors 2; nCorrectors 3; nNonOrthogonalCorrectors 3; } relaxationFactors { fields { } equations { ".*" 0.1; } } |
|
![]() |
![]() |
![]() |
![]() |
#2 |
Member
Join Date: Nov 2015
Posts: 38
Rep Power: 10 ![]() |
I restarted the simulation using interIsoFoam and the free surface looks much more stable (see attached image) but there are still some velocity discontinuities at the areas of mesh transition.
|
|
![]() |
![]() |
![]() |
![]() |
#3 |
Senior Member
Anton Kidess
Join Date: May 2009
Location: Germany
Posts: 1,377
Rep Power: 30 ![]() |
My experience is that interfoam is very sensitive to the mesh. Sudden changes in size are not good. Can you make a mesh with a smooth transition?
__________________
*On twitter @akidTwit *Spend as much time formulating your questions as you expect people to spend on their answer. |
|
![]() |
![]() |
![]() |
![]() |
#4 |
Member
Join Date: Nov 2015
Posts: 38
Rep Power: 10 ![]() |
Thanks for the suggestion. The mesh transitions are as slow/smooth as I know how to make in snappyHexMesh by slowly tapering refinement levels. I decreased the MaxCo to 0.2 (was at 1) and the velocity discontinuities washed out.
|
|
![]() |
![]() |
![]() |
![]() |
#5 |
Member
Andrew O. Winter
Join Date: Aug 2015
Location: Seattle, WA, USA
Posts: 78
Rep Power: 11 ![]() |
Correct me if I'm wrong, but I think Akidess meant to intially setup your mesh better using blockMesh so that you have uniform grading instead of the sort of sudden jumps that are created using snappyHexMesh. Also, since you have only rectangular shapes in your problem as far as I can tell from your images, it would probably be best to just use blockMesh with a bunch of hexes instead of making a single one and then using snappyHexMesh. This will give you much better control over the quality of the mesh.
|
|
![]() |
![]() |
![]() |
![]() |
#6 | |
Member
Join Date: Nov 2015
Posts: 38
Rep Power: 10 ![]() |
Quote:
|
||
![]() |
![]() |
![]() |
![]() |
#7 |
Member
Andrew O. Winter
Join Date: Aug 2015
Location: Seattle, WA, USA
Posts: 78
Rep Power: 11 ![]() |
Awesome! Glad to hear it worked out. Doing the messier blockMeshDict with multiple hexes and grading is a pain, but usually sorts out issues like this. Out of curiosity, what is the goal of your modeling?
|
|
![]() |
![]() |
![]() |
![]() |
#8 |
Member
Join Date: Nov 2015
Posts: 38
Rep Power: 10 ![]() |
Agreed, more work upfront but better results in the end! Modeling is to look at flow conditions and hydrodynamic forces on a lock chamber closure section. The pressures seemed reasonable even with the velocity discontinuities but this condition was essentially hydrostatic so I'm not sure how it would have done with more velocity head.
|
|
![]() |
![]() |
![]() |
Tags |
instability, interfoam, mesh, vof |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Help!! customize surface tension term in interFoam | w051cxw | OpenFOAM Running, Solving & CFD | 0 | February 12, 2016 01:15 |
InterFoam - Gradient of Surface Field | Twist | OpenFOAM Running, Solving & CFD | 0 | June 24, 2013 10:28 |
2 phase flow, free surface instability issues | Doginal | CFX | 29 | September 19, 2012 18:37 |
Free surface - interFoam | Pallav | OpenFOAM Post-Processing | 7 | June 14, 2011 15:17 |
[ICEM] Automatic mesh generation script surface intersection problem | stuart23 | ANSYS Meshing & Geometry | 0 | May 13, 2011 01:10 |