OpenFOAM

4.5k Topics 26.4k Posts
  • magSqrGradGrad方程

    1 Posts
    418 Views

    Hessian matrix

  • 2 Posts
    952 Views

    @莫晓柒 我现在用openfoam6.0中的rhoPimpleFoam,开启滑移网格计算也非常容易发散,后来无奈转为rhoPimpleFoam+MRF才可以计算。你可以把你的设置文件贴出来看下,这样很难看出问题。

  • 2 Posts
    780 Views

    不好人为干预,否则不符合物理

  • 关于湍流计算的时长问题

    3 Posts
    1k Views

    好的,谢谢你。我自己在看看相关资料。

  • 3 Posts
    1k Views

    @cccrrryyy 好的,谢谢!

  • 求解。。

    2 Posts
    785 Views
  • Favre平均后处理的疑惑

    2 Posts
    1k Views

    我的理解,对于可压缩流来说,求解的变量都是Favre平均量(密度除外,密度是时均密度)。所以,UPrime2Mean得到的也是基于Favre平均的脉动量,因为对于求解器来说它并不知道时均或者Favre平均,你让它算什么它就算什么。我看你贴出来的图的纵轴用的是两撇,这个一般就是Favre平均之后的脉动,因为一般时均后的脉动用一撇表示。

    从这个角度讲,如果实验提供了Favre平均的相关统计量,我认为直接用模拟的结果去比对是没有问题的。如果实验只提供了时均的相关统计量,直接用模拟的结果去比对严格来讲不太正确。这里我也还没完全搞明白,看看有没有人来讨论了。

  • 稳态计算+kEpsilon模型?

    3 Posts
    977 Views

    @东岳 谢谢东岳老师

  • 湍流模型求解

    4 Posts
    1k Views
  • 2 Posts
    875 Views

    QQ截图20200113110636.png
    不好意思,第一次发帖求助,排版有些不规整,重新上传图一(速度场)如上图所示。

  • OpenFoam内存溢出

    2 Posts
    785 Views

    好像是自己定义的壁面函数与foam自带的壁面函数重名了,改了名字后就没问题了。

  • 湍流粘性抽象类的作用

    1 Posts
    520 Views

    nutWallFuntion是一个抽象类,它有什么作用?我看其他nutwall函数都是从它继承来的,这个抽象类是必须的吗?它具体是如何发挥作用的?有没有人能解释一下抽象类或推荐一些参考资料,谢谢。

  • epsilon边界场的问题

    4 Posts
    1k Views

    @我是河滩 输出边界上的值列表可看出
    1.JPG
    2.JPG

  • 7 Posts
    2k Views

    @cccrrryyy 好的!谢谢~:xinxin:

  • 求助:LES如何设置初始场?

    10 Posts
    3k Views

    请问最后你是怎么设置的初始场啊?我也是用LES直接上来步长实在是太小了,算起来一个case非常久。不知道可否用RANS先算然后转换到LES

  • 3 Posts
    1k Views

    @东岳 东岳老师,我可能没有表达清楚,您的意思是我的0文件夹中有一个O2的文件,然后这个C就是个符号而已,随意写,我在使用的时候就用C这个符号就好。
    同理只要我0文件夹中有一个叫做C(碳)的文件,随意定义一个符号a,把O2换成C就可以用a作为碳的浓度去计算?

  • 11 Posts
    2k Views

    @我是河滩 是的。

  • 8 Posts
    3k Views

    @Zephyr QQ截图20200108095030.png
    :xinxin: :xinxin2: :xinxin3:
    果然可以。。以前还没注意过这个小齿轮按钮:xiexie:

  • 湍流模型计算壁面距离

    8 Posts
    2k Views
  • 转动模型dynamicFvMesh的变化

    3 Posts
    1k Views

    @东岳 谢谢东岳老师的回答,理解了。还有就是东岳老师考不考虑来武汉开课啊,上次跟老板提出来去北京学习openfoam课程,老板不大愿意啊,能来一次武汉授课就好了。:chigua:

  • OpenFOAM并行计算疑惑

    3 Posts
    1k Views

    -parallel

  • 编译中血与泪的教训

    4 Posts
    1k Views

    @东岳 ubuntu 14
    我感觉是编译了以后默认就锁定了这个文件
    我也不太懂,反正是折腾我了好久。。

  • 新的湍流模型如何输出yPlus值

    3 Posts
    1k Views

    感谢老师的回复!问题已经解决,在yPlusLES.C文件里面做对应的修改即可

    在最前面加入一行代码

    #include "incompressible/LESNonlinear/LESNonlinearModel.H"

    后面部分代码作相应修改

    const incompressible::LESNonlinearModel& model = mesh.lookupObject<incompressible::LESNonlinearModel>("LESProperties");
  • 多相流求解器的造波问题

    1 Posts
    676 Views

    可能我这个问题比较奇葩,目标是要在multiphaseInterFoam里引入造波功能,造波功能主要基于waves2Foam。我的思路是这样的:

    首先我观察了一下intefoam跟multiphaseInterFoam对于mixture的求解区别。发现主要在于,interfoam是把两相分为主相以及背景相,求解时只求解主相,这样背景相可以简单的进行反向选取,即alpha2=1-alpha1就能获得了。

    但是相数超过2,就不存在这个背景相的问题了,在multiphaseMixture里,每一相都单独计算,最后累加出一个总相alphas出来。

    对于解速度压力那一套,两者我感觉没有太大区别。

    我打算先从两相做起,在multiphaseInterFoam里先实现一般的水-气两相造波,再考虑第三相的问题。也就是打算用multiphaseInterFoam复现interfoam的功能。

    我按照以下步骤进行:

    1.修改multiphasemixture的代码,提供一个获取各个相的相分数的接口。
    2.修改multiphaseInterFoam的代码,将这个接口提供给原先造波消波的松弛区,每一步都对波浪进行修正。
    2.修改waves2Foam的代码,对空气设定一个相分数的入射边界(实际上就是波浪相分数边界的反向选取)。
    3.在求解器中,每次循环都同时对alpha.water以及alpha.air在边界上进行更新。

    比如对于水,边界上入射的相分数可能是(假设2D算例,竖直方向共5个网格):
    (0 0 0.6 1 1)
    那么对于空气,就是
    (1 1 0.4 0 0)
    这样进行累加计算alphas的时候保证边界气液相分数累加为1,我在每一步的文件夹下观察结果,也的确没有发生越界。

    但是实际运算的时候,出现了气液相分数越界,总相分数不守恒的现象,最后造出来的波是这种形状的
    1.jpg

    因为multiphaseInterFoam我想用在化工方面比较多一点,所以我想请问一下我是遗漏了哪些部分吗?

    也请@东岳 老师指点。

    第二个问题就是,我这个问题其实也类似一个分层流动,从上到下,第一相,第二相,第三相之间,第一相跟第三相是没有任何接触的。有没有划分成两个计算域,在第二相上交换信息的办法?

  • 3 Posts
    909 Views

    为什么负值不对呀?你的压力在边界上还是你设置的那两个值么(outlet是0.002, outlet_sec是0.0015)?话说这两个值单位是Pa吧,为什么这么小?另外你的 pRefCell是0,pRefValue也是0,一般设置参考点和参考压力才比较常见,参考压力通常是大气压。

  • 4 Posts
    1k Views

    @东岳 谢谢,我是得系统学学。

  • openFoam 液滴碰撞粘度输出问题

    4 Posts
    1k Views

    不好判断,目前只能看出来算错了:zoule:

  • openfoam 气动弹性

    4 Posts
    904 Views

    取决于你对CFD算法的理解,如果是新手的话,比如没怎么做过算法的,应该需要一个博士的流程。对算法中等理解,1-2年,对算法比较熟,1年。这是非常槽的一个估算

  • 油水界面长度的计算

    3 Posts
    964 Views

    东岳老师,那界面不是应该附着在空洞的表面上么,还是说界面长度是指连续的油相前缘的长度,因为我看文献里界面长度都要远远大于这个几何模型的宽度。

  • 16 Posts
    4k Views
    dimensionedScalar nu ( "nu", dimViscosity, transportProperties ); wordList patchTypes(mesh.boundaryMesh().size(),"fixedValue"); volScalarField nu0 ( IOobject ( "nu0", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::AUTO_WRITE ), mesh, nu, patchTypes ); const scalar nuWanted(1000.0); labelUList neiCells(nu0.boundaryFieldRef()[0].patch().faceCells()); forAll(neiCells, cellI) { nu0.primitiveFieldRef()[neiCells[cellI]]=nuWanted; }
  • 如何在domain内加边界条件?

    4 Posts
    1k Views

    @yhdthu如何在domain内加边界条件? 中说:

    域内面积为0的面,然后加边界不?

    很抽象,很难想象如何处理的呢

  • 边界条件与solver关系

    3 Posts
    976 Views

    可压缩和不可压缩方程的数学特征的不同,导致需要调用不同的边界条件。比如标量传输方程,是一个双曲方程,如果进出口都给定Dirichlet边界条件就不能借。但对于扩散椭圆方程,如果进出口都给定Dirichlet边界条件很正常。

  • mixutre模型连续性方程

    2 Posts
    732 Views

    连续性方程 -> 压力方程,因此压力方程就是你说的这个方程

  • tPEF湍流模型

    3 Posts
    997 Views

    @dzsmoglaitPEF湍流模型 中说:

    oPhaseEulerFoam求解器的时候,总是得

    感谢@东岳 老师的答复。目前此问题已经解决。原因也很简单。因为CGKE是基于kEpsilon的。而在PhaseCompressible湍流模型类中,在编译CGKE之前,事先通过PhaseCompressible这一类中的宏makRASModel(kEpsilon)编译了PhaseCompressible版本的kEpsilon模型。因此CGKE中任何函数在调用kEpsilon时就可以调用的到。本问题的解决办法就是同样的在makePhaseCompressibles.C中make一下RNGkE就行了,即makRASModel(RNGkEpsilon)。
    如果有其它Foamer对上述解释不理解,我就再补充两句。kEpsilon, RNGkEpsilon这类湍流模型实际上是通用的模型,在incompressible,compressible, phaseCompressible等不同类的湍流模型类中有不同的体现。当然,这个涉及到OpenFoam的湍流模型代码结构,集成关系最多有8层左右,尚不了解的童鞋可以去参考此博客https://marinecfd.xyz/post/openfoam-templated-turbulence-modeling-framework-part-1/。链接是第一部分,一共三个部分。

  • vanDriestDelta构造的问题?

    2 Posts
    775 Views

    建议参考这个
    https://www.openfoam.com/documentation/guides/latest/doc/guide-turbulence-les-delta-vandriest.html
    OpenFOAM里面的LESdelta是基于geometricDelta_的,geometricDelta_(delta关键字后面的那个,比如cubeRootVol)是纯粹与几何有关的一个量,而真正的LESdelta是建立在其之上的。这样的表述实际上更精确,所以才被设计成了两个东西,我猜的。

  • 压力显示成台阶状的分布疑惑

    2 Posts
    805 Views

    另外,我不清楚你这个画的是什么,只有一个类似的阶梯状的图。类似这个图我在今年8月份复现过,不过不是你这个算力,很多高阶格式都会把smooth的型线压缩成square的,例如Superbee,即使Minmod也有这种情况存在。

    Figure 6.2(b) shows the same test problem as before but with the superbee method. The discontinuity stays considerably sharper.On the other hand, we see a tendency of the smoothhump to become steeper and squared off. This is sometimes a problem with superbee – by choosing the larger of the neighboring slopes it tends to steepen smooth transitions near inflection points.

    Leveque 2002 p. 112

    不过,我觉得你的问题可能不是这个...只不过图跟我遇到的有点像,给你点启发

  • anti-symmetry边界?

    2 Posts
    835 Views

    看到个帖子不错,记录一下。关键词:householder transform

  • <type>Field的一些问题

    6 Posts
    2k Views

    @Samuel-Tu DynamicField虽然叫Dynamic但声明的时候必须先给定大小,一般先选一个大一点的size初始化,用append添加元素,再用shrink删除多余的空元素。

  • 6 Posts
    2k Views

    @东岳 江湖百晓生,CFD万事通。

  • Euler异相化学反应

    1 Posts
    585 Views

    目前想在这个求解器中添加煤燃烧的反应,将利用反应速率计算需要添加的各个方程的源项。
    1 目前的问题的我在src中的thermophysicalModels找到关于固相化学反应的东西,但是找不到有关化学反应速率的求解公式,例如固相阿雷尼乌斯求解反应速率,所以感觉没有地方能下手修改成自己需要的反应速率?
    2 如果要直接在求解器中编写一个函数,例如是计算反应速率,我我需要调用到的其他数据(施密特数,直径,雷诺数)那些的需要用到什么代码(原谅我是一个C++沫沫)

  • 关于rigidBodyMotion

    1 Posts
    573 Views

    在dynamicMeshDict中rigidBody一共有五种type:cuboid;masslessBody;rigidBody;sphere;jointBody,前四种都会用,唯独最后的jointBody没用过,查了一下资料没找着相关说明,有人知道这个jointBody怎么用吗?

  • Sort()函数的作用是什么啊?

    1 Posts
    540 Views

    只知道是按照从小到大进行排序,这个sort函数有什么作用?

    void Foam::SortableList<T>::sort() { sortIndices(indices_); List<T> lst(this->size()); forAll(indices_, i) { lst[i] = this->operator[](indices_[i]); } List<T>::transfer(lst); }
  • 如何模拟“多层”的流动

    15 Posts
    3k Views

    @东岳 老师,这个公式(1)是他们参考另一篇文章
    Wu, K., Chen, Z., Li, J., Li, X., Xu, J., & Dong, X. (2017). Wettability effect on nanoconfined water flow. Proceedings of the National Academy of Sciences, 114(13), 3358-3363. https://www.pnas.org/content/114/13/3358.short
    我的理解是因为在纳米管内靠近壁面的位置,粘度变化没有统一的解析解,所以看到一些文章就这么分成“多层”粘度,算是粗略简化的方法吧 :xiezuoye:

  • .toc()中的toc()什么意思?

    3 Posts
    1k Views

    这个有什么用啊? cellset和cellset.toc()没有区别吧?

  • 3 Posts
    885 Views

    谢谢,知道了。

  • 关于dynamicMeshDict

    1 Posts
    713 Views

    本人使用的是rigidBody,和sixDoFRigidBody不同的是,它有一项是transform,个人理解是用于从全局坐标系转到局部坐标系(动坐标系)的指令,所以如果动坐标系是固定在物体的重心处,transform中的向量项应该和centreOfMass是一致的才对,但是一算就死,后面试了下,把transform中的向量项写成(0 0 0)就能算,不过计算结果中会缺少部分自由度,有人遇到过这个问题吗?

  • 2 Posts
    1k Views

    感谢鸭蛋分享

  • 1 Posts
    563 Views

    其实我只是想实现tecplot里面的ddx函数,但是我找不到tecplot讨论区,所以先发这里了。
    我得到的数据变量在储存在节点,而不是cell中心。网格是二维四边形网格。因为是非结构的,所以不能像笛卡尔网格那样直接求差商。我看了tecplot帮助文档里面ddx的实现方法是Moving Least-Squares,说是假定变量关于节点是二次函数,之后最小二乘法拟合出二次函数,然后将二次函数在节点的梯度近似为该变量在节点的梯度。我不明白对于二维的二次函数,tecplot是否考虑了交叉项xy?
    如果不考虑的话,那我是否可以偷懒:假设需要求f的梯度,求对x的偏导的时候,完全不管y坐标。对单元的四个节点的x坐标x1,x2,x3,x4,和他们的函数值f1,f2,f3,f4进行一维的二次函数拟合。如果得到的拟合结果是f(x,y)=ax^2+bx+c,那第一个节点的x方向梯度就是把x1带入f'(x)=2ax+b中?

    手机打字不太方便,请见谅。

  • 1 Posts
    588 Views
    Create time Create mesh for time = 0 Selecting dynamicFvMesh dynamicMotionSolverFvMesh Selecting motion solver: sixDoFRigidBodyMotion Selecting sixDoFSolver symplectic Translational constraint tensor (1 -0 -0 -0 1 -0 -0 -0 -624) Rotational constraint tensor (0 0 0 0 0 0 0 0 0) PIMPLE: No convergence criteria found PIMPLE: No corrector convergence criteria found Calculations will do 2 corrections PIMPLE: Operating solver in transient mode with 2 outer correctors Reading field p Reading field U Reading/calculating face flux field phi Selecting incompressible transport model Newtonian Selecting turbulence model type laminar Selecting laminar stress model Stokes No MRF models present No finite volume options present Constructing face velocity Uf Courant Number mean: 0.000625613 max: 0.10552 fieldAverage fieldAverage1: Starting averaging at time 0 forces forces1: Not including porosity effects forces forceCoeffs1: Not including porosity effects forceCoeffs forceCoeffs1: Not including porosity effects Starting time loop Courant Number mean: 0.000625613 max: 0.10552 deltaT = 0.005 Time = 0.005 PIMPLE: Iteration 1 forces forces: Not including porosity effects #0 Foam::error::printStack(Foam::Ostream&) at ??:? #1 Foam::sigFpe::sigHandler(int) at ??:? #2 ? in "/lib/x86_64-linux-gnu/libc.so.6" #3 Foam::sixDoFSolvers::symplectic::solve(bool, Foam::Vector<double> const&, Foam::Vector<double> const&, double, double) at ??:? #4 Foam::sixDoFRigidBodyMotion::update(bool, Foam::Vector<double> const&, Foam::Vector<double> const&, double, double) at ??:? #5 Foam::sixDoFRigidBodyMotionSolver::solve() at ??:? #6 Foam::motionSolver::newPoints() at ??:? #7 Foam::dynamicMotionSolverFvMesh::update() at ??:? #8 ? in "/home/z/OpenFOAM/OpenFOAM-7/platforms/linux64GccDPInt32Opt/bin/pimpleFoam" #9 __libc_start_main in "/lib/x86_64-linux-gnu/libc.so.6" #10 ? in "/home/z/OpenFOAM/OpenFOAM-7/platforms/linux64GccDPInt32Opt/bin/pimpleFoam" 浮点数例外 (核心已转储)