@Zhy2022 我之前稳定了之后从1调到过5和10,结果没什么区别。仅供参考。
hoversoar
帖子
-
controlDict文件中关于自动调节库朗数 -
RANS 高雷诺数 圆柱绕流重新画了mesh,模型改成了sst。Re 5w
结果更奇怪了,直接算不下去。下图无量纲时间步
现在mesh的y+平均1.5,max 3,min0.11。应该是没什么问题,质量也很高。
上下cyclicAMI边界,圆形流域,spanwise piD。
没想到一个RANS花了这么多天还没算好。。
有大佬能帮我看看么k
dimensions [0 2 -2 0 0 0 0]; internalField uniform 0.0021; boundaryField { front { type cyclicAMI; value uniform 0.0021; } back { type cyclicAMI; value uniform 0.0021; } inlet { type fixedValue; value uniform 0.0021; } outlet { type inletOutlet; inletValue internalField; value $internalField; } cylinderwalls { type kqRWallFunction; value uniform 0.0021; } }
omega
dimensions [ 0 0 -1 0 0 0 0 ]; internalField uniform 10.9; boundaryField { cylinderwalls { type omegaWallFunction; value $internalField; } front { type cyclicAMI; } back { type cyclicAMI; } inlet { type fixedValue; value uniform 10.9; } outlet { type inletOutlet; inletValue internalField; value $internalField; } }
nut
dimensions [0 2 -1 0 0 0 0]; internalField uniform 0; boundaryField { inlet { type calculated; value uniform 0; } outlet { type calculated; value uniform 0; } cylinderwalls { type nutkWallFunction; value uniform 0; } front { type cyclicAMI; } back { type cyclicAMI; } }
p
dimensions [0 2 -2 0 0 0 0]; internalField uniform 0; boundaryField { front { type cyclicAMI; value uniform 0; } back { type cyclicAMI; value uniform 0; } inlet { type zeroGradient; } outlet { type fixedValue; value uniform 0; } cylinderwalls { type zeroGradient; } }
U
dimensions [0 1 -1 0 0 0 0]; internalField uniform (7.5 0 0); boundaryField { front { type cyclicAMI; value uniform (7.5 0 0); } back { type cyclicAMI; value uniform (7.5 0 0); } inlet { type fixedValue; value uniform (7.5 0 0); } outlet { type zeroGradient; } cylinderwalls { type fixedValue; value uniform (0 0 0); } }
fvscheme
ddtSchemes { default backward; } gradSchemes { default Gauss linear; grad(p) Gauss linear; grad(U) Gauss linear; } divSchemes { default none; div(phi,U) Gauss limitedLinearV 0.5; div(phi,k) Gauss limitedLinear 1; div(phi,omega) Gauss limitedLinear 1; div(phi,R) Gauss limitedLinear 1; div(R) Gauss linear; div(phi,B) Gauss limitedLinear 1; div(B) Gauss linear; div(phi,nuTilda) Gauss limitedLinear 1; div((nuEff*dev(T(grad(U))))) Gauss linear; } laplacianSchemes { default Gauss linear corrected; } interpolationSchemes { default linear; interpolate(U) linear; } snGradSchemes { default corrected; } fluxRequired { default no; p; Phi; }
fvsolution
solvers { p { solver GAMG; tolerance 1e-04; relTol 0; smoother GaussSeidel; cacheAgglomeration true; nCellsInCoarsestLevel 200; agglomerator faceAreaPair; mergeLevels 1; } pFinal { solver GAMG; tolerance 1e-06; relTol 0; smoother GaussSeidel; cacheAgglomeration true; nCellsInCoarsestLevel 200; agglomerator faceAreaPair; mergeLevels 1; } "(U|k|nut|omega)" { solver PBiCG; preconditioner DILU; tolerance 1e-05; relTol 0; } "(U|k|nut|omega)Final" { $U; tolerance 1e-06; relTol 0; } } PIMPLE { nOuterCorrectors 3; nCorrectors 2; nNonOrthogonalCorrectors 1; pRefCell 0; pRefValue 0; }
-
RANS 高雷诺数 圆柱绕流更新一下
算了300个无量纲时间步,Cd-0.6,Clrms-0.31.
在15w雷诺数的时候应该还没有到临界,Cd应该在1-1.2的量级。
不知道是不是y+在背风面过小的问题(2.5左右)。
我加大了第一层网格,0.03D重新算。 -
RANS 高雷诺数 圆柱绕流之前一直用LES, 现在尝试RANS,有一些问题希望和大家探讨一下。
现在再算的算例基本概况:三维圆柱绕流,雷诺数15w,现在采用RNG k-epsilon模型,结构化网格质量较高。
虽然刚算了一会但是对于RANS的y+取值有一些困惑。- 网上基本上是说k-e模型的y+在30-200之间最好,要大于11。这个数值是针对的最大值,最小值,还是平均值呢?
查看了最近的时间步的y+,数值如下。可以看到最小值和最大值差的很远,最小值也是落在了粘性底层的范围内。(个人认为可能小范围的偏差不要紧,只要平均值满足即可,于是我查看了y+的分布)
Patch 2 named cylinderwalls y+ : min: 2.63471 max: 66.0352 average: 37.2911
y+分布如下。来流为x+方向。可以看到分离之后大片区域是在10以下的。
一开始打算算的是5w的例子,结果发现用该湍流模型min y+很难增大到所谓的30。 于是同时调整了雷诺数和网格厚度,现在的网格首层已经达到0.01D和15w雷诺,觉得已经很粗糙了。可是y+结果还是偏差比较大。
- 采用k-e算例是会使得y+难以增大到11以上吗,还是所谓的高雷诺数指的是相当量级的值(譬如50w)?
附上现在的算例文档,有感兴趣的同学可以一起探讨下。suanli.zip
-
关于OpenFOAM中K-Omega SST模型使用壁面函数时的Y+问题我后来的做法是将网格做到y+<1,然后不采用壁面函数,k方程壁面边界条件为kqRwallFuction, omega边界条件为omegaWallFuction, nut边界条件为nutkWallFunction
另外,我觉得将网格做到y+>30,然后指定壁面函数也是可以的同样有疑问,指定了k w 和nut 的边界条件不就是采用了壁面函数吗?
还是说壁面函数有什么另外的指定方法?
(还是我认知错误) -
圆柱扰流计算与物理现象问题思考@random_ran OK 感谢! 很好的分享!
-
分享:OpenFOAM不同离散格式的简单研究鼓掌,斯国一。非常感谢你的分享。
结果看来是对流格式得影响最大。
我之前对Re1w的圆柱绕流也是进行了很多尝试,主要是对流项的。为什么你这边要用linearUpwind作为基准呢?
我的网格质量由于不能做到很好,所以尝试的是limitedLinear,以及调整后面的参数。分别用了0.2,0.5和1。 但是后面的系数1的话重视安定性。0的话重视精度,如果在质量很好的网格下,0的结果应该是接近语linear的。
所以个人觉得并不是要避免使用limitedLinear模型,在网格质量不是太好的情况下,大家可以尝试这个系数的调整来达到精度和安定的平衡。(一点拙见) -
LES初始速度场设置和壁面函数设置@红豆沙 你是不能计算还是啥问题啊。 你导进去OF里头试看看。
-
并行问题的请教@kisssinger 看运行了几个核就知道有没有在运行了。或者terminal 打top查看。
-
LES初始速度场设置和壁面函数设置报告一下,之前也算过dynamicKEqn并没有问题,检查了老半天。拿到之前另一个电脑算就可以运行。。
在这个报错的of5的电脑上安装了of7,现在可以顺利地运行了。 -
LES初始速度场设置和壁面函数设置@hoversoar 应该是滤波的问题? 还不确定为什么会产生...
-
dynamicKEqn模型更换滤波器奇怪报错请问这个滤波为什么会报错有什么结果吗? 我现在也碰到报错了,但是其他mesh又可以用,在怀疑是不是mesh的问题?
-
LES初始速度场设置和壁面函数设置尝试把湍流模型从kEqn换成了dynamicKEqn,结果报了错。没看懂,有大佬能帮我解释一下吗..
[10] #0 Foam::error::printStack(Foam::Ostream&)[12] #0 Foam::error::printStack(Foam::Ostream&)[13] #0 [7] #0 Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&)[3] #0 [11] #0 Foam::error::printStack(Foam::Ostream&)Foam::error::printStack(Foam::Ostream&) at ??:? [12] #1 Foam::sigFpe::sigHandler(int) at ??:? at ??:? [11] #1 Foam::sigFpe::sigHandler(int)[10] #1 Foam::sigFpe::sigHandler(int) at ??:? [3] #1 Foam::sigFpe::sigHandler(int) at ??:? [13] #1 Foam::sigFpe::sigHandler(int) at ??:? [7] #1 Foam::sigFpe::sigHandler(int) at ??:? [12] #2 ? at ??:? [3] #2 ? at ??:? [11] #2 ? at ??:? [10] #2 ? at ??:? [7] #2 ? in "/lib/x86_64-linux-gnu/libc.so.6" [12] #3 Foam::sqrt(Foam::Field<double>&, Foam::UList<double> const&) at ??:? [13] #2 ? in "/lib/x86_64-linux-gnu/libc.so.6" in "/lib/x86_64-linux-gnu/libc.so.6" [3] #3 Foam::sqrt(Foam::Field<double>&, Foam::UList<double> const&) in "/lib/x86_64-linux-gnu/libc.so.6" [10] #3 Foam::sqrt(Foam::Field<double>&, Foam::UList<double> const&)[7] #3 Foam::sqrt(Foam::Field<double>&, Foam::UList<double> const&) in "/lib/x86_64-linux-gnu/libc.so.6" [11] #3 Foam::sqrt(Foam::Field<double>&, Foam::UList<double> const&) in "/lib/x86_64-linux-gnu/libc.so.6" [13] #3 Foam::sqrt(Foam::Field<double>&, Foam::UList<double> const&) at ??:? [12] #4 Foam::tmp<Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> > Foam::sqrt<Foam::fvPatchField, Foam::volMesh>(Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) at ??:? [3] #4 Foam::tmp<Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> > Foam::sqrt<Foam::fvPatchField, Foam::volMesh>(Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) at ??:? [10] #4 Foam::tmp<Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> > Foam::sqrt<Foam::fvPatchField, Foam::volMesh>(Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) at ??:? [7] #4 Foam::tmp<Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> > Foam::sqrt<Foam::fvPatchField, Foam::volMesh>(Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) at ??:? [11] #4 Foam::tmp<Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> > Foam::sqrt<Foam::fvPatchField, Foam::volMesh>(Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) at ??:? [12] #5 Foam::LESModels::dynamicKEqn<Foam::IncompressibleTurbulenceModel<Foam::transportModel> >::Ck(Foam::GeometricField<Foam::SymmTensor<double>, Foam::fvPatchField, Foam::volMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) const at ??:? [13] #4 Foam::tmp<Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> > Foam::sqrt<Foam::fvPatchField, Foam::volMesh>(Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) at ??:? [3] #5 Foam::LESModels::dynamicKEqn<Foam::IncompressibleTurbulenceModel<Foam::transportModel> >::Ck(Foam::GeometricField<Foam::SymmTensor<double>, Foam::fvPatchField, Foam::volMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) const at ??:? [10] #5 Foam::LESModels::dynamicKEqn<Foam::IncompressibleTurbulenceModel<Foam::transportModel> >::Ck(Foam::GeometricField<Foam::SymmTensor<double>, Foam::fvPatchField, Foam::volMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) const at ??:? [11] #5 Foam::LESModels::dynamicKEqn<Foam::IncompressibleTurbulenceModel<Foam::transportModel> >::Ck(Foam::GeometricField<Foam::SymmTensor<double>, Foam::fvPatchField, Foam::volMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) const at ??:? [7] #5 Foam::LESModels::dynamicKEqn<Foam::IncompressibleTurbulenceModel<Foam::transportModel> >::Ck(Foam::GeometricField<Foam::SymmTensor<double>, Foam::fvPatchField, Foam::volMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) const at ??:? [12] #6 Foam::LESModels::dynamicKEqn<Foam::IncompressibleTurbulenceModel<Foam::transportModel> >::correctNut(Foam::GeometricField<Foam::SymmTensor<double>, Foam::fvPatchField, Foam::volMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) at ??:? [10] #6 Foam::LESModels::dynamicKEqn<Foam::IncompressibleTurbulenceModel<Foam::transportModel> >::correctNut(Foam::GeometricField<Foam::SymmTensor<double>, Foam::fvPatchField, Foam::volMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) at ??:? [13] #5 Foam::LESModels::dynamicKEqn<Foam::IncompressibleTurbulenceModel<Foam::transportModel> >::Ck(Foam::GeometricField<Foam::SymmTensor<double>, Foam::fvPatchField, Foam::volMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) const at ??:? [12] #7 Foam::LESModels::dynamicKEqn<Foam::IncompressibleTurbulenceModel<Foam::transportModel> >::correctNut() at ??:? [3] #6 Foam::LESModels::dynamicKEqn<Foam::IncompressibleTurbulenceModel<Foam::transportModel> >::correctNut(Foam::GeometricField<Foam::SymmTensor<double>, Foam::fvPatchField, Foam::volMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) at ??:? [11] #6 Foam::LESModels::dynamicKEqn<Foam::IncompressibleTurbulenceModel<Foam::transportModel> >::correctNut(Foam::GeometricField<Foam::SymmTensor<double>, Foam::fvPatchField, Foam::volMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) at ??:? [7] #6 Foam::LESModels::dynamicKEqn<Foam::IncompressibleTurbulenceModel<Foam::transportModel> >::correctNut(Foam::GeometricField<Foam::SymmTensor<double>, Foam::fvPatchField, Foam::volMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) at ??:? [13] #6 Foam::LESModels::dynamicKEqn<Foam::IncompressibleTurbulenceModel<Foam::transportModel> >::correctNut(Foam::GeometricField<Foam::SymmTensor<double>, Foam::fvPatchField, Foam::volMesh> const&, Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&) at ??:? [12] #8 at ??:? [10] #7 Foam::LESModels::dynamicKEqn<Foam::IncompressibleTurbulenceModel<Foam::transportModel> >::correctNut() at ??:? [11] #7 Foam::LESModels::dynamicKEqn<Foam::IncompressibleTurbulenceModel<Foam::transportModel> >::correctNut() at ??:? [3] #7 Foam::LESModels::dynamicKEqn<Foam::IncompressibleTurbulenceModel<Foam::transportModel> >::correctNut() at ??:? [7] #7 Foam::LESModels::dynamicKEqn<Foam::IncompressibleTurbulenceModel<Foam::transportModel> >::correctNut()? at ??:? [13] #7 Foam::LESModels::dynamicKEqn<Foam::IncompressibleTurbulenceModel<Foam::transportModel> >::correctNut() at ??:? [11] #8 at ??:? [12] #9 __libc_start_main at ??:? [10] #8 at ??:? [13] #8 at ??:? [7] #8 at ??:? [3] #8 ?? in "/lib/x86_64-linux-gnu/libc.so.6" [12] #10 ?? at ??:? [11] #9 __libc_start_main at ??:? [13] #9 __libc_start_main?? in "/lib/x86_64-linux-gnu/libc.so.6" [13] #10 in "/lib/x86_64-linux-gnu/libc.so.6" [11] #10 at ??:? [10] #9 __libc_start_main at ??:? [3] #9 __libc_start_main at ??:? [7] #9 __libc_start_main?? in "/lib/x86_64-linux-gnu/libc.so.6" [10] #10 at ??:? [DL-BoxII:41641] *** Process received signal *** [DL-BoxII:41641] Signal: Floating point exception (8) [DL-BoxII:41641] Signal code: (-6) [DL-BoxII:41641] Failing at address: 0x3ea0000a2a9 [DL-BoxII:41641] [ 0] /lib/x86_64-linux-gnu/libc.so.6(+0x354b0)[0x2ad9e28f14b0] [DL-BoxII:41641] [ 1] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x38)[0x2ad9e28f1428] [DL-BoxII:41641] [ 2] in "/lib/x86_64-linux-gnu/libc.so.6" [3] #10 /lib/x86_64-linux-gnu/libc.so.6(+0x354b0)[0x2ad9e28f14b0] [DL-BoxII:41641] [ 3] /opt/openfoam5/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so(_ZN4Foam4sqrtERNS_5FieldIdEERKNS_5UListIdEE+0x28)[0x2ad9e1941728] [DL-BoxII:41641] [ 4] /opt/openfoam5/platforms/linux64GccDPInt32Opt/lib/libincompressibleTurbulenceModels.so(_ZN4Foam4sqrtINS_12fvPatchFieldENS_7volMeshEEENS_3tmpINS_14GeometricFieldIdT_T0_EEEERKS7_+0x190)[0x2ad9ddd760f0] [DL-BoxII:41641] [ 5] /opt/openfoam5/platforms/linux64GccDPInt32Opt/lib/libincompressibleTurbulenceModels.so(_ZNK4Foam9LESModels11dynamicKEqnINS_29IncompressibleTurbulenceModelINS_14transportModelEEEE2CkERKNS_14GeometricFieldINS_10SymmTensorIdEENS_12fvPatchFieldENS_7volMeshEEERKNS6_IdS9_SA_EE+0x2a5)[0x2ad9ddd87f15] [DL-BoxII:41641] [ 6] /opt/openfoam5/platforms/linux64GccDPInt32Opt/lib/libincompressibleTurbulenceModels.so(_ZN4Foam9LESModels11dynamicKEqnINS_29IncompressibleTurbulenceModelINS_14transportModelEEEE10correctNutERKNS_14GeometricFieldINS_10SymmTensorIdEENS_12fvPatchFieldENS_7volMeshEEERKNS6_IdS9_SA_EE+0x79)[0x2ad9ddd88859] [DL-BoxII:41641] [ 7] /opt/openfoam5/platforms/linux64GccDPInt32Opt/lib/libincompressibleTurbulenceModels.so(_ZN4Foam9LESModels11dynamicKEqnINS_29IncompressibleTurbulenceModelINS_14transportModelEEEE10correctNutEv+0x1f4)[0x2ad9ddd89874] [DL-BoxII:41641] [ 8] pimpleFoam[0x4254ad] [DL-BoxII:41641] [ 9] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x2ad9e28dc830] [DL-BoxII:41641] [10] pimpleFoam[0x428729] [DL-BoxII:41641] *** End of error message *** at ??:?
-
LES初始速度场设置和壁面函数设置@东岳 完全失败中...
-
LES初始速度场设置和壁面函数设置@cccrrryyy 感谢解答。
我看了pimpleFoam的这个算例,不太清楚具体是哪里用到了B,去掉的话可以算么?按道理说它用的是WALE模型,是个代数模型,不需要用方程去求解B才对。pisoFoam用的是SpalartAllmaras模型,不涉及到求解B,但要求解nuTilda。不太清楚为什么需要div(phi,k),可能这个去掉也可以算。
pimpleFoam没有B项也是可以算的,我这期间就是没发现还有个这个就一直在算..所以才会疑惑。
-
LES初始速度场设置和壁面函数设置大家好,又有了新的困惑。
我翻看教程的时候,发现pisofoam和pimplefoam里头LES案例的fvscheme 对流项设置有一些不同,觉得有点困惑。pimplefoam里头有一个B项,pisofoam里头则没有。
pimplefoam/LES/channel395divSchemes { default none; div(phi,U) Gauss linear; div(phi,k) Gauss limitedLinear 1; div(phi,B) Gauss limitedLinear 1; div(B) Gauss linear; div(phi,nuTilda) Gauss limitedLinear 1; div((nuEff*dev2(T(grad(U))))) Gauss linear; }
pisofoam/LES/motobike:
divSchemes { default none; div(phi,U) Gauss LUST unlimitedGrad(U); div(phi,k) Gauss limitedLinear 1; div(phi,nuTilda) Gauss limitedLinear 1; div((nuEff*dev2(T(grad(U))))) Gauss linear; }
查了下LES对应的B,RAS用的R,是雷诺应力张量的求解。那既然default都是none,按照user guide是要对每一项进行定义的,为什么pisofoam里头缺失了这一项呢?
ps我看到我之前的case也都没写这一项,估计是直接复制了摩托车的代码。不知道这项是不是必须的? -
LES初始速度场设置和壁面函数设置从这个角度讲,感觉可能你需要的是花大量精力在网格上,而不是求解器的那些参数调整。
之前几个月自己就一顿乱算,导致连光滑圆柱的结果都很奇怪。所以用那个简单的模型在探讨求解器,设置参数之类的。
对得上了之后,再过来讨论这边这个圆柱的网格。你之前提到过跟现有文献对比,是哪个文章呀,挺感兴趣的。
非光滑圆柱的话,参考的Experimental study on flow past a circular cylinder with rough surface这篇文献的。
-
LES初始速度场设置和壁面函数设置 -
LES初始速度场设置和壁面函数设置@东岳 谢谢夸奖!
算是基于工程的研究吧.. 桥索上用的 -
LES初始速度场设置和壁面函数设置感觉ANSYS Meshing的思路是尽可能缩小五边形所占的比例,从而大量使用六边形?
这个倒是没有研究, 就让他自动转化了。个人觉得可能形状没有太拘泥,如果不是edge的处不能合并三角形的话,尽量会合并成多边形并且满足所设定的size(也就是不会合并到过分大)。