个人觉得没必要考虑吧
OItoCFD
帖子
-
【求教】OpenFoam模拟波浪的壁面函数设置 -
如何对拉格朗日粒子进行统计?@Rachel0096 就加在你的所用的求解器的c文件更新粒子附近的地方吧,我只是写了个大概的,具体的你得看你用的求解器里面的具体内容
-
如何对拉格朗日粒子进行统计?@Rachel0096 ```
label particleNumber;
particleNumber = 0;
forAllIter( basicKinematicCloud , kinematicCloud, iter)
{
parcelType& p = iter();
// 判断颗粒位置是否在你的slice附近范围内,如果是:
particleNumber+= p.nParticle();
//否则不计数
}
reduce(particleNumber, sumOp<label>()); -
请教关于浸入边界法的问题,IBM方法的问题@李东岳 我在使用过程中,一个网格里多个ib点基本上没问题,问题都出在如果只是固体边界布置一圈浸入边界点,内部是虚拟流体,这样容易透水,但是这方法我算出来的力很光滑。对于很多复杂界面,我为了防止透水,固体表面包络的所有内部流体网格里我也全都每个网格中心布置一个浸入边界点,这样可以避免大部分透水问题,但是这样有时候算出来的力会有小震荡,应该是还是对内部的插值做些特殊判断我没做
-
请教关于浸入边界法的问题,IBM方法的问题@eason 理论上来说是的,用外在的导出得到的散点不一定满足ib点条件,在这种情况下,我会把散点包络的所有内部虚拟流体网格也全部作为浸入边界点了,这样能有效避免透水问题。我原本的方法是只是边界布置点内部虚拟流体,但是确实稍有不慎就透水
-
请教关于浸入边界法的问题,IBM方法的问题@eason 就建模软件建好,导出stl或其它格式,把其中散点数据单独复制出来,然后再openfoam读入进行后续操作
-
请教关于浸入边界法的问题,IBM方法的问题@Rachel0096 r如果只是边界布置进入边界点的IBM,内部是有流场的,他这个应该是有的我好像看过这篇,他只是后处理额外画个圆柱盖住内部虚拟流体
-
植入拉格朗日粒子的Ueqn中需不需要加phicForces?@jasper-0 我觉得不需要
-
植入拉格朗日粒子的Ueqn中需不需要加phicForces?@jasper-0 我的话我是没考虑你说的这个 主要还是先看你问题吧 你的颗粒属于哪类型的 一般需要什么力 你甚至可以不用他自带的力 全关掉 自己循环颗粒自己算你所有应该有的力 加在一起给U方程
-
植入拉格朗日粒子的Ueqn中需不需要加phicForces?@李东岳 他这里应该是自己用其他不带LPT的求解器额外连接openfoam的LPT包,在U方程里直接加比较简单
-
OpenFOAM+IBM@rachel0096 我没看过他这个 但基本都大同小异 其实 写一个ibm在openfoam就用不了多少代码 我也就看了几篇文章 找准一篇你觉得好实现的对着做 你可以先用最简单的方法 比如在pimplefoam里 对于2d圆柱绕流 写一个函数检测小于半径r范围内的cell 这样就检测出一个圆柱范围内的流体cell 标记为1 其他流体的cell标记为0 然后在压力方程那里 根据固体cell和desired velocity的速度差算出体积力 加给phi那里 进入压力迭代 这就是一个最简单的ibm 这个弄对了再加上二阶插值分布函数那些来考虑更高精度的界面识别
-
OpenFOAM+IBM@rachel0096 您好 我也在持续学习中 可以在这个帖子里有啥问题直接问我 如果我知道的话肯定就解答一下
-
气液固三项流,耦合interFoam和DPMFoam可以实现吗?@小狗狗 是的 openfoam里这种颗粒,算力是拖曳力系数用类似莫里森方程来算,算是概化模型吧,运动那些都是当为一个支点,不是grid-resolved。如果是精细考虑颗粒,每个颗粒表面也要画网格,受力是根据颗粒表面附近流体节点压力积分来算,再算总的这个颗粒平动转动。
-
globalNumbering_的作用是怎么发挥的?(OF中的全局索引和局部索引)@李东岳 老师,我自己觉得是可以,只是我没想好具体的实际方法,这也是为什么我选择在均匀的网格下弄。 我对于我现在均匀网格的就这么搞得 我自定义了我的固体活动范围里的网格编号和关系 均匀网格的连接关系很简单 我甚至连数组都不用开个去记录 我只是为了并行 预处理了固体活动范围内每个网格所在核心的编号和所处分块区域内我自定义编号的cell在对应核心对应分解域内的真实编号 计算时候根据连接关系,o(1)的运算时间取出临近网格的自定义标号 然后根据预处理记录的它在所属分块内的真实编号来计算 。
只是对于非结构网格,不均匀,有变形这种,我具体不太知道openfoam里编号的规律,也不知道老师您这里具体的应用场景是什么。我个人觉得,也是在进入时间步循环前,搞个预处理,把非结构网格的cell中心坐标提前循环一遍预处理,映射给自己自定义的一套均匀网格,然后一个数组记录,数组下标是自定义映射均匀网格的编号,该数组下标里数组对应内容是落在这个自定义网格内的非结构网格的真实编号,均匀网格的关系很简单,可以简单查找临近关系。而且这个映射网格的作用纯粹就是,映射个大致的位置关系。但是这个映射的均匀网格的尺寸要小于实际非结构最小cell的尺寸,大致我是这么想的。但是这样我不知道提前记录的内存开销有多大,我觉得甚至还不如,自己知道每个非结构网格要查找的周围感兴趣网格范围,每个模拟开始进入时间步前,提前预处理输出给文件打个表 (因为是预处理,所以无所谓,各种findcell也花不太久,因为只需要执行一次并记录),然后运算时候,对于某个非结构网格,直接读取预处理打表的那个文件,再取出周围符合关系的网格编号。这里读取文件,和字符串处理花一点运算时间。
-
globalNumbering_的作用是怎么发挥的?(OF中的全局索引和局部索引)@李东岳 老师这个我就没仔细看extend的代码了,我是看他们还有压力震荡我就直接自己重写IBM了。我在写类似方法时候是按照网格的固体填充度算一个梯度得个方向矢量,然后沿着矢量方向findcell,速度极慢。现在是直接固体表面拉格朗日点,背景流体网格全用均匀的正四面体,这样随便给一个粒子坐标,o(1)的时间就知道它位于哪个流体网格。前后左右上下的临近网格也都是o(1)就能算。不用findcell了。但是就丢掉了非结构网格的优势。
-
globalNumbering_的作用是怎么发挥的?(OF中的全局索引和局部索引)@马乔 谢谢指导,foam-Extended那个ibm的方法我不喜欢,我之前看的别人用的好像还是压力震荡的问题,我自己写的ibm没压力震荡,而且因为是自己写的,我结合其他有限元的方法更方便写的速度更快。问题只是出在并行写法上,用到并行其实就是ib点的速度插值,和体积力分散给流体这里,用二阶函数要用到周围两个格子距离内所有网格,会跨区域,但是一直findcell再合并,对于移动物体没法预处理打表的是真的慢。
-
如何给时间空间二阶精度两步映射法的求解器添加紊流模型和VOF?@李东岳 谢谢!
-
如何给时间空间二阶精度两步映射法的求解器添加紊流模型和VOF?@李东岳 好的谢谢老师,那我添加紊流模型,直接nu用nuEff()代替可以吗,我就调用下LES,不用RANS。
-
如何给时间空间二阶精度两步映射法的求解器添加紊流模型和VOF?各位老师和同学,
我用Admas-bashforth格式写了一个新的求解器,用的两步映射法,没用PISO或pimple,简要代码如下:fvVectorMatrix UEqn ( fvm::ddt(U) + 1.5*fvc::div(phi, U) - 0.5*fvc::div(phi.oldTime(), U.oldTime()) == 1.5*fvm::laplacian(nu, U) - 0.5*fvc::laplacian(nu, U) + 0.5*fvc::grad(p) ); fvScalarMatrix pEqn ( fvm::laplacian(p) == 2.0/3.0*fvc::div(phi)/dt );
请问,
- 如何添加紊流模型?
直接按照原始求解器,建立紊流模型的指针后,获取nuEff(), 把nu替换成nuEff(),这样是正确的吗? - 如何添加VOF?
我还没尝试,不知道直接仿照interFoam,把该包括的子文件包括进去,Ueqn加上重建的那一部分,是不是可行,有没有什么误区。
谢谢各位!
- 如何添加紊流模型?
-
globalNumbering_的作用是怎么发挥的?(OF中的全局索引和局部索引)@马乔 您好,想请教一下,对于流固耦合,我现在用的浸入边界法,按照您的经验,并行时候我需要把固体节点也分割给不同decomposed流体区域吗,还是每个流体区域都享有同样的完整的固体数据免得固体信息还要传来传去。但是就算如此,固体和流体之间插值时候,我用二阶插值,还是免不了外部循环总固体节点,内循环是在每个固体节点处查找邻近的两个网格间距内所有流体cell,会用findCell,效率奇低。不知您有什么建议吗?谢谢