@李东岳 老师,我没有采用不同的decompose方法,为了图方便均采用scotch,但前后两次划分结果竟然是不同的,这点让我很不解
火山口玩泥巴
帖子
-
OpenFOAM并行计算不同进程数下获取场的积分值不同 -
OpenFOAM并行计算不同进程数下获取场的积分值不同@李东岳 在 OpenFOAM并行计算不同进程数下获取场的积分值不同 中说:
scalar meshVolume(0);
forAll(mesh.V(),cellI)
{
meshVolume += mesh.V()[cellI];
}Pout << "Mesh volume on this processor: " << meshVolume << endl;
reduce(meshVolume, sumOp<scalar>());
Info << "Total mesh volume on all processors: " << meshVolume << endl;老师,您的代码我测试了,结果如下:
四核:[0] Mesh volume on this processor: 829.44 [1] Mesh volume on this processor: 1320.32 [2] Mesh volume on this processor: 718.72 [3] Mesh volume on this processor: 1499.52 Total mesh volume on all processors: 4368
双核:
[0] Mesh volume on this processor: 2177.28 [1] Mesh volume on this processor: 2190.72 Total mesh volume on all processors: 4368
但是domainIntegrate这个函数的作用不就是为了整合各个计算域之间的结果吗:
domainIntegrate(phi) = gSum(fvc::volumeIntegrate(phi));
同时我测试了另一个网格,用24核和36核算了一段时间后发现两者相同时间下差距较小,感觉应该不是某一个核心的结果,而更像是误差?
同时还想请教一个问题,就在刚刚我发现前后两次不改任何设置的情况下,进行decompose操作(scotch方法)得到计算域划分结果竟然是不同的:
进而导致一个计算正常进行,一个计算一段时间就发散了,这是什么原因? -
OpenFOAM并行计算不同进程数下获取场的积分值不同如题,我尝试使用如下方法获取alpha2在整个计算域上的积分值:
scalar globalAlphaV = fvc::domainIntegrate(alpha2).value();
但令我不解的是,当我分别尝试用单核、双核、4核进行计算,得到的globalAlphaV的结果却不同,这是为什么?
单核:t value 0.00120482 0 0.00265769 6.08302e-07 0.00439595 1.09555e-06 0.00647429 1.2463e-06 0.0089355 1.33113e-06 0.0118731 1.38863e-06 0.0153981 1.38907e-06 0.0196282 1.86323e-06 0.0246515 2.1633e-06 0.0304475 2.7274e-06 0.0374028 3.00516e-06 0.0452274 3.34962e-06
双核:
t value 0.00120482 0 0.00265769 2.03837e-06 0.00439595 1.92813e-06 0.00647429 2.09112e-06 0.0089355 2.13259e-06 0.0118731 2.12188e-06 0.0153981 2.22201e-06 0.0196282 2.49843e-06 0.0246515 2.58062e-06 0.0304475 2.77294e-06 0.0374028 2.95374e-06 0.0452274 3.17708e-06
四核:
t value 0.00120482 0 0.00265769 2.96666e-07 0.00439595 1.55379e-07 0.00647429 2.30832e-07 0.0089355 4.49495e-07 0.0118731 5.51889e-07 0.0153981 6.1708e-07 0.0196282 6.46681e-07 0.0246515 7.35564e-07 0.0304475 7.13041e-07 0.0374028 8.00214e-07 0.0452274 8.97498e-07
-
refineMesh加密网格出现错误我尝试用refineMesh进行多层加密,第一层加密完成后,在其内部的一个子区域进行第二次加密时,出现useHexTopology specified but cell 5018638 on face 7394 of patch bottom is not a hex的问题,我检查发现5018638单元并不在我的第二次加密区域内,为什么仍然要检查他是否为hex?
以下为refineMeshDict:set expand7; coordinateSystem patchLocal; patchLocalCoeffs { patch bottom; tan1 (0 0 1); } directions ( tan1 tan2 ); useHexTopology yes; geometricCut no; writeMesh no;
如果改用geometricCut会不会导致网格质量下降?
-
of中的多相流求解器@dzw05 因为limitSum仅仅对anti diffusion flux进行限制,在限制完后再和低阶格式组装成总通量
-
大规模算例paraview看结果的一种方法@xpqiu 好的谢谢
-
大规模算例paraview看结果的一种方法@火山口玩泥巴 因为准备申请个学校的云主机进行后处理,计算时用了128核,现在申请云主机的核数也需要至少128吗?
-
大规模算例paraview看结果的一种方法请问使用这个功能的时候,需要保证cpu核数大于等于并行时decompose的数吗?
-
多相流计算中入口的速度过小导致计算结果不符想尝试与一篇文献中实验结果作对比,但根据文中所提供的条件算出的入口速度很小(0.18m/s),以此作为入口的边界条件;同时入口边界的alpha.water也固定为1,计算一段时间后如图所示,发现入口处几乎没有水相的存在了。这是为什么?
入口处的边界条件如下:
U { type fixedValue; value uniform (0.18 0 0); } p_rgh { type zeroGradient; } alpha.water { type fixedValue; value uniform 1; } alpha.air { type zeroGradient; }
-
三相空化计算明渠流动失败@李东岳 LES和laminar都试过,只要把空化核数降一些就不会发散。
-
三相空化计算明渠流动失败@李东岳 是的老师,OF没提供三相空化的标准求解器,只能自己改着用,但又没啥经验,总怕自己改的这玩意稳定性太差。关键我对湍流模型了解的太浅了,k和omega越界这个东西我想改都无从下手。
-
三相空化计算明渠流动失败@李东岳 不是完全自己写的老师,是在interPhaseChangeFoam基础上改的,加了一个空气相进去。
在粗网格下面,用interFoam来算,使用komegaSST,在一定的k和omega的边界条件下不会出现发散的情况;但用自己的求解器去算即使把相变系数调到0,k和omega的边条初条怎么调都还是会发散。 -
三相空化计算明渠流动失败直接先用upwind处理相方程了。然后尝试使用LES的话可以正常计算粗网格,前提是得把空化核密度降低两个数量级,否则出口处会出现奇怪的低压区,这里不懂为什么会这样。
-
三相空化计算明渠流动失败同时我发现相分数存在越界情况,尤其是在细的那一套网格中,越界情况尤其明显,蒸气相甚至最小值达到了-1.4
,相方程的求解使用的是显式MULES(图方便),这是因为显式MULES效果不佳嘛??我想在每次求解过后强行限定α的值:
alpha1 = min(max(alpha1, scalar(0)), scalar(1));
这样是否可行?
-
摩擦雷诺数特征长度取值?没听说过摩擦雷诺数啊,如果只是单纯的雷诺数的话特征长度管道流一般就取:截面面积/截面周长即水力直径吧。
-
三相空化计算明渠流动失败@李东岳 都试过了老师,都是会差不多的时间发散,即出现bounding k和bounding omega;
刚刚我用粗网格的时候又出了一些别的问题:当空化模型里面的n0设的较大就会出现解压力方程的时候浮点溢出,具体是出现在GAMGSolver的Scale函数里面的缩放因子的分母的计算那里,我折腾半天没弄明白那里的溢出原因(我看了溢出单元的压力方程源项以及空化模型提供的主对角线项,都不怎么会导致溢出),因为我暂时还没弄懂那个函数的作用,就先给压力方程换成PCG求解了,这个问题暂时就没出现了; -
三相空化计算明渠流动失败我现在尝试换了一套几何模型,重新画了更细的网格,网格质量除了几个面会有一点非正交性较大外其他没有问题,仍然会出现一样的问题,即在进行湍流模型参数更新的过程中浮点溢出。
大佬们有啥思路解决嘛?是边界条件的问题吗? -
三相空化计算明渠流动失败大佬们给点建议
-
三相空化计算明渠流动失败顶一下
-
三相空化计算明渠流动失败在interPhaseChangeFoam的基础上改了改弄了个三相空化求解器来算明渠流动,第一步就会出现如下所示错误
Debug发现错误出现在湍流模型参数的更新这里,用的RANS模型:
具体报错是FieldFunctions.C里的sumMag函数这里:
请问各位大佬,是啥原因造成的呢?