interIsofoam射流问题
-
模拟的具体工况如图所示
圆柱容器里面是液体,圆柱喷嘴喷出气体(喷嘴上部面转化为内部网格处理),使用interIsofoam求解器,主要想观察气体喷出后生成的气泡的形状和运动轨迹,网格由icem绘制转化至openfoam,checkmesh信息如下:Check mesh... Time = 0 Mesh stats points: 624312 faces: 1851102 internal faces: 1828728 cells: 613305 faces per cell: 6 boundary patches: 5 point zones: 0 face zones: 3 cell zones: 2 Overall number of cells of each type: hexahedra: 613305 prisms: 0 wedges: 0 pyramids: 0 tet wedges: 0 tetrahedra: 0 polyhedra: 0 Checking topology... Boundary definition OK. Cell to face addressing OK. Point usage OK. Upper triangular ordering OK. Face vertices OK. Number of regions: 1 (OK). Checking patch topology for multiply connected surfaces... Patch Faces Points Surface topology outlet 1485 1508 ok (non-closed singly connected) nozzlewall 1232 660 multiply connected (shared edge) bottom 616 660 ok (non-closed singly connected) pipewall 18172 18216 ok (non-closed singly connected) inlet 869 892 ok (non-closed singly connected) ".*" 22374 21760 multiply connected (shared edge) Detected 1232 bad edges (possibly relevant for finite-area) Checking faceZone topology for multiply connected surfaces... FaceZone Faces Points Surface topology int_FLUID 1792538 612440 multiply connected (shared edge) int_FLUID_AIR 35321 13380 multiply connected (shared edge) int_INTERIOR1 869 892 ok (non-closed singly connected) <<Writing 624224 conflicting points to set nonManifoldPoints Checking basic cellZone addressing... CellZone Cells Points Volume BoundingBox FLUID 601139 612440 0.000704116 (-0.0149602 -0.0149572 0) (0.0149602 0.0149572 1) FLUID_AIR 12166 13380 1.92837e-09 (-0.000391458 -0.000391429 0) (0.000391458 0.000391429 0.004) Checking basic pointZone addressing... No pointZones found. Checking geometry... Overall domain bounding box (-0.0149602 -0.0149572 0) (0.0149602 0.0149572 1) Mesh has 3 geometric (non-empty/wedge) directions (1 1 1) Mesh has 3 solution (non-empty) directions (1 1 1) Boundary openness (4.6938e-16 1.39741e-15 1.52826e-18) OK. Max cell openness = 4.03117e-16 OK. Max aspect ratio = 389.103 OK. Minimum face area = 2.38205e-10. Maximum face area = 7.65441e-06. Face area magnitudes OK. Min volume = 5.02898e-14. Max volume = 1.47182e-08. Total volume = 0.000704118. Cell volumes OK. Mesh non-orthogonality Max: 35.2075 average: 4.51619 Non-orthogonality check OK. Face pyramids OK. Max skewness = 1.90366 OK. Coupled point location match (average 0) OK. Mesh OK.
现在存在的问题是虽然网格数只有60w,但计算开始时的时间步长在10e-5,随着计算过程的推进逐渐变小至10e-30,并且喷嘴上方喷出的气体应该转变为气泡分类而不是如下图所示的一个柱状区域,我想求助各位大佬,我这个是网格的问题还是算法的问题。
-
@李东岳 感谢东岳老师的回复,设置我也贴一下:
FoamFile { version 2.0; format ascii; class dictionary; location "system"; object fvSolution; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // solvers { "alpha.phase1.*" { nAlphaCorr 3; nAlphaSubCycles 1; alphaOuterCorrectors yes; cAlpha 0; isoFaceTol 1e-6; surfCellTol 1e-6; nAlphaBounds 3; snapTol 1e-12; clip true; gardAlphaNormal false; MULESCorr yes; nLimiterIter 3; solver smoothSolver; smoother symGaussSeidel; tolerance 1e-8; relTol 0; orientationMethod LS; //RDF splitWarpedFace false; writePlicFields false; mapAlphaField true; nAlphaSubCycles 1; cAlpha 1; } "pcorr.*" { solver GAMG; tolerance 1e-08; relTol 0.01; smoother DIC; cacheAgglomeration no; } p_rgh { solver GAMG; tolerance 1e-08; relTol 0.01; smoother DIC; cacheAgglomeration no; } p_rghFinal { $p_rgh; relTol 0; tolerance 1e-9; } U { solver smoothSolver; smoother symGaussSeidel; tolerance 1e-07; relTol 0; } UFinal { $U; tolerance 1e-06; relTol 0; } kFinal { $k; solver smoothSolver; smoother symGaussSeidel; tolerance 1e-06; relTol 0; } epsilonFinal { $epsilon; solver smoothSolver; smoother symGaussSeidel; tolerance 1e-06; relTol 0; } epsilon { solver smoothSolver; smoother symGaussSeidel; tolerance 1e-06; relTol 0; } k { solver smoothSolver; smoother symGaussSeidel; tolerance 1e-06; relTol 0; } } PIMPLE { momentumPredictor yes; nOuterCorrectors 3; nCorrectors 5; nNonOrthogonalCorrectors 1; pRefPoint (0.01 0.01 0.01); pRefValue 0; } reconstructionSchemes { alpha.phase1 { method isoAlpha; isoAlphaMethod isoAlpha; alpha alpha.phase1; isoValue 0.5; surfaceCellSize 0; linearCorrection true; smoothNormals true; nSmoothNormals 3; cellNormalMethod corrected; faceNormalMethod corrected; } } relaxationFactors { fields { } equations { ".*" 1; } } FoamFile { version 2.0; format ascii; class dictionary; location "system"; object fvSchemes; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // ddtSchemes { default CrankNicolson 1; } gradSchemes { default Gauss linear ; } divSchemes { div(Phi,U) Gauss linearUpwind grad(U); div(rhoPhi,U) Gauss limitedLinearV 1; div(phi,alpha.phase1) Gauss interfaceCompression vanLeer 3; div(phirb,alpha) Gauss interfaceCompression; div(phi,k) Gauss upwind; div(phi,epsilon) Gauss upwind; div((muEff*dev(T(grad(U))))) Gauss linear; div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear; } laplacianSchemes { default Gauss linear corrected; } interpolationSchemes { default linear; } snGradSchemes { default corrected; } interfaceCompression { cAlpha 2; } wallDist { method meshWave; } fluxRequired { default no; p_rgh; pcorr; alpha.phase1; } FoamFile { version 2.0; format ascii; class dictionary; location "system"; object setFieldsDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // defaultFieldValues ( volScalarFieldValue alpha.phase1 1 ); regions ( cylinderToCell { p1 (0 0 0); p2 (0 0 0.004); radius 0.0003925; fieldValues ( volScalarFieldValue alpha.phase1 0 ); } ); FoamFile { version 2.0; format ascii; class dictionary; location "system"; object controlDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // application interIsoFoam; startFrom startTime; startTime 0; stopAt endTime; endTime 0.2; deltaT 0.0001; writeControl adjustableRunTime; writeInterval 0.005; purgeWrite 0; writeFormat ascii; writePrecision 6; writeCompression uncompressed; timeFormat general; timePrecision 6; runTimeModifiable yes; adjustTimeStep yes; maxCo 5; maxAlphaCo 1; maxDeltaT 0.01; libs ("libfiniteVolume.so" "libsampling.so"); functions { bubbleTracking { type surfaces; libs ("libsampling.so"); surfaceFormat vtk; fields (alpha.phase1 U); surfaces ( bubbleSurface { type isoSurface; isoField alpha.phase1; isoValue 0.5; interpolate true; } ); executionInterval 5; } gasVolumeFraction { type volFieldValue; libs ("libfieldFunctionObjects.so"); enabled true; operation average; fields (alpha.phase1); mean on; base time; writeControl timeStep; writeInterval 1; log true; valueOutput true; writeFields false; surfaceFormat none; format csv; } FoamFile { format ascii; class volScalarField; location "0"; object epsilon; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -3 0 0 0 0]; internalField uniform 1e-6; boundaryField { outlet { type zeroGradient; } inlet { type fixedValue; value uniform 1.04e5; } nozzlewall { type epsilonWallFunction; value uniform 1e-6; } bottom { type epsilonWallFunction; value uniform 1e-6; } pipewall { type epsilonWallFunction; value uniform 1e-6; } } FoamFile { version 2.0; format ascii; class volScalarField; object k; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -2 0 0 0 0]; internalField uniform 1e-6; boundaryField { outlet { type zeroGradient; } inlet { type fixedValue; value uniform 11.34; } nozzlewall { type kqRWallFunction; value uniform 1e-6; } bottom { type kqRWallFunction; value uniform 1e-6; } pipewall { type kqRWallFunction; value uniform 1e-6; } } FoamFile { version 2.0; format ascii; class volScalarField; object nut; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 2 -1 0 0 0 0]; internalField uniform 1e-6; boundaryField { outlet { type calculated; value uniform 0; } inlet { type calculated; value uniform 0; } nozzlewall { type nutkWallFunction; value uniform 0; } bottom { type nutkWallFunction; value $internalField; } pipewall { type nutkWallFunction; value uniform 0; } } FoamFile { version 2.0; format ascii; class volScalarField; object p_rgh; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [1 -1 -2 0 0 0 0]; internalField uniform 0; boundaryField { outlet { type totalPressure; p0 uniform 0; } inlet { type fixedFluxPressure; value uniform 0; } nozzlewall { type fixedFluxPressure; value uniform 0; } bottom { type fixedFluxPressure; value uniform 0; } pipewall { type fixedFluxPressure; value uniform 0; } }
具体就是这样,设定喷气体,容器里面充满液体,改了一个月也没怎么收敛,头大得很,之前画了个200w的网格,△t很小就调粗网格了,能够调成功的话打算在捕获相界面的方法上下点功夫。