@eddy OpenFOAM的2D网格是楔形网格(其实是三维的,只是在第三维(Z方向上)只有一个网格),fluent的2D网格是实实在在的二维平面网格,应该是没有直接转换的工具
D.Benjamin
帖子
-
-
@李东岳 好的,谢谢老师,我再研究一下~
-
谢谢李老师,往一个入口通气,在三个出口当中,计算过程中有2个出口是100%回流,这不合理呀。但是在做试验的时候,三个出口是有气体流出的@李东岳
-
各位大佬,
本人最近在做一个算例,一个入口,三个出口。其中两个小的出口计算时出现100%的回流,这两个出口的压力小于0(负压)。我尝试过增长出口长度,重新划分了网格(网格质量也没有问题)等办法都没有解决这个问题,请问会是什么原因呢?出口为负值,低于大气压,怎么会是这样的?望不吝赐教,谢谢! -
各位大佬,
我最近在做一个温度场模拟,模型简单来说:是一个密闭空间,空间外部是自然环境,空间内部是真空,内部有一固体热源,热量通过真空辐射传热至封闭空腔的壁面,再经壁面对流换热传至外界。
我的问题是,内部空腔的真空区域怎么设定材料属性?网格导入后,真空区域默认为流体区域,设置空气材料显然是不正确的。
另外,若该真空区域未达到理想的完全真空,真空度为90%(可认为是存在稀薄的空气),这种情况又该如何模拟?
望答复,祝好! -
@samuel-tu OpenFOAM网格可以转换成Fluent的.msh,但是用于OF的二维轴对称楔形网格不能直接转换成Fluent二维网格
-
各位CFDer,大家好!
最近我使用Fluent meshing画网格,在管道的过渡区域,自动生成一个wrapper的边界条件,鼠标点击下拉选项,这个wrapper会自动消失。请教一下是否有人遇到过这种情况,该wrapper在Fluent中会被如何处理?谢谢!!
-
@Samuel-Tu 您好,感谢您的分享!但我不太不清楚该功能实现可以用在什么场合,另外,bm是一个边界的名称吗?还是某个类的对象?谢谢!
-
@cxzhmg 谢谢您的回复!您的回复给了我很好地思路,我有几个问题:
-
在gsum求和再付给入口之前需要进行面平均处理,所以可能正如您所说,在循环出口边界的时候,每个processor多计算了分界处的网格,才导致并行计算结果大于实际结果。您推荐用g开头的openfoam自带的函数给了我很好地思路,所以如果有一个g开头的取某个场面平均的函数就好了,然而gAverage()是算数平均,不是面平均。另一个思路是如果有一个g开头的函数可以得到某个场关于出口网格面的积分值,然后除以整个出口的面积,也可以得到面平均。
-
所以,请问在哪里可以查到如gSum()这些g字开头的函数?并行计算我现在只知道gSum()和gAverage()两个函数,我想更多地了解一下,要是能够找到我上面所说的g开头求场面平均或者求场的面积分函数就好了。
期待回复,祝好!
-
-
@玉玺 好的,我也准备回宿舍休息了,明天再交流吧。还有,我不是大佬,我只是比你学得久一点点的初学者,东岳老师以及贴吧里一些讲师,教授们,他们才是大佬
-
@玉玺 你好,你的第一行是对的,由于我不做颗粒,我研究的就是流体,所以我不清楚你的第二行那样获取颗粒速度是否正确。你可以先测试下。不过我觉得,获得出口速度值应该类似于这样的:
const volVector& U=this->db(). lookupObject<volVectorField>("U.particles")[patchIndex];
欢迎继续交流
-
@玉玺 我不是做两相流的
-
@玉玺 你好,我目前不研究两相流,不能给你具体方案,从我们上述讨论中你应该可以找到思路,祝好
-
@东岳 谢谢老师,我已经找到网格生成规律了,从左至右,由下至上地规律依次生词。满足误之前需求工作,reNumberMesh有需要我再去琢磨吧,再谢!
-
各位大佬,请问OpenFOAM网格序号可否重新命名?当划分好一套网格后,并不知道网格序号对应网格中的是哪个网格,我目前在做一个算例,需要对每个网格依次添加某些信息,由于不同网格添加的值不一样,所有需要重新为网格序号命名,然后才能正确地为网格依次添加信息,期待大佬们的回复,谢谢!
-
大家好,请教一个问题,我想用buoyantBoussinesqSimpleFoam求解器求解层流问题。将湍流参数字典设置为层流,我发现仍然需要在transportProperties字典中提供湍流Prt数?这里的Prt数参与计算吗?
同时,0字典中,也仍需要提供alphat文件。 -
@东岳 在 OpenFOAM小代码 中说:
东岳老师,请教几个小问题:
- 在编译过程中报错:
'mesh_' was not declared
,所以mesh_
是不可以直接使用的,但是我不太理解什么是类内可以调用的成员变量,感觉速度场U,温度场T等都是类内可以调用的成员变量? - 如果
mesh_
不可获取,U_
可获取。上面说mesh_
是类内可以调用的成员变量,然而U_
又是什么? - 声明一个tmp变量,
mesh_
表示什么意思呢?在声明U、T、p等场的时候,mesh_
的位置常常写的是mesh
期待回复,祝好!
- 在编译过程中报错:
-
东岳老师,CFD中文网我记得以前是可以搜索帖子的,输入一些关键字,查找所有相关帖子,但现在怎么没有那个“放大镜”搜索选项了?还有自己发过的帖子也只能在自己的主页里面查看短短几条。难度现在CFD中文网变成了回答最新问题,以及问问题的网址了吗?(已经发布的几千条帖子寻找想要的帖子,是何其困难的一件事呀!)
-
@中国轰炸机飞机斯曼 @CFD中文网 请问,swak4Foam支持OpenFOAM-6.0或者-5.x吗?换句话说,OpenFOAM-6.0或者-5.x可以使用groovyBC边界条件吗?
-
@东岳 谢谢老师,确实有可能是一种边界条件
-
大家好,如题所示,我想请教一下chtMultiRegionFoam共轭传热边界的换热原理。我查看了求解器
chtMultiRegionFoam.C
文件,里面只有sloveSolid.H
与solveFluid.H
,没有具体的换热原理文件或公式。我猜测是对流换热:
$$\ q = \ h(\ T_1 − T_2) $$q为热流密度,h为换热系数,T1和T2分别是换热边界两侧温度。
但是,我们在使用chtMultiRegionFoam时,不需要在thermalProperties文件中指定换热系数h,所以我很疑惑其具体换热原理与实施办法,求各位解答,谢谢!
另祝大家五一节快乐! -
请问在fvOptions字典中,SIMPLE内没有提到关键字
momentumPredictor
,是不是表示默认设置了momentumPredictor yes;
啊?也就是说上面提到的if (simple.momentumPredictor())
默认是执行的?SIMPLE { nNonOrthogonalCorrectors 0; pRefCell 0; pRefValue 0; }
-
@东岳 @yuan_neu 两位老师好,我尝试了上面东岳老师推荐的并行方法,编译可以通过,且可以并行运行计算,但是,我发现计算结果与串行相比,具有较大偏差(初步估计大了3-5%)。
同样一行代码(如下所示):
// 串行 const scalarField C_outlet = C.boundaryField()[patchId]; Info << "C_outlet:" << C_outlet << endl; // 并行 const scalarField C_outlet_SP = T.boundaryField()[patchId]; Info << "C_outlet_SP:" << C_outlet_SP << endl;
C_outlet与C_outlet_SP的结果相差较大(并行读取结果偏大),由于我的入口边界条件是对所有网格的C_outlet进行面平均的0.95倍:
C_inlet = 0.95 * C_outlet_avarage;
由于并行读取结果偏大,最后导致了入口值反而大于出口值。这是不是并行的bug?
求解答,祝好!
-
@东岳
scalar t = this->db().time().value();
老师好,请教二个小问题:
this->
在本帖中应该是指代该边界,但我不太清楚其具体意义和在OpenFOAM中的使用方法,老师可以给一点说明吗?db()
是一个什么函数呢?
望不吝赐教,谢谢!
-
@东岳 老师,又来叨绕你了。以上问题已经解决,编译可以通过,FOAM也可以成功进行计算。然而,不能并行计算。似乎在求解器中修改边界条件,会对并行计算产生影响。我的猜测是,并行计算需要将网格分裂成许多块,这样它们就只能根据0字典下的边界条件进行计算。在求解器中强制对边界条件进行修改,使得入口温度是出口的一半,由于网格分块并行,在某些块中不能获取到出口的值,因而并行计算时就会报错。
所以,想请教一下,有没有什么解决的办法?使其可以并行计算呢?谢谢 -
@我是河滩 这个图像反应堆,你是做堆物理或热工的?
-
@东岳 非常感谢
-
上面说错了一点点,是:修改入口处的温度值的方案;不是:修改入口处x方向的温度值的方案。温度是标量,刚才不小心打错了
-
@东岳 老师好,经过这几天的学习,我在网上一些博客中找到了一些答案,但是他们给出的代码有问题,编译不能通过。下面,我将给出两个不同帖子中关于如何修改入口处的x方向温度值的方案:
方案一:
label patchIndex = mesh.boundaryMesh().findPatchID("inlet"); scalarField &patchField = T.boundaryField()[patchIndex]; forAll(patchField, i) { patchField[i] = 10.0; }
我发现,在进行wmake编译时,会出错。问题在于" &patchField "前面的取址符号&。虽然去掉上述代码中取址符号&,编译可以通过,但并不能改变入口处温度场的值(即入口处温度场的值仍是原来的值,这段代码便没有意义了),下面为编译报错情况:
方案二:
label patchIndex = mesh.boundaryMesh().findPatchID("inlet"); scalarField patchField = T.boundaryField()[patchIndex]; forAll(patchField, i) { T.boundaryField()[patchIndex][i] = 10.0; }
然而,编译仍然不能通过,下面为报错情况:
别人博文上的东西照理说应该是正确的呀,真不知道该怎么办了,跪求各位老师,大神,大佬指点!!
-
@东岳 老师好,我只是打个比方。我需要设置一个入口边界条件,该边界条件与出口的物理量相关。不想扯大段的背景,所以就这样简答描述了。这种情况是存在守恒的,比如说,在某一容器中,有一释热源,流体从容器出口流出,经过外部冷却后再重新经入口流入容器。如此以来,入口值是有可能是出口的一半的
-
各位大佬,请教一个问题:
如果我想设置一个入口边界条件,该边界的值是出口边界平均值的一半,
即phi_in = 0.5 * phi_out
请问该如何实现,我想到了codedFixedValue边界条件,但是不知道该如何获取出口处的物理量,望各位大佬赐教!祝好!
-
大家好,在我们使用OpenFOAM求解时,求解的场数据在两套不同数量的网格之间进行映射,我们使用如下方法(user's guide):
mapField [source dir] -consistent
然而,这个映射的原理是什么呢?是插值吗?是否有具体的公式原理?有相关资料说明吗?提前谢谢各位大佬赐教
-
各位大佬,同一套网格,Fluent可以计算,OF却计算发散,可能的原因有哪些?(OF计算10多步后,K和epsilon就无穷大了。网格是结构化网格+非结构够化网格,由于模型较为复杂,所以部分区域就画成非结构化网格了)
期待大家的回复,谢谢 -
大家好,请问paraview如何获得三维流线图?如下图这样的,用户指南上关于流线图的说明仅仅是寥寥几笔,请各位不吝赐教,谢谢!
-
@东岳 请问李老师,turbulence->correct()中的correct()函数具体是怎么实施的?源码在哪里可以找到?谢谢
-
@东岳 老师,functionObject的求流率的方法是对面域通量phi求和,paraview是对面域求积分,哪个更能代表流率呢?
-
@mohui 你好,paraview确实可以截取一个面,然后进行积分,但是我发现一个问题:
当我想获得某个faceZone上面的流率,我分别采用functionObject和paraview的方法来做
functions的方法和结果如下:functions { #includeFunc flowRateFaceZone(name=in_core) … other function objects here … }
结果:
# Region type : faceZone in_core # Faces : 34 # Area : 1.844282222040e-02 # Time sum(phi) 1 1.923278992112e-05 2 4.681282016134e-05 …… 50000 6.288750194955e-02
下面是使用paraview截取该面,进行Filters --> Integrate variables的结果:
结果显示,面域大小(Area)0.0184428是一样的,但是所得的结果却不一样,一个是0.0628875,一个是0.0629128,搞不清哪种方法获得的流率才是正确的。
-
@东岳 老师,这个指令不行,因为我监测的不是边界(patch),而是自己构建的一个faceZone,是一个内部面。应该是目前OpenFOAM尚未有这个功能吧
-
@东岳 谢谢东岳老师,体平均的方法我会,但是我想要知道面平均的结果。比如说,我想知道进出口平均温度(应该是指的进出口那个面的平均温度),而体平均得到的是一个区域(或者说一个块)的平均。OpenFOAM没办法做到这一点吗?
-
我想使用functions获得某个面域平均温度,于是自己写了如下代码:
surfaceFieldValue_out_core { type surfaceFieldValue; libs ("libfieldFunctionObjects.so"); log true; writeControl writeTime; writeFields true; regionType faceZone; name out_core; operation weightedAreaAverage; surfaceFormat foam; fields ( T ); }
然而,运行之后报错,如下所示:
[4] --> FOAM FATAL ERROR: [4] surfaceFieldValue surfaceFieldValue_in_core: faceZone(in_core): Unable to process internal faces for volume field T
似乎体积场的值不可以进行面域平均,这样的话,获得“面域平均”值该如何做到呢?望各位大佬不吝赐教,谢谢!
-
@Foamer24 因为求解的是P_rgh,所以只能看P_rgh的残差
-
@东岳 前辈,请问peric的书指的是哪一本?
-
为什么我的帖子总是没人回,伤心,是我问的问题都太奇怪了吗?(我上面确实是按照用户指南上面的说明,画的楔形网格,前后面设置成wedge,二维轴对称模拟,没错。但为何速度场在第三维会进行求解?)
-
大家好,下面是我模拟二维轴对称问题(楔形网格)时的残差输出数据:
# Residuals # Time Ux Uy Uz 1 5.309251929100e-09 1.000000000000e+00 4.436625998480e-26 2 4.414663995710e-01 2.951341476950e-01 3.919150148100e-01 3 2.663688575780e-01 3.034687781910e-01 2.766193325110e-01 ……
为何在Z方向会有残差的输出?Z方向只有一个网格厚度,按道理说,在第三维方向不会进行求解呀。肯定有很多大佬做过二维轴对称的模拟,请各位帮忙解答一下,谢谢
-
@benqing 你要的不就是按照网格提取吗?刚才你测试,midPoint得到的是网格中心的值,那不就对了吗?这个表在哪里找的呀?整理得这么好,还是中文的
-
@benqing 你好,type的类型改成midPoint,然后去掉nPoints那一项,试试,如何可行的话,请给我回信,谢谢
-
各位大佬,请教2个问题
- 是否可通过paraview获得流场体积流率(或者质量流率)?流场是一个回路,靠泵驱动进行流动,我想知道流场的体积流率
- 由于OpenFOAM计算不可压缩流动是没有密度rho的,这就导致最后得到的湍流粘度场为运动粘度nut(单位是m2/s),但是我想获得粘度场(单位为Pa·s),那么nut的值都需要乘以密度的值,paraview只能显示nut的云图,可否用paraview对某个场乘以一个固定值?获得粘度场的云图呢?
望不吝赐教,感谢!
-
@我是河滩 你好,他只修改了U的方程,并没有修改p方程,只是定义了一个新的压力梯度场。他上面三个尝试应该都是一样的。有一点我不是很明白,就是尝试3中的volumeMode,两个关键字absolute和specific有什么具体的区别。如果东岳老师可以帮忙解答一下就好了。@东岳
-
@东岳 @dzw05 两位老师好,上面的问题我已经解决了,确实是版本问题,我最后找到了新版的makeAxialMesh,就能够编译成功了,但是我遇到一个新的问题。就是在使用了makeAxialMesh之后,我在命令行键入collapseEdges,会出现大量的warning,如下所示:
--> FOAM Warning : From function virtual void Foam::wedgePolyPatch::calcGeometry(Foam::PstreamBuffers&) in file meshes/polyMesh/polyPatches/constraint/wedge/wedgePolyPatch.C at line 70 Wedge patch 'frontAndBack_neg' is not planar. At local face at (0.0975 0.1975 0.00489095) the normal (0 0.0435786 -0.99905) differs from the average normal (-4.60529e-27 0.043578 -0.99905) by 3.70688e-13 Either correct the patch or split it into planar parts Reading createPatchDict
然后我checkMesh,同样会出现上述的大量warning,但是最后check的结果是Mesh OK。请两位老师帮我解答一下,谢谢
OpenFOAM的2D网格能够转成fluent2D网格吗
压力出口计算结果为负压的原因?
压力出口计算结果为负压的原因?
压力出口计算结果为负压的原因?
请教Fluent真空辐射模拟
OpenFOAM的2D网格能够转成fluent2D网格吗
Fluent meshing wrapper边界条件是什么?
小代码
如何设置一个入口边界条件:入口边界值为出口平均值的一半
如何设置一个入口边界条件:入口边界值为出口平均值的一半
如何设置一个入口边界条件:入口边界值为出口平均值的一半
如何设置一个入口边界条件:入口边界值为出口平均值的一半
如何设置一个入口边界条件:入口边界值为出口平均值的一半
OpenFOAM网格序号重新命名?
OpenFOAM网格序号重新命名?
buoyantBoussinesqSimpleFoam层流求解问题?
OpenFOAM小代码
CFD中文网很多功能取消了?
groovyBC好像不起作用
chtMultiRegionFoam共轭传热边界的换热原理
耦合换热求解器chtMultiRegionBoussinesqPimpleFoam
chtMultiRegionFoam共轭传热边界的换热原理
OpenFOAM怎么加载重力场?
如何设置一个入口边界条件:入口边界值为出口平均值的一半
关于时变边界条件设置的问题
如何设置一个入口边界条件:入口边界值为出口平均值的一半
如何给定网格内部面上的流动参数?
如何设置一个入口边界条件:入口边界值为出口平均值的一半
如何设置一个入口边界条件:入口边界值为出口平均值的一半
如何设置一个入口边界条件:入口边界值为出口平均值的一半
如何设置一个入口边界条件:入口边界值为出口平均值的一半
如何设置一个入口边界条件:入口边界值为出口平均值的一半
请教OpenFOAM不同网格之间场映射的原理
同一套网格,Fluent可以计算,OF却计算发散
paraview如何获得三维流线图
OpenFOAM与python的耦合
请教OpenFOAM获得某个面域(faceZone)的平均温度的方法
请教OpenFOAM获得某个面域(faceZone)的平均温度的方法
请教OpenFOAM获得某个面域(faceZone)的平均温度的方法
请教OpenFOAM获得某个面域(faceZone)的平均温度的方法
请教OpenFOAM获得某个面域(faceZone)的平均温度的方法
OpenFOAM残差监控的疑问
OpenFOAM计算二维轴对称会不会对Z方向(第三维)进行求解?
OpenFOAM计算二维轴对称会不会对Z方向(第三维)进行求解?
OpenFOAM计算二维轴对称会不会对Z方向(第三维)进行求解?
openfoam后处理按照网格信息提取数据
openfoam后处理按照网格信息提取数据
关于paraview的几个问题
动量方程如何加入加压力梯度源项?
请问.msh的2维旋转轴对称网格如何转换到OpenFOAM