OpenFOAM

4.5k 主题 26.4k 帖子
  • 编译出现不能匹配“operator-”

    8 帖子
    2k 浏览

    @浪迹天大 非常感谢!今天仔细看了下,终于搞定了。

  • 重叠网格中背景网格region如何合并问题

    3 帖子
    1k 浏览

    对于重叠网格运动网格方面做了新的尝试,在算例tut/multiphase/interFoam/laminar/sloshingTank3D6Dof中拷贝gen6Dof文件夹进入自己的background模型文件夹,/constant中的dynamicMeshDict也要拷贝到自己的/constant中,如果只想重叠网格中Zone1(模型)网格运动 需要把dynamicMeshDict改成如下,当然之前的topoSetDict也要增加movingZone的部分

    dynamicFvMesh dynamicOversetFvMesh; solver multiSolidBodyMotionSolver; movingZone { solidBodyMotionFunction tabulated6DoFMotion; CofG (0 0 0); timeDataFileName "<constant>/6Dof.dat"; }

    下面说下gen6Dof文件问题:

    先进入/Make中

    gen6Dof.C EXE = ./gen6Dof

    回到上阶文件夹,更改gen6Dof.C文件 ,更改所需运动,6个自由度随便改改,然后终端输入wmake编译,完成之后终端输入 ./gen6Dof,全部没有问题之后把生成的6Dof.dat拷贝到constant文件夹中,然后回到上阶文件夹运行 movingDynamicMesh(别忘了改controDict文件的时常/6Dof时常,然后就可以观察 paraFoam了。
    大致思路就这样,我也试了的确可行。
    如果有相似重叠网格中运动网格类问题可以参考下

  • foam-extend4.1安装问题

    10 帖子
    3k 浏览

    @李东岳 需要用openFoam2.3跑一个算例,物性都是通过查表的方式获得,新版本没有查表的方式,而且边界条件需要用groovyBC,所以这块需要那个外挂软件包!

  • 多孔介质区域速度突变的现象

    6 帖子
    2k 浏览

    @CarmeloSun 增加一个温度标量方程,并与自带的能量方程通过一个能量源项来耦合

  • 2 帖子
    855 浏览
  • 库郎数突然减小

    4 帖子
    1k 浏览

    @李东岳 感谢老师 发现是我Co计算公式写错辽~已经修改并且成功运行了 谢谢~

  • 4 帖子
    2k 浏览

    我已经解决这个问题了,再IOdictionary里面用
    this->db().time().constant()

  • waves2foam安装的时候编译失败

    7 帖子
    2k 浏览

    https://www.cfd-china.com/topic/4499/waves2foam安装

    你试试这个,我在2台电脑上安装成功

  • of2006安装完找不到paraview和paraFoam

    6 帖子
    2k 浏览

    今天解决了这个问题
    先在$WM_THIRD_PARTY_DIR编译paraFoam并执行wmRefresh
    到$WM_PROJECT_DIR/modules/visualization路径下执行 ./Allwclean && ./Allwmake && wmRefresh
    转到$WM_PROJECT_DIR路径下执行 ./Allwmake && wmRefresh

    命令:

    cd $WM_THIRD_PARTY_DIR
    ./makeParaView
    wmRefresh

    cd $WM_PROJECT_DIR/modules/visualization
    ./Allwclean && ./Allwmake && wmRefresh

    cd $WM_PROJECT_DIR
    ./Allwmake && wmRefresh

  • 刚性翼型升阻力系数的大波动问题

    6 帖子
    2k 浏览

    请问您解决了吗
    我的数据也波动很大

  • 在lagrangian库里面添加新模型时出现的问题

    4 帖子
    1k 浏览

    @bestucan 这个混乱是可以解决的,在引用的库文件前面加入路径就行了

    -L$(FOAM_USER_LIBBIN) \ -llagrangianIntermediate \

    而且我在其他论坛上也看到,lagrangian的代码修改时必须把名字改成一致的,不然会出现很多warning,

  • SprayFoam的颗粒可以作为多组分的吗?

    5 帖子
    1k 浏览

    @bestucan
    我做的是droplet,属于颗粒的。组分说的是这个droplet是一种溶液,只是我不清楚这里面的溶液到底算不算组分,溶液里面的水是可以蒸发的,溶质又无法蒸发,溶质跟溶液到底算不算俩种phase,还是按照同一种phase的不同组分来处理

  • incompatible fields for operation

    3 帖子
    1k 浏览

    请问你解决了吗,我也遇到了相同的问题

  • 三维sixDoFRigidBodyMotion算例发散

    3 帖子
    1k 浏览

    @bestucan

    最后找到了解决办法,是边界条件的原因。本来上下圆柱连接的上下两个边界用的symmetry边界条件,改成cylic边界之后就能算了。。。具体原因还没研究出来:136:

  • 7 帖子
    2k 浏览

    @霜染丹枫 好滴谢谢!张老师写的书有看过:laile:

  • sixDoFRigidBodyMotion问题求助

    9 帖子
    3k 浏览

    @fireztw
    Examples刚刚没注意格式 不好意思
    wing motion
    $FOAM_TUTORIALS/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam

    floating object
    $FOAM_TUTORIALS/multiphase/interDyMFoam/ras/floatingObject

    DTC hull
    $FOAM_TUTORIALS/multiphase/interDyMFoam/ras/DTCHull

  • 求助帖:OpenFOAM后处理极小数

    4 帖子
    1k 浏览

    感谢大佬们提的建议,用python解决了,感觉后处理用python很方便!

  • undefined reference

    6 帖子
    2k 浏览

    @bestucan 终于解决啦 谢谢老师 感谢分享~:ok3:

  • fsiFoam并行计算报错

    2 帖子
    680 浏览
  • 22 帖子
    6k 浏览

    @李东岳 几何尺寸小确实是个问题,但是如果无量纲尺度和对比文献相同的情况下,应该都能得到湍流状态,这也是做这个计算的目的,验证在小尺度下的湍流结构。另外我看的大多管流LES或者DNS的文献,几何尺寸确实都较大,比如这个经典的管流DNS及实验的文章(D=95.4mm、112mm)。我目前正在计算D=2m的管流,采用前一帖子的方法,湍流自始至终都能维持住,并且正在计算得到的统计时均速度看起来比较理想(RMS速度还没处理),但是小管径时就不行,扰动很快消失。希望李老师有时间的话,可以计算一下,看openfoam是否实现起来会比较容易,如果这样的话,我将转向openfoam,哈哈!(另外,如果这个问题搞情况之后,我很乐意新开一个帖子,把湍流大涡模拟计算过程中的一些问题与大家分享,希望对相关研究的同学有所帮助,同学习,共进步)Fully developed turbulent pipe flowa comparison between direct numerical simulation and experiment-eggels1994.pdf
    管径D=2m的速度云图
    12bbfda2-62c2-410e-b6c0-41a7952c6ac6-image.png

  • Lagrangian scale-similaritydependent model湍流模型

    2 帖子
    803 浏览

    The Lagrangian scale-similarity model:
    https://www.cfd-online.com/Forums/openfoam-solving/90351-dynlagrangian-sgs-model.html

    The Lagrangian scale-dependent model:
    https://core.ac.uk/download/pdf/30828294.pdf

    对着引用文献应该能找到很多:chigua:

  • 如何将6DOF和动边界一起使用?

    8 帖子
    3k 浏览

    @Stan同学 非常感谢!

  • 13 帖子
    3k 浏览

    @Mania 还有另外一种方法是安装两个版本的openfoam,然后后处理的时候用低版本的操作

  • sixDoFRigidBodyMotion设置参数

  • PimpleDyMFoam解析, SIXDOF motion的govern equation

    5 帖子
    1k 浏览

    @李东岳 东岳老师,请问有PimpleDyMFoam的解析吗?

  • 动态边界条件的小问题

    7 帖子
    2k 浏览

    :wolaile:
    @bestucan 29647c98-9e2a-46b7-87f9-81411ea3dc1e-image.png
    应该就是缺少WM_OPTIONS这个东西,我重新寻找路径,重新加载环境,就可以了,现在已经运行了!
    感谢感谢 @bestucan ,非常感谢 :xinxin:

  • 2 帖子
    1k 浏览

    @veen 破案了,应该是paraview读取case的问题openfoam-post-processing

  • 读取变量 segmentation fault

    13 帖子
    3k 浏览

    @bestucan 谢谢老师 已改:xinxin:

  • 12 帖子
    3k 浏览

    @马乔 想借这里请问您一下,如果我只想输出颗粒的Uc的话(写入到每个时间步的/lagrangian/kinematicCloud中),应该怎么操作?

    我代码只有入门水平,实在看不太明白您的一系列操作修改,望您有空能指教:zoule:

  • 如得到owner和neighbour网格中心的距离?

    3 帖子
    980 浏览

    @starDust 你这个是边界面上第一层网格中心距边界面距离的倒数阿

  • 3 帖子
    1k 浏览

    @bestucan 非常感谢!

  • 3 帖子
    965 浏览

    pdf是步骤图。。。 效果图手机拍的没截图

  • 植入边界条件时遇到了tmp类型的问题

    3 帖子
    904 浏览

    谢谢李老师!帮了我大忙。

  • 请问前辈们在OpenFOAM中可以施加初位移吗

    3 帖子
    921 浏览

    感谢老师,我看明白了,我去设置一下我的模型

  • OpenFOAM中forces的计算问题

    2 帖子
    1k 浏览

    https://www.openfoam.com/documentation/guides/latest/doc/index.html
    https://cpp.openfoam.org/v8/

    在这搜,每个版本的都不一定一样,先找对版本,然后搜。其实在自己电脑上也能用grep搜,但是这个看着跳转更方便。
    里面重名很多,按求解器或者后处理工具可以辨别你用的哪个。

  • 自定义边界条件的设置问题

    9 帖子
    2k 浏览

    @Samuel-Tu sorry很久没上来看了。这个边界就是简单的泥沙冲刷通量边界,v是粘度。P是冲刷量,在我们泥沙界,这个量是比较难确定的,一般是前人老爷子做试验给出的经验公式。这个量到底用什么公式,里面的参数怎么取,对结果都会造成决定性影响。我不清楚你的雪颗粒,是否指的是浓度?

  • 使用拉格朗日入射模型却没有颗粒注入?

    2 帖子
    851 浏览

    算例中,入射颗粒质量流量为1E7,持续时间10s
    换用面入射模型,仍然是没有颗粒注入
    与参考算例输出对比自己的算例与参考算例相比少了黑圈的输出信息
    l.png
    这个输出信息源自于2021-01-07 20-01-18屏幕截图.png
    所以猜测是入射模型颗粒流量设置问题,想请教老师们关于这个入射模型参数设置的问题

  • 内存和未知问题

    16 帖子
    3k 浏览

    @李东岳
    老师,我把完整的createFields.H文件放在这个帖子上了,每一行都有Info输出。还是有一样的错误~
    https://cfd-china.com/topic/4467/读取变量-segmentation-fault

  • wall上U设置的小困惑

    3 帖子
    966 浏览

    @Zhy2022 :
    感谢Zhy2022兄回复,兄之教诲,弟记下了

  • openfoam新版本湍流模型编译

    22 帖子
    9k 浏览

    @lllwonderliquidopenfoam新版本湍流模型编译 中说:

    已解决。。在GitHub上找到了例子,照着做就ok..GitHub大法好

    https://github.com/BjarkeEltardLarsen/RANS_stableOF50

    太好了,感谢

  • FOAM FATAL ERROR

    3 帖子
    1k 浏览

    @李东岳 好的 感谢您的解答,我去看一下边界条件!

  • foam-extend4.1中IBM网格识别问题

    4 帖子
    1k 浏览

    目前的原因似乎是网格不够细,无法识别孔。我去试试,如果可行回来回复:143:

  • 7 帖子
    2k 浏览

    我们当时也是添加各向异性,你可以把这个加到你的dispersion函数里面

    const typename TrackCloudType::parcelType& p = static_cast<const typename TrackCloudType::parcelType&>(*this); const point start = p.position();

    这个函数上面添加上p.position()然后传入进去,因为td没有position()函数,但是p有

    就是 @浪迹天大 说的,一步一步弄,

  • 变量读取

    10 帖子
    2k 浏览

    @Zhy2022 感谢前辈~我再认真学习一下

  • 12 帖子
    6k 浏览

    您好,我也在学习用OpenFOAM实现源造波。
    请问质量源造波是只能通过在interFoam的pEqu.H中的压力方程的等号右边加入源项吗?
    我了解到为了方便源项有fvOptions,就是在case里增加一个fvOptions文件,在这个文件里说明源项等相关设置,请问楼主在方面是否有尝试?
    我目前在做源项造jonswap不规则波,但是在引入的源项方面有些不确定,原理是Lin和Liu的1999年的文献中的这一段:
    5c5d8285-847a-4bed-bfed-54cb967a6b2f-image.png
    所以想了解楼主加入源项的源项是怎么表达的?加入源项后是通过在求解器里wmake编译就可以在case里使用源造波功能了吗?
    希望能得到老师和各位前辈们的指导,感激~

  • 一种各向同性湍流生成方法

    3 帖子
    1k 浏览

    漂亮~:xinxin:

  • 3 帖子
    1k 浏览

    谢谢东岳,我这就联系他们。

  • 21 帖子
    5k 浏览

    @veen 嗯嗯!我试试

  • 4 帖子
    2k 浏览

    OpenFOAM 并行和通常意义上的并行有点区别。一般并行的部分都是写在代码里的。OpenFOAM 的并行部分不在代码里,严格说,都不是并行的。并行的任务分配是通过 decomposePar 完成。并行计算是通过 runParallel 完成的。所谓并行就是一下开几个求解器进程,同时算不同的区域,几个求解器的计算区域的交接处信息交换也是 runParallel 完成的。

    这样求解器中的变量就不能“特殊”,要“通识”。不能直接“全场”信息,要用“我计算的所有网格”信息。

    你的第一个帖子说要用每个时间步计算的到的数据,这个数据的调用直接写进求解器。那么在各个区域上计算的进程有的快,有的慢。全场的信息(或者说某个时间步计算的到的结果)对于单个进算进程来说是未知的。对于单个进程:我只计算左上角的区域,然后下一步计算需要引用全区域变量。

    runParallel 应该是没有这样的调度的。进程有快慢,所以偶尔会互相等待。等待也是等待交界面的信息。而这个全场信息是等不来的,得合并各个进程的计算结果才有。

    所以有些求解器它就是不能并行,施主又何必强求:chigua:

  • 重新看icoFoam

    8 帖子
    3k 浏览

    @李东岳 我下面仔细推导了一下:
    首先 rAU(1.0/UEqn.A());,这个公式的计算得到的结果是:

    对角系数 这是A()函数: template<class Type> Foam::tmp<Foam::volScalarField> Foam::fvMatrix<Type>::A() const { tmp<volScalarField> tAphi ( volScalarField::New ( "A("+psi_.name()+')', psi_.mesh(), dimensions_/psi_.dimensions()/dimVol, extrapolatedCalculatedFvPatchScalarField::typeName ) ); tAphi.ref().primitiveFieldRef() = D()/psi_.mesh().V(); tAphi.ref().correctBoundaryConditions(); return tAphi; } 这是D()对角系数的平均化处理 template<class Type> Foam::tmp<Foam::scalarField> Foam::fvMatrix<Type>::D() const { tmp<scalarField> tdiag(new scalarField(diag())); addCmptAvBoundaryDiag(tdiag.ref()); return tdiag; } 边界对对角系数的影响: template<class Type> void Foam::fvMatrix<Type>::addCmptAvBoundaryDiag(scalarField& diag) const { forAll(internalCoeffs_, patchi) { addToInternalField ( lduAddr().patchAddr(patchi), cmptAv(internalCoeffs_[patchi]), diag ); } }

    从上面的代码可以得到:
    $$
    A_p=\frac{\bar{D}}{\Delta V}
    $$
    其中:
    $$
    \bar{D}=average(a_p')+diag
    $$
    式子中average(Ap')表示的是边界对主对角线系数的影响的平均;diag表示的是内部面离散的主对角线系数。

    周围系数作为源项: H() template<class Type> Foam::tmp<Foam::GeometricField<Type, Foam::fvPatchField, Foam::volMesh>> Foam::fvMatrix<Type>::H() const { tmp<GeometricField<Type, fvPatchField, volMesh>> tHphi ( GeometricField<Type, fvPatchField, volMesh>::New ( "H("+psi_.name()+')', psi_.mesh(), dimensions_/dimVol, extrapolatedCalculatedFvPatchScalarField::typeName ) ); GeometricField<Type, fvPatchField, volMesh>& Hphi = tHphi.ref(); // Loop over field components for (direction cmpt=0; cmpt<Type::nComponents; cmpt++) { scalarField psiCmpt(psi_.primitiveField().component(cmpt)); scalarField boundaryDiagCmpt(psi_.size(), 0.0); addBoundaryDiag(boundaryDiagCmpt, cmpt); boundaryDiagCmpt.negate(); addCmptAvBoundaryDiag(boundaryDiagCmpt); Hphi.primitiveFieldRef().replace(cmpt, boundaryDiagCmpt*psiCmpt); } Hphi.primitiveFieldRef() += lduMatrix::H(psi_.primitiveField()) + source_; addBoundarySource(Hphi.primitiveFieldRef()); Hphi.primitiveFieldRef() /= psi_.mesh().V(); Hphi.correctBoundaryConditions(); typename Type::labelType validComponents ( psi_.mesh().template validComponents<Type>() ); for (direction cmpt=0; cmpt<Type::nComponents; cmpt++) { if (validComponents[cmpt] == -1) { Hphi.replace ( cmpt, dimensionedScalar(Hphi.dimensions(), 0) ); } } return tHphi; } template<class Type> void Foam::fvMatrix<Type>::addBoundaryDiag ( scalarField& diag, const direction solveCmpt ) const { forAll(internalCoeffs_, patchi) { addToInternalField ( lduAddr().patchAddr(patchi), internalCoeffs_[patchi].component(solveCmpt), diag ); } }

    这里面的求解过程包含了:
    $$
    H=\frac{\left [-\sum a_{\mathbf{N}}\mathbf{U_N} + (\mathbf{b}+\mathbf{b'})+(average(a_p')-a_p')\mathbf{U_C}\right]}{\Delta V}
    $$

    最后:

    $$
    HbyA= \frac{H}{A}=\frac{\Delta V}{average(a_p')+diag}\frac{\left [-\sum a_{\mathbf{N}}\mathbf{U_N} + (\mathbf{b}+\mathbf{b'})+(average(a_p')-a_p')\mathbf{U_C}\right]}{\Delta V}
    $$
    $$
    HbyA= \frac{H}{A}=\frac{\left [-\sum a_{\mathbf{N}}\mathbf{U_N} + (\mathbf{b}+\mathbf{b'})+(average(a_p')-a_p')\mathbf{U_C}\right]}{average(a_p')+diag}
    $$