各位好,我最近用OpenFOAM也在做这方面的模拟,现在使用SHM划分网格遇到了一些问题,主要是网格质量、非正交性、凹度和负体积网格方面的,能否交流一下
Caijinjin
帖子
-
-
@李东岳
李老师,这个函数里面,d,也就是xk,在这段程序里面是一个未知的自变量,只有在最后计算子液滴分布的时候才给定,我定义的分配函数里面也有这个定义:
这里定义成dimensionedScalar就没问题,所以可能不是d的问题了 -
李老师好,最终计算子液滴分布的结果是一个标量,那么在计算calcWe时返回场的话还能对应的使用吗?还有韦伯数是一个无量纲的数,如果是场的话这里应该选择是那种类型的场呢?
-
各位大佬好,目前遇到一个问题。
在群体平衡方程中新增子液滴分布函数,程序中需要用到韦伯数,韦伯数的计算公式是:
公式中d是母液滴的直径,把它写到子液滴分布程序中换算成了关于母液滴体积的函数,如下:
遇到的问题是编译过程中出现下面的问题:
请问有没有大佬了解这方面的问题,这是量纲或者场没对应上吗? -
@李东岳 老师,是这样的,这种现象在单个节点跑案例的时候是没有的,CPU是接近满负荷在运算的,但是一到多个节点并行就出现。
现在我们换了IB交换机之后多节点还没跑起来过。。。 -
@李东岳 李老师,我们组集群是新买的,应该不太可能是被黑了,除非是大厂他们给加了限制。现在我导给换了100G的IB交换机,就是运行案例的时候,它虽然显示是在run的,但是log文件里面没有实际的计算结果。我看了调度系统的日志说是:
Open MPI accepted a TCP connection from what appears to be an another Open MPI process but cannot find a corresponding process entry for that peer.
暂时还在寻找原因。 -
@李东岳 好的,我先尝试着修改下再去跑跑看
-
@李东岳李老师,最初使用过snappyHexMesh划分过结构化网格,模拟出错之后就改用icem非结构化网格来画稍微粗糙一点的网格去调试了
-
搅拌釜中气液两相模拟,釜中搅拌桨底部设置了两个圆形气体入口,气速最大0.3 m/s,釜内为水,顶部出口。我用reactingTwoPhaseEulerFoam模拟的时候最终都会出现下图中的结果,顶部出口有个位置的速度非常大,超过10 m/s,最终导致epsilon发散,气泡粒径出现负值。
请问一下各位有没有遇到过类似的情况,出口的边界条件类型,离散格式都修改过还是会出现一样的情况,而且搅拌釜顶部流出一段空气之后,这块区域还会变大。 -
@李东岳 在 集群上并行测试OpenFOAM,并行效率并没有比单节点提升 中说:
-genv FI_PROVIDER tcp
你这个去掉不能跑的话。你如何确定走的是infiniband,而不是以太网模式。我们这面跑openfoam不需要这个参数。我们之前测试也出现过你这种情况。后来我们换交换机硬件了。但目前我还不确定现在我们这5节点能到什么样,得下周能出个测试结果。另外,openfoam离散设置差异(比如GAMG那个),我个人感觉不会引起特别大的差异。不过你可以实测看看,我也不100%确定@xpqiu 这位大佬之前好像测试过2048个核心
老师,想问一下,用openmpi在自己组里面的集群上用pbs跨节点并行(10g以太网交换机)命令用的mpirun --mca btl_tcp_if_include <ip地址> -np reactingTwoPhaseEulerFoam -parallel,运行的时候发现计算的节点上cpu的用户进程占比us只有50-60%,系统进程占比sy有40-50%,这个问题有没有什么好的解决办法?
-
你好,想问你一下,这个跨节点运算速度慢的问题有解决吗?我这边自己的集群也有这个问题,目前还在找原因中,集群centos7,openfoam运行前会有环境变量设置的脚本(gcc编译,openmpi并行),openfoam和openmpi等软件都安装在共享文件夹中。我这边的测试案例结果如下:
-
@李东岳 好的,李老师,我去调试看看
-
@李东岳
单相流我还没尝试过,之前用过空的圆管做过一样的案例,问题都解决了。
现在我这边入口fixedValue,mapped边界条件都能是正常运行,就cyclicAMI出现问题,所以我打算先看看mapped的结果。 -
最近在做管式填充床中两相流动的模拟,采用循环边界cyclicAMI达到缩短管长,减少网格的目的。网格使用snappyHexMesh画完后没有问题,动力源项给的是连续项平均速度Ubar,为0.03m/s,填充床几何为
运算时出现如下结果:
主要就是动力源计算的压力梯度一直在正负之间反复跳动,且数值非常大,压力P_rgh的迭代次数会超限。运算一段时间后会直接导致求解的相分数远远超出0-1的范围,如下图所示:
想请教一下对这种循环边界熟悉的老师同学,能够解答一下我这些问题。
另外附上我的fvSolution:solvers { "alpha.*" { nAlphaCorr 1; nAlphaSubCycles 3; implicitPhasePressure yes; solver smoothSolver; smoother symGaussSeidel; tolerance 1e-8; relTol 0; minIter 1; } p_rgh { solver PCG; preconditioner FDIC; tolerance 1e-6; relTol 0.01; } p_rghFinal { $p_rgh; tolerance 1e-6; relTol 0; } "U." { solver smoothSolver; smoother symGaussSeidel; tolerance 1e-7; relTol 0; minIter 1; } "(e|h).*" { solver smoothSolver; smoother symGaussSeidel; tolerance 1; relTol 0; minIter 0; maxIter 0; } "(k|epsilon|omega).*" { solver smoothSolver; smoother symGaussSeidel; tolerance 1e-7; relTol 0; minIter 1; } } PIMPLE { nOuterCorrectors 3; nCorrectors 2; nNonOrthogonalCorrectors 1; pRefPoint (0.10399 0 0); pRefValue 101325; } relaxationFactors { equations { ".*" 0.7; } }
fvSchemes:
ddtSchemes { default Euler; } gradSchemes { default Gauss linear; limited cellLimited Gauss linear 1; } divSchemes { default none; "div\(phi,alpha.*\)" Gauss vanLeer; "div\(phir,alpha.*\)" Gauss vanLeer; "div\(alphaRhoPhi.*,U.*\)" Gauss linearUpwind limited; "div\(phi.*,U.*\)" Gauss linearUpwind limited; "div\(alphaRhoPhi.*,(h|e).*\)" Gauss linearUpwind limited; "div\(alphaPhi.*,f.*\)" Gauss linearUpwind limited; "div\(alphaRhoPhi.*,K.*\)" Gauss linearUpwind limited; "div\(alphaPhi.*,p\)" Gauss linearUpwind limited; "div\(alphaRhoPhi.*,\(p\|thermo:rho.*\)\)" Gauss linearUpwind limited; "div\(alphaRhoPhi.*,(k|epsilon|omega).*\)" Gauss linearUpwind limited; "div\(\(\(\(alpha.*\*thermo:rho.*\)\*nuEff.*\)\*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear; } laplacianSchemes { default Gauss linear corrected; } interpolationSchemes { default linear; } snGradSchemes { default corrected; } fluxRequired { default no; } wallDist { method meshWave; nRequired yes; }
-
@cyberk 抱歉,这个问题我没有遇到过,但我看了你之前用ICEM画的网格,这个六叶Ruston桨的搅拌槽的网格不太复杂的呀,这个你可以试试只画1/6个区域,然后对称过去,画完整体之后再去openfoam中用topoSet划分搅拌的区域
-
@cyberk 我这边是因为缺少了createBaffles字典,如果案例的几何边界中存在零厚度面就需要对其进行设置,我这边的搅拌釜的搅拌桨就是零厚度面
-
@bestucan 谢谢老师,这个问题我再去认真了解一下并尝试尝试。
-
@caijinjin 老师,这是我的离散格式和求解器设置
ddtSchemes { default Euler; } gradSchemes { default Gauss linear; limited cellLimited Gauss linear 1; } divSchemes { default none; "div\(phi,alpha.*\)" Gauss vanLeer; "div\(phir,alpha.*\)" Gauss vanLeer; "div\(alphaRhoPhi.*,U.*\)" Gauss linearUpwind limited; "div\(phi.*,U.*\)" Gauss linearUpwind limited; //"div\(alphaRhoPhi.*,Yi\)" Gauss linearUpwind limited; "div\(alphaRhoPhi.*,(h|e).*\)" Gauss linearUpwind limited; "div\(alphaPhi.*,f.*\)" Gauss linearUpwind limited; "div\(alphaRhoPhi.*,K.*\)" Gauss linearUpwind limited; "div\(alphaRhoPhi.*,\(p\|thermo:rho.*\)\)" Gauss linearUpwind limited; "div\(alphaRhoPhi.*,(k|epsilon|omega).*\)" Gauss linearUpwind limited; "div\(\(\(\(alpha.*\*thermo:rho.*\)\*nuEff.*\)\*dev2\(T\(grad\(U.*\)\)\)\)\)" Gauss linear; } laplacianSchemes { default Gauss linear corrected; } interpolationSchemes { default linear; } snGradSchemes { default corrected; } fluxRequired { default no; } wallDist { method meshWave; nRequired yes; }
求解器设置
solvers { "alpha.*" { nAlphaCorr 1; nAlphaSubCycles 1; } droplets { nCorr 1; tolerance 1e-4; scale true; solveOnFinalIterOnly true; sourceUpdateInterval 20; } p_rgh { solver GAMG; smoother DIC; tolerance 1e-8; relTol 0.01; maxIter 20; minIter 2; } p_rghFinal { $p_rgh; relTol 0; } "U.*" { solver smoothSolver; smoother symGaussSeidel; tolerance 1e-7; relTol 0; minIter 1; } "(e|h).*" { solver smoothSolver; smoother symGaussSeidel; tolerance 1; relTol 0; minIter 0; maxIter 0; } "(k|epsilon|omega).*" { solver smoothSolver; smoother symGaussSeidel; tolerance 1e-7; relTol 0; minIter 1; } "f.*" { solver PBiCGStab; preconditioner DILU; tolerance 1e-6; relTol 0; } } PIMPLE { nOuterCorrectors 3; nCorrectors 1; nNonOrthogonalCorrectors 0; pRefPoint (0.0276 0 0); pRefValue 101325; } relaxationFactors { equations { ".*" 0.7; } }
-
@李东岳 老师,我这个网格是三维的,图上展示了二维,用的结构网格,of9计算。目前发现我只要把流速设的大一点,就不会有这种问题出现,但是流速变小就不行了。另外,网格壁面不加密且数量少的时候它也不报错,自己也还在找原因中。
-
目前本人在用multiphaseEulerFoam求解器求解孔板中的油水两相流动,孔板架构如图
模拟过程中水是分散相且体积分数设为了0.005,运算时发现有时候运算会报错,计算过程显示Mules算法求解相分数时,不管连续相还是分散相,最小相分数都为0,偶尔为负。请问各位老师和同学们有没有了解这一问题的?不吝赐教。
-
我自己暂时的理解是,程序中fjfj.phase()/fj.x()和fkfk.phase()/fk.x()指代的是j和k的颗粒数目,也就是右边公式中的Nj和Nk。但是其中的fj.phase和fk.phase是什么含义就有点不太明白了。还有就是聚并速率的量纲是m3/s的,程序里面为什么还要再乘以i颗粒体积fi.x()?这样子的话量纲就不是每秒了。
-
在离散法求解群体平衡方程中,程序文件中颗粒聚并生成项(birthByCoalescence)和文献中的给的式子形式不太一样,请问哪位大佬可以帮忙解释以下程序中为什么还要多乘以颗粒的直径?
方程里面η在程序里面应该对应gamma,指的是颗粒的分配体积,c对应程序里的coalescenceRate -
@李东岳 另外请问分块方式对计算速度有影响吗,我都是用simple方法进行分块的
-
@李东岳 我台式是AMD 3600 6核, 工作站AMD EPYC 7502 32核,平时用都快不少,就这个算例基本没有加速效果,可能和网格有关系吗?
-
最近画了个釜式反应器,然后用的是结构化网格,一共50多万个六面体,使用自己台式机分四块并行计算和工作站分24块计算作比较,发现计算速度是一样的,请问这是什么原因?按理说速度最起码要提升一点啊,一点没提升是什么问题?网格是这样比较规整的
-
@tens 谢谢,这种我也考虑过,但是在进口凸起部分应该会出现涡流,流场结果可能会有偏差。我在尝试用mappeed边界条件来实现。
-
就是一个这样的结构,望各位大佬指点一二!
-
现在想模拟一个罐内多相流的循环,就是流体从底部出口流出后从上面的入口重新进入,来模拟泵的循环,目前进出口面积相等的案例已经使用cyclic边界加fvoptions模拟出来了,结果没啥大问题,质量都守恒。
但是如果我想让上面的进口大一点,下面保持不变,那cyclic边界就不能使用了。是否有其他边界边界可以代替?cyclicAMI边界是否可以实现?使用周期边界的话,进出口大小不一样是否会导致进多出少,质量的不守恒? -
@李东岳 好的,谢谢东岳老师
-
@李东岳 用的of7,那请问我这个网格的非正交性算大还是正常,如果网格质量不好那使用reactingTwoPhaseEulerFoam来计算是否会网格的敏感性有所改善?还是用最新的of9里面的multiphaseEulerFoam会好一点?
-
另外附上我的离散格式,出现负值是否因为离散格式设置错误?未包含有界限制?
ddtSchemes { default Euler; } gradSchemes { default Gauss linear; } divSchemes { default none; "div\(phi,alpha.*\)" Gauss vanLeer; "div\(phir,alpha.*\)" Gauss vanLeer; "div\(alphaRhoPhi.*,U.*\)" Gauss limitedLinearV 1; "div\(phi.*,U.*\)" Gauss limitedLinearV 1; "div\(alphaRhoPhi.*,(h|e).*\)" Gauss limitedLinear 1; "div\(alphaRhoPhi.*,K.*\)" Gauss limitedLinear 1; "div\(alphaPhi.*,p\)" Gauss limitedLinear 1; div(alphaRhoPhi.particles,Theta.particles) Gauss limitedLinear 1; "div\(alphaRhoPhi.*,(k|epsilon).*\)" Gauss limitedLinear 1; div((((alpha.water*thermo:rho.water)*nuEff.water)*dev2(T(grad(U.water))))) Gauss linear; div((((thermo:rho.particles*nut.particles)*dev2(T(grad(U.particles))))+(((thermo:rho.particles*lambda.particles)*div(phi.particles))*I))) Gauss linear; } laplacianSchemes { default Gauss linear uncorrected; bounded Gauss linear uncorrected; } interpolationSchemes { default linear; } snGradSchemes { default uncorrected; bounded uncorrected; }
-
如图,是一个搅拌釜内的液固两相流,用的twoPhaseEulerFoam,计算过程中逐渐发散,出现了很多负值,请问这个可能是什么原因导致的?对网格进行了质量检查,网格为非结构网格,这个非正交性的值是偏大还是正常范围?
fvSolution设置为:(为了不求解温度,我将h/e的迭代数设为0,是否对计算有影响?)solvers { "alpha.*" { nAlphaCorr 1; nAlphaSubCycles 2; smoothLimiter 0.1; implicitPhasePressure yes; solver smoothSolver; smoother symGaussSeidel; tolerance 1e-9; relTol 0; minIter 1; } p_rgh { solver GAMG; smoother DIC; tolerance 1e-8; relTol 0; } p_rghFinal { $p_rgh; relTol 0; } "U.*" { solver smoothSolver; smoother symGaussSeidel; tolerance 1e-5; relTol 0; minIter 1; } "(h|e).*" { solver smoothSolver; smoother symGaussSeidel; // tolerance 1e-6; relTol 0; minIter 0; maxIter 0; } "Theta.*" { solver smoothSolver; smoother symGaussSeidel; tolerance 1e-6; relTol 0; minIter 1; } "(k|epsilon).*" { solver smoothSolver; smoother symGaussSeidel; tolerance 1e-5; relTol 0; minIter 1; } } PIMPLE { nOuterCorrectors 3; nCorrectors 1; nNonOrthogonalCorrectors 0; } relaxationFactors { equations { ".*" 1; } }
希望各位大佬帮忙解答,感谢!
-
问题已经解决,是fvsolution设置问题,设置了稳态但是没有给收敛条件。
-
各位大哥,本人在做一个3D的两相搅拌釜,用MRF设置了内部旋转域,然后用twoPhaseEulerFoam进行了计算,计算算不了几步就自动终止了,也没有报错,这是什么问题?是发散了吗?望各位大佬指点
-
@李东岳 在 请问如何把pbm耦合气液多相流算例中? 中说:
?
博士论文方向是做搅拌釜内的气液两相流,由于版权问题只能用openfoam来做了,由于课题组之前在fluent有一定pbm基础,所以还是想用pbm来模拟,具体方向主要是反应器的设计的实验研究,把实验结果通过模拟对比一下,不是openfoam的攻坚 所以暂时还是追求着能用就行的原则来,后面可能对模拟精度要求高了,就要自己深入研究算法了
-
@李东岳 好的,谢谢李老师
-
@李东岳 是的,我们这边之前是在fluent上实现pbm耦合的,但是现在换到of上有很多要学的,所以想学习一下您的代码。
-
已解决,谢谢
-
看了东岳大佬的twoWayGPBEFoam文章,想把代码下下来看看,然后编译的时候出现这个问题
我是用的of-7编译的,是不是因为版本不同的问题?如果是的话修改哪些内容可以在of7上编译? -
@李东岳 好的谢谢李老师,请问您有IATE模型的比较好的文献或者教程推荐吗?刚刚试了一下里面的有些参数和计算原理不太理解。
-
@李东岳 文献看了很多,但是在具体操作上还是两眼一抹黑
-
@李东岳 谢谢李老师回复!我们这边主要是做反应器设计和实验研究的,比如搅拌釜中的气液和液液两相流,用pbm主要是想验证实验结果,大方向不是研究pbm算法植入优化之类的,看大多数文献上都是介绍算法植入之类的,所以想问下有没有那种现成的案例可以参考的,想了解一下具体的模拟过程或者有没有什么教程可以推荐的?谢谢大佬!
-
@李东岳 因为刚接触openfoam所以在ubuntu虚拟机上先练一练,服务器已经在采购中了,想用QMOM方法求解pbe,假设在twoPhaseEulerFoam中调用这种方法来求解,请问怎么操作?openfoam刚入坑,谢谢大佬,祝收敛!
-
@caijinjin 目前算例文件夹里面有这些文件,用twoPhaseEulerFoam可以进行求解,但是没有聚并和破碎的影响,修改哪些文件或者添加哪些文件可以实现pbm的耦合?还是修改求解器?
-
刚接触openFoam,想做一个气液两相流的案例,用twoPhaseEulerFoam进行求解,但是不知道怎么把pbm耦合进去来得到粒径分布,看了很多文献都是讲算法,但是想知道具体在openFoam中的实现方法,谢谢!
球形颗粒接触点的处理方法求助
群体平衡方程中新增子液滴分布函数,关于韦伯数的程序编译问题
群体平衡方程中新增子液滴分布函数,关于韦伯数的程序编译问题
群体平衡方程中新增子液滴分布函数,关于韦伯数的程序编译问题
集群上并行测试OpenFOAM,并行效率并没有比单节点提升
集群上并行测试OpenFOAM,并行效率并没有比单节点提升
气液搅拌釜顶部出口速度异常,导致epsilon等结果发散
气液搅拌釜顶部出口速度异常,导致epsilon等结果发散
气液搅拌釜顶部出口速度异常,导致epsilon等结果发散
集群上并行测试OpenFOAM,并行效率并没有比单节点提升
跨节点运行openfoam慢
管式填充床中两相流的模拟中,循环边界压力梯度、分散相含率运算出错的问题
管式填充床中两相流的模拟中,循环边界压力梯度、分散相含率运算出错的问题
管式填充床中两相流的模拟中,循环边界压力梯度、分散相含率运算出错的问题
计算出现负相率和负湍动能
计算出现负相率和负湍动能
关于multiphaseEulerFoam运算分散相体积分数问题
关于multiphaseEulerFoam运算分散相体积分数问题
关于multiphaseEulerFoam运算分散相体积分数问题
关于multiphaseEulerFoam运算分散相体积分数问题
离散法求解群体平衡方程中的程序含义
离散法求解群体平衡方程中的程序含义
并行计算速度没有变快
并行计算速度没有变快
并行计算速度没有变快
循环边界条件的设置
循环边界条件的设置
循环边界条件的设置
计算出现负相率和负湍动能
计算出现负相率和负湍动能
计算出现负相率和负湍动能
计算出现负相率和负湍动能
计算中断的问题
计算中断的问题
请问如何把pbm耦合气液多相流算例中?
求解器编译问题!
求解器编译问题!
求解器编译问题!
求解器编译问题!
请问如何把pbm耦合气液多相流算例中?
请问如何把pbm耦合气液多相流算例中?
请问如何把pbm耦合气液多相流算例中?
请问如何把pbm耦合气液多相流算例中?
请问如何把pbm耦合气液多相流算例中?
请问如何把pbm耦合气液多相流算例中?