OpenFOAM

4.5k Topics 26.2k Posts
  • OF能否断点编译?

    1 Posts
    416 Views

    编译C文件的时候,我总是使用注释来找出错误的地方,然后保存,再在终端wmake一下。但感觉这样的编程效率太低,OF里能否断点编译?能的话需要使用到哪些软件工具,大家有什么推荐吗?

  • OpenFOAM边界条件问题

    1 Posts
    1k Views

    我用OpenFOAM计算外流问题,当来流速度设置为0时可以正常计算,但当来流速度大于零时最多计算一步流道就堵塞了,我怀疑是边界条件有问题。我的边界条件设置如下,请教大家这样搭配可以吗?如果不行应该是怎样呢?
    U

    FoamFile { version 2.0; format ascii; class volVectorField; location "0"; object U; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 1 -1 0 0 0 0]; internalField uniform (0 0 0); boundaryField { //- Set patchGroups for constraint patches #includeEtc "caseDicts/setConstraintTypes" inlet { type fixedValue; value uniform (0 0 50); } outlet { type zeroGradient; } symm { type slip; } propellerW-f { type movingWallVelocity; value uniform (0 0 0); } propellerW-s { type movingWallVelocity; value uniform (0 0 0); } propellerW-h { type fixedValue; value uniform (0 0 0); } propellerW-t { type fixedValue; value uniform (0 0 0); } }

    p

    dimensions [1 -1 -2 0 0 0 0]; internalField uniform 101325; boundaryField { //- Set patchGroups for constraint patches #includeEtc "caseDicts/setConstraintTypes" inlet { type zeroGradient; } outlet { type fixedValue; value uniform 101325; } symm { type slip; } wall { type zeroGradient; } }

    T

    dimensions [0 0 0 1 0 0 0]; internalField uniform 293; boundaryField { inlet { type fixedValue; value uniform 293; } outlet { type inletOutlet; inletValue uniform 293; value uniform 293; } symm { type slip; } "inter.*" { type fixedValue; value $internalField; } wall { type zeroGradient; } #includeEtc "caseDicts/setConstraintTypes" }

    nuTilda

    dimensions [0 2 -1 0 0 0 0]; internalField uniform 1e-5; boundaryField { //- Set patchGroups for constraint patches #includeEtc "caseDicts/setConstraintTypes" inlet { type fixedValue; value uniform 1e-5; } outlet { type inletOutlet; inletValue uniform 1e-5; value uniform 1e-5; } symm { type slip; } wall { type fixedValue; value uniform 0; } }

    nut

    dimensions [0 2 -1 0 0 0 0]; internalField uniform 8.58e-6; boundaryField { //- Set patchGroups for constraint patches #includeEtc "caseDicts/setConstraintTypes" inlet { type fixedValue; value uniform 8.58e-6; } outlet { type inletOutlet; inletValue uniform 8.58e-06; value uniform 8.58e-06; } symm { type slip; } wall { type nutUSpaldingWallFunction; value uniform 0; } }

    alphat

    dimensions [1 -1 -1 0 0 0 0]; internalField uniform 0; boundaryField { inlet { type calculated; value uniform 0; } outlet { type calculated; value uniform 0; } symm { type slip; } "inter.*" { type fixedValue; value $internalField; } wall { type compressible::alphatWallFunction; Prt 0.85; value uniform 0; } #includeEtc "caseDicts/setConstraintTypes" }

    其中inlet,outlet,分别是进口和出口,几何边界条件为patch;symm为四周的自由边界,为柱状,几何边界条件为patch,propeller是计算的螺旋桨,几何边界条件为Wall;计算所用湍流模型为SA模型,所用求解器为rhoSimpleFoam,设置了两块MRF区域,MRF设置如下:

    FoamFile { version 2.0; format ascii; class dictionary; location "constant"; object MRFProperties; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // MRF1 { cellZone sector_part1; active yes; Fixed patches (propellerW-f); nonRotatingPatches (); origin (0 0 0); axis (0 0 1); omega 112.5737; // rad/s } MRF2 { cellZone sector_part2; active yes; Fixed patches (propellerW-s); nonRotatingPatches (); origin (0 0 0); axis (0 0 1); omega -112.5737; // rad/s }
  • DNS中△y+的意义和计算方法

    4 Posts
    1k Views

    @Calf-Z-DNS delta Y+的计算公式你已经写出来了,和delta X+是一样的。平板边界层的估算算法:https://www.cfd-online.com/Wiki/Y_plus_wall_distance_estimation

  • 1 Posts
    624 Views

    算例为土柱冻结算例,起始土柱内部温度为6.7℃,土柱顶部施以温度为-6℃的循环液流(the circulating fluid),使土柱从上到下逐步冻结,下图为示意图,
    捕获.JPG
    温度边界条件:
    变热通量上边界条件/a variable heat flux upper boundary condition:
    qh=hc(TCoolant-TTop), hc=28 W m-2 K-1
    其中:TCoolant是循环液流的温度值(-6 ℃),而TTop是土柱顶部温度,我理解的是每一次时间步长计算后都会更新,所以顶部通量是一个动态更新的过程。
    1、之前有看过关于fixed heat flux boundary的帖子,采用fixedGradient边界条件代替,但没找到关于 variably heat flux boundary condition
    2、 采用swak4Foam?
    希望能给我一些建议,共同探讨下。非常感谢!

  • 1 Posts
    564 Views

    大家好,我最近想做一个这样一个多孔介质:在多孔介质的不同部位,接触角也是不同的。即通过指定两点坐标,来设置两点所包含几何体的接触角,类似于setFields中设置水相分布的功能。这能否通过在openfoam中编译程序来实现?谢谢大家了。

  • 粘弹性求解器做液滴碰撞

    4 Posts
    1k Views

    @东岳 我在做单液滴破碎时没有发散,但是用同样的物性和离散格式等做液滴碰撞case就会出现发散

  • 2 Posts
    734 Views

    是的,可以

  • 4 Posts
    1k Views

    @Vortex编译边界条件inflowGenerator时出错了 中说:

    研究方向和我的非常类似,可否留个联系方式一起讨论?

    微信18641966793邮箱2363021436@qq.com

  • 3 Posts
    1k Views

    @东岳 非常感谢东岳老师回复。请问不成立的原因是什么呢?

  • OpenFoam 5.x 计算颗粒是不是有bug?

    8 Posts
    3k Views

    折腾老半天找到了这个
    https://github.com/blueCFD/lagrangianExtraFunctionObjects/tree/OF5x
    可以把5x的格式转化为以前的旧版本格式输出

  • 11 Posts
    5k Views

    @东岳 哇,感谢李老师热心回复,暑假刚刚参加您的GCFD和OKS全程班,收获很大,可以看到您对CFD的热爱,希望自己以后也可以有李老师的这样深的知识储备和宽广的胸怀!为CFD发展贡献一份力量! :xiexie:

  • 2 Posts
    1k Views

    patch和wall基本一样,只不过wall可以用壁面函数,对结果没影响

  • 1 Posts
    668 Views

    主要计算问题为波浪与结构物相互作用问题,想请教一下,我在结构物表面设置几个点用来检测压强随时间变化,但是在初始压强数据中出现负数(刚开始计算,波浪还没有作用于结构物上),为什么初始阶段压强会出现负值?

  • 1 Posts
    881 Views

    最近用openfoam 计算S809翼型的流场,但是得到的表面压力系数与与实验数据差距较大,请求各位大神的帮助。

    计算采用simpleFoam,湍流模型kOmegaSST。

    下面是翼型周围网格和一些设置,首层网格高度0.000005
    0b33e408-2ee1-419e-aeb7-8615757ffca8-image.png
    边界条件:
    U
    f51bdd78-c6d5-4960-8686-6e03b89191dd-image.png
    p
    282bcdb1-d528-41e5-88ef-c59f84909d1f-image.png
    离散格式:
    6359ed49-0969-40e2-86db-b6d122f15b61-image.png
    求解器
    a86f832a-4b90-4232-81a8-e50d068e0a21-image.png
    23cf9070-6eac-4a8a-ac2e-1ef8f86f2c83-image.png

    计算结果
    速度流场:
    c547ed21-76a6-4993-b129-9f20941065af-image.png
    压力场
    47eae6b7-bb1f-42b7-949d-7117a0c6b5be-image.png

    速度场和压力场云图看起来问题不大,但是表面系数与实验差别较大:
    f1c5a2e6-570b-4b75-a4be-b0b93dfe2d82-image.png

  • 2 Posts
    723 Views

    程序本身有错误的时候,出现过并行时部分信息无法输出,建议使用mpirunDebug进行调试

  • hpc上面出现 error in IOstream...

    3 Posts
    1k Views

    这个应该是超算那边给的测试内存不够引起的,我用少点的网格就可以正常跑。

    另外,不知是否了解国家超算中心?具体哪家资源会更好一些呢?谢谢

  • 15 Posts
    4k Views

    是的,求解器自带的是蒸发,我想计算空化,二者的计算原理大不相同,我更改了质量源相,导致质量分数越界。

  • 8 Posts
    2k Views

    @东岳 明白啦,感谢李老师

  • 3 Posts
    1k Views

    很久以前还有个专版,后来讨论人太少关闭了

  • 8 Posts
    5k Views

    QQ截图20190911102057.png

    再补充一下,用不同的电脑跑了 damBreak 算例,得到的三个 ExecutionTime 和 ClockTime 。 并不总是 clockTime 大于 ExecutionTime 。@wwzhao

    但是仔细检查发现,造成右边两个有差异的主要原因是两个时间的精度问题,如下所示:

    ExecutionTime = 1.58 s ClockTime = 1 s ExecutionTime = 1.59 s ClockTime = 1 s ExecutionTime = 1.59 s ClockTime = 1 s ExecutionTime = 1.6 s ClockTime = 1 s ExecutionTime = 1.6 s ClockTime = 1 s ExecutionTime = 1.61 s ClockTime = 1 s ExecutionTime = 1.62 s ClockTime = 1 s ExecutionTime = 1.62 s ClockTime = 1 s ExecutionTime = 1.63 s ClockTime = 1 s ExecutionTime = 1.64 s ClockTime = 1 s ExecutionTime = 1.64 s ClockTime = 2 s ExecutionTime = 1.65 s ClockTime = 2 s ExecutionTime = 1.66 s ClockTime = 2 s ExecutionTime = 1.66 s ClockTime = 2 s ExecutionTime = 1.67 s ClockTime = 2 s ExecutionTime = 1.67 s ClockTime = 2 s ExecutionTime = 1.68 s ClockTime = 2 s

    因为是一个很小的单核算例,IO也不大,所以IO基本上没有花时间,导致在保留精度不同的情况下出现了上述差异。

    多说两句:
    上图右上角是在WSL2 根目录下的结果,
    右下角是在一个 Ubuntu18.0.4 服务器上的结果,
    左边的结果是用 WSL2 在 /mnt/h 盘下的结果,

    可以看到在即使是很小的算例。这个IO耗时也是相当大。这是 WSL2目前的问题,相较于WSL 它在 根目录下确实IO能力有很大提升。但是在 /mnt/* 下 真是果断弃疗。

    版本:
    OpenFOAM-v7

    The 'ExecutionTime' is the elapsed CPU time, and the ClockTime is the elapsed wall clock time for the latest time step(approximate!!)

    https://www.cfd-online.com/Forums/openfoam-solving/67695-difference-between-executiontime-clocktime.html

  • 6 Posts
    2k Views

    @桎梏 是的,搞了很多个点..得有几十个

  • 5 Posts
    2k Views

    @zhangxc0223 您好,我们没有特别关注过长度对循环边界LES的影响,Kara2012的Turbulence statistics in compound channels with deep and shallow overbank flows是循环边界做的,在stoesser的书里面有更加详细的图。

  • lagrangian颗粒信息统计

    5 Posts
    1k Views

    @东岳 controlDict里没有统计颗粒信息的设置,只有统计流场信息的设置。颗粒信息的计算和输出都在src/lagrangian/intermediate/submodels/CloudFunctionObjects/中。

  • 3 Posts
    1k Views

    明白了,谢谢东岳老师。

  • 2 Posts
    1k Views

    经常遇到,感觉OF矫健性不如fluent,可以尝试改善网格质量,降低离散精度。当然,只要能收敛,最后精度不一定比fluent差。

  • 画几何时blockMesh时出错

    2 Posts
    716 Views

    blockMesh很容易出错,尤其你还画了那么多点,肯定没定义好,仔细检查下.. 小错误

  • buoyantBoussinesqSimpleFoam的问题

    3 Posts
    1k Views

    @东岳 谢谢李老师~

  • OpenFOAM在集群上并行运算报错

    3 Posts
    1k Views

    李老师,我用的是可变时间步长,保证CFL数小于1,所以应该不是时间步长的问题,我注意到计算是计算到某一步之后rhoEqn的最小值突然变成0了,这可能是什么原因呢?

    rhoEqn max/min : 1.62584 0
  • 4 Posts
    2k Views

    @桎梏 听见了,嗓门挺大啊!

  • 无锡超算的单核计算效率对比

    1 Posts
    716 Views

    无锡超算,用openfoam计算 :

    国产申威单个核组(仅1主核,无从核加速),与intel商用节点的单核计算效率,有谁比较过吗?

  • 1 Posts
    677 Views

    thermophysicalProperties中energy可以选择sensibleEnthalpy, sensibleInternalEnergy 和 absoluteEnthalpy。前两者与后者的区别,后者使用绝对能量表示包含热源的情况。而sensibleEnthalpy与sensibleInternalEnergy的区别,前者是利用焓值求解温度,后者是利用内能求解温度。热⼒学中分析闭式系统⽤内能,分析开式系统⽤焓值。那么在实际使用中,该如何选择这两种模式?例如高压离心风机。tutorials中的案例似乎找不出规律。
    eb324645-1dd5-499a-bfc0-6d77667f7fa5-image.png

  • paraview如何获得三维流线图

    1 Posts
    851 Views

    大家好,请问paraview如何获得三维流线图?如下图这样的,用户指南上关于流线图的说明仅仅是寥寥几笔,请各位不吝赐教,谢谢!
    feaadcd8-3566-4e3f-831c-5e9a11ca59e0-图片.png

  • 5 Posts
    2k Views

    是的,一般情况下你1)可以忽略correctPhiH,2)pcorr也可以不求解

  • 2 Posts
    768 Views

    在代码里加入

    volScalarField rho ( IOobject ( "rho", runTime.timeName(), mesh, IOobject::MUST_READ, IOobject::AUTO_WRITE ), mesh );

    然后直接用就行

  • 4 Posts
    1k Views

    @zp气固两相流 只有考虑面的时候才有一个own和一个nei,考虑cell的时候一个own,其他都是nei,所以考虑cell的时候,一个own,很多nei很正常啊

  • 1 Posts
    601 Views

    我正在做加热管道空气流动例子的DNS,有新旧两个算例,其中旧算例的残差情况是:

    初始.png

    然后我把中间结果文件copy到新算例里面,接着继续跑,然后现在残差一直都比较水平:

    中间.png

    但是量级还是有点高,看了平均壁温,也没有达到均匀和期望效果。

    我目前用的是基于buoyantPimpleFoam改编的求解器,设置成piso模式来跑,内迭代两次。U跟h的离散格式是QUICK.

    不知道出现这种情况暗示着什么?有什么办法可以改变这种残差一直水平的情况呢?谢谢!

  • 求OpenFOAM中MULES算法的解析

    4 Posts
    2k Views

    @史浩 他那个应该是个笔误。写反了。

    我这周刚把原始的FCT算法植入进去了,OpenFOAM的算法跟原始的不太一样,主要在于

    最大值和最小值的确定,这对应不同的方法,参考Zalesak1979 342页末

    反扩散系数的确定(你贴的按个公式)

    这也是他之所以叫做MULES的原因吧,不过思路都是一样的,Weller为了加快计算速度也优化的非常好。原始FCT已经完全可以对变量进行有界了,我对比原始的FCT和MULES差异非常小,原始FCT也不需要对$\lambda$进行迭代。我要用原始FCT验证几个算例分析一下。

    在测试可压缩传输的时候,我发现可压缩FCT和不可压缩FCT的密度处理需要特殊处理。也就是说 http://www.cfd-china.com/topic/1029/mules算法中的const-rhotype-rho/3 帖子中的可压缩不能直接这么处理,要把rho和alpha分开。不能看做对rhoAlpha的传输。具体的我还在研究

    下图FCT1 和FCT2对应原始FCT和MULES,差别微小。抽取的damBreak的alpha的最小值

    捕获.JPG

  • MULES::explicitSolve求解相方程

    2 Posts
    1k Views

    phi是用来调用判断速度方向的: surfaceScalarField phiBD(upwind<scalar>(psi.mesh(), phi).flux(psi));

  • 并行运算出现错误

    4 Posts
    911 Views

    一般什么原因比较多

  • 5 Posts
    2k Views

    @东岳 老师人太好了!再次感谢!

  • 2 Posts
    870 Views

    问题找到了,原因是类一旦被实例化后,其内存大小是不能更改的,现在采用LinkList代替List,没有问题

  • 关于自定义边界条件

    3 Posts
    1k Views

    @adcpk关于自定义边界条件 中说:

    codestream

    多谢

  • 基类中用克隆代替复制

    1 Posts
    611 Views

    在构建类层次结构是,我们通常都是想要获得多态行为。我们需要对象一旦创建就能保持其类型和标识。但是在想复制一个对象时会发现C++中的对象复制语义与这一目标是冲突的,因为构造函数都是与类名相同的,也就是构造函数都是每个类特有的,复制构造函数不能设为虚拟的。
    为了用基类指针(或引用)正确的将对象进行复制,更为通用的惯用法解决方案是,将基类的复制构造函数设为protected甚至是public,并改而依赖于一个虚拟的clone函数。例如particle类中

    //- Construct as a copy particle(const particle& p); //- Construct a clone virtual autoPtr<particle> clone() const { return autoPtr<particle>::New(*this); } //Constructor Foam::particle::particle(const particle& p) : mesh_(p.mesh_), coordinates_(p.coordinates_), celli_(p.celli_), tetFacei_(p.tetFacei_), tetPti_(p.tetPti_), facei_(p.facei_), stepFraction_(p.stepFraction_), origProc_(p.origProc_), origId_(p.origId_) {} 在派生类KinematicParcel中 //- Construct as a copy KinematicParcel(const KinematicParcel& p); //- Construct and return a (basic particle) clone virtual autoPtr<particle> clone() const { return autoPtr<particle>(new KinematicParcel(*this)); }

    通过虚拟函数clone就能正确的实现复制功能啦!

  • 对于数字一定要谨慎!!!!

    3 Posts
    1k Views

    不同的语言在这块不太一样,估计是写惯了其它语言,转到c++就惯性思维了:duang:

  • 12 Posts
    4k Views

    @Tong 好的,谢谢啊!

  • 5 Posts
    1k Views

    @东岳 我在controldict 试过一次 好像不管用

  • 请问open foam中解方程的方法

    4 Posts
    1k Views

    嗯,牛顿迭代法,Ridder迭代法之类

  • 2 Posts
    903 Views

    interFoam加不了,compressibleInterFoam你在物性里面修改

    thermoType { type heRhoThermo; mixture pureMixture; properties liquid;//here energy sensibleInternalEnergy; }

    里面的properties改成不同的状态方程试试,

  • 结果无法输出

    2 Posts
    920 Views

    请问你的
    adjustTimeStep yes/no?
    maxCo?

  • openfoam中压力梯度计算不均

    3 Posts
    1k Views

    非常感谢李老师,cellLimited Gauss linear 1 格式比Gauss linear好很多,运行程序之前运行renumberMesh -overwrite改善网格质量也有作用