关于setFields工具设置的一些疑问
-
各位前辈好:
我最近在做船舶阻力的模拟,先是使用静网格模拟,得到了还算满意的结果,接着把静网格改成动网格,一开始看结果感觉还算靠谱。如图所示是释放升沉和纵倾两个自由度的船舶阻力模拟的曲线图。
然而由于昨天服务器突然断电,我想从保存的时间步继续运算的时候,才发现一开始设置好的相分数场,在计算了一段时间之后变得非常奇怪,已经不符合物理实际。如下图是一开始设置的相分数场和计算到30s的相分数场的图片。 。断电后在latestTime时间步上继续计算的算例也是算发散了。但是如果重头开始计算是可以计算的。
我的blockMeshDict字典如下:/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: v1912 | | \\ / A nd | Website: www.openfoam.com | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; object blockMeshDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // scale 1; xL -17.2; //x负向距离 xR 12.9; //x正向距离 yL -8.6; //y负向距离 yR 0; //y正向距离 zB -4.5; //z1 zM1B -0.8;//z2 zM2B -0.05; //z3 zM2T 0.05; //z4 zM1T 0.8;//z5 zT 2.5; // xMesh 26; //x方向网格数目 yMesh 8; //y方向网格数目 z1Mesh 34; //z1方向网格数目 z2Mesh 34; //z2方向网格数目 z3Mesh 10; //z3方向网格数目 z4Mesh 34;//z4方向网格数目 z5Mesh 15;//z5方向网格数目 vertices ( ($xL $yL $zB)//0 ($xR $yL $zB)//1 ($xR $yR $zB)//2 ($xL $yR $zB)//3 ($xL $yL $zM1B)//4 ($xR $yL $zM1B)//5 ($xR $yR $zM1B)//6 ($xL $yR $zM1B)//7 ($xL $yL $zM2B)//8 ($xR $yL $zM2B)//9 ($xR $yR $zM2B)//10 ($xL $yR $zM2B)//11 ($xL $yL $zM2T)//12 ($xR $yL $zM2T)//13 ($xR $yR $zM2T)//14 ($xL $yR $zM2T)//15 ($xL $yL $zM1T)//16 ($xR $yL $zM1T)//17 ($xR $yR $zM1T)//18 ($xL $yR $zM1T)//19 ($xL $yL $zT)//20 ($xR $yL $zT)//21 ($xR $yR $zT)//22 ($xL $yR $zT)//23 ); blocks ( hex (0 1 2 3 4 5 6 7) ($xMesh $yMesh $z1Mesh) simpleGrading (1 1 0.125) hex (4 5 6 7 8 9 10 11) ($xMesh $yMesh $z2Mesh) simpleGrading (1 1 1) hex (8 9 10 11 12 13 14 15) ($xMesh $yMesh $z3Mesh) simpleGrading (1 1 1) hex (12 13 14 15 16 17 18 19) ($xMesh $yMesh $z4Mesh) simpleGrading (1 1 1) hex (16 17 18 19 20 21 22 23) ($xMesh $yMesh $z5Mesh) simpleGrading (1 1 8) ); edges ( ); boundary ( atmosphere { type patch; faces ( (20 21 22 23) ); } outlet { type patch; faces ( (0 4 7 3) (4 8 11 7) (8 12 15 11) (12 16 19 15) (16 20 23 19) ); } inlet { type patch; faces ( (1 5 6 2) (5 9 10 6) (9 13 14 10) (13 17 18 14) (17 21 22 18) ); } bottom { type symmetry; faces ( (0 3 2 1) ); } side { type symmetry; faces ( (0 1 5 4) (4 5 9 8) (8 9 13 12) (12 13 17 16) (16 17 21 20) (2 3 7 6) (6 7 11 10) (10 11 15 14) (14 15 19 18) (18 19 23 22) ); } ); mergePatchPairs ( );
将前后两个边界面都划分到side这一个boundary里面,不知道是不是导致问题的原因。
setFields字典如下:(水线位置在z=0处)/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: v1912 | | \\ / A nd | Website: www.openfoam.com | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "system"; object setFieldsDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // defaultFieldValues ( volScalarFieldValue alpha.water 0 ); regions ( // Set cell values // (does zerogradient on boundaries) boxToCell { box (-999 -999 -999) (999 999 0); fieldValues ( volScalarFieldValue alpha.water 1 ); } // Set patch values (using ==) boxToFace { box (-999 -999 -999) (999 999 0); fieldValues ( volScalarFieldValue alpha.water 1 ); } ); // ************************************************************************* //
alpha.water的边界条件如下所示:
/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: v1912 | | \\ / A nd | Website: www.openfoam.com | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class volScalarField; location "0"; object alpha; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 0 0 0 0 0 0]; internalField uniform 0; boundaryField { #includeEtc "caseDicts/setConstraintTypes" inlet { type fixedValue; value $internalField; } outlet { type variableHeightFlowRate; lowerBound 0; upperBound 1; value $internalField; } atmosphere { type inletOutlet; inletValue $internalField; value $internalField; } hull { type zeroGradient; } } // ************************************************************************* //
请有经验的前辈给点建议,谢谢。