OpenFOAM

4.5k 主题 26.2k 帖子
  • 合集:OpenFOAM安装准备工作贴

    已固定
    7 帖子
    14k 浏览

    @sdugem 已解决

  • OpenFOAM教程 初级入门建议(2020年更新版)

    已固定
    47 帖子
    94k 浏览

    @黑山雁 处理了 :-)

  • 1 帖子
    6 浏览

    算例用的混合模型,在近壁面RANS区域计算出的nut还算正常,在LES区域,计算出的nut数值很小,大概10的负18量级,这可能是什么原因呢?

  • NSRFG在OF里面计算出现的问题

    5 帖子
    111 浏览

    @coolhhh c2dd387c-f339-4a1f-b60b-927cdaa404f0-image.png 加密一下入口的建筑处的网格,效果还是好很多的,感谢大佬。

  • interFoam 模拟水滴运动

    6 帖子
    595 浏览

    请问是在运行一段时间后再次运行setFields命令吗

  • 关于编译动态库后在求解器中使用报错

    3 帖子
    47 浏览

    @学流体的小明 老师您好,您是说链接basicPorousThermo的动态库么?我这个是参考了原来的solidThermo和basicThermo,原本的basicThermo是没有编译成动态库而是basicThermo.h直接被solidThermo引用了,所以我也是这么操作的,我看本来的basicThermo没有被编译成动态库所以我也没敢乱操作。我试了试原本的basicThermo类也是这么搞的但是不会报错,是在后续代码中把这个类和函数定义了么?但是我暂时也没有找到哪里定义了这个类和函数。

  • 3 帖子
    75 浏览

    可以从边界上的face返回这个face属于的cell

    const Foam::fvBoundaryMesh &procBoundary = mesh.boundary(); forAll(procBoundary, patch) { forAll(procBoundary[patch], facei) { const label bcell = boundaryMesh[patch].faceCells()[facei]; } }

    你可以得到所有的边界单元编号,然后做你其它向做的事就应该比较方便了

  • overinterdymfoam的一些疑问

    5 帖子
    74 浏览

    @csj1246957849
    因为提取等值面的时候进行了插值。
    可以提取xz截面,显示网格线,然后你用我黄色画出来的看界面附近的网格,OpenFOAM用的有限体积法用到的是cell中心值,当你用setFields赋值的时候,z=0这条线和赋到的cell有各种关系。具体情况我这里表述很麻烦,你实际看一眼应该就能理解。
    b0d2ebaa-e186-42c6-bc66-e322a90087ac-image.png
    你上面图片显示的都是point的值,是paraview插值出来的,cell值前面是一个小方块,你可以看看cell值,就没有红色和蓝色的过渡。

  • 62 帖子
    9k 浏览

    @pengdi 没有收缩段,RANS结果就是很差的,LES即使入口只加平均风,也比RANS结果精确很多

  • 想请教一下各位大佬流动方程的推导

    2 帖子
    56 浏览

    已经搞清楚了,谢谢!

  • 计算过程中的得到x=1位置处的水位

    2 帖子
    27 浏览

    openfoam自带有interfaceHeight的function

  • 1 帖子
    24 浏览

    报错的自定义边界如下,如图所示报错为:“‘incompressible’ does not name a type“,恳请论坛内各位老师解惑
    /---------------------------------------------------------------------------\

    \ / F ield OpenFOAM: The Open Source CFD Toolbox \ / O peration \ / A nd Copyright (C) 2011 OpenFOAM Foundation \/ M anipulation

    License
    This file is part of OpenFOAM.

    OpenFOAM is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. OpenFOAM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.

    *---------------------------------------------------------------------------*/

    #include "adjointOutletPressureHeatFvPatchScalarField.H"
    #include "addToRunTimeSelectionTable.H"
    #include "fvPatchMapper.H"
    #include "volFields.H"
    #include "surfaceFields.H"
    #include "RASModel.H"

    // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //

    Foam::adjointOutletPressureHeatFvPatchScalarField::
    adjointOutletPressureHeatFvPatchScalarField
    (
    const fvPatch& p,
    const DimensionedField<scalar, volMesh>& iF
    )
    :
    fixedValueFvPatchScalarField(p, iF)
    {}

    Foam::adjointOutletPressureHeatFvPatchScalarField::
    adjointOutletPressureHeatFvPatchScalarField
    (
    const adjointOutletPressureHeatFvPatchScalarField& ptf,
    const fvPatch& p,
    const DimensionedField<scalar, volMesh>& iF,
    const fvPatchFieldMapper& mapper
    )
    :
    fixedValueFvPatchScalarField(ptf, p, iF, mapper)
    {}

    Foam::adjointOutletPressureHeatFvPatchScalarField::
    adjointOutletPressureHeatFvPatchScalarField
    (
    const fvPatch& p,
    const DimensionedField<scalar, volMesh>& iF,
    const dictionary& dict
    )
    :
    fixedValueFvPatchScalarField(p, iF)
    {
    fvPatchField<scalar>::operator=
    (
    scalarField("value", dict, p.size())
    );
    }

    Foam::adjointOutletPressureHeatFvPatchScalarField::
    adjointOutletPressureHeatFvPatchScalarField
    (
    const adjointOutletPressureHeatFvPatchScalarField& tppsf,
    const DimensionedField<scalar, volMesh>& iF
    )
    :
    fixedValueFvPatchScalarField(tppsf, iF)
    {}

    // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //

    void Foam::adjointOutletPressureHeatFvPatchScalarField::updateCoeffs()
    {
    if (updated())
    {
    return;
    }

    const fvsPatchField<scalar>& phip = patch().lookupPatchField<surfaceScalarField, scalar>("phi"); const fvsPatchField<scalar>& phiap = patch().lookupPatchField<surfaceScalarField, scalar>("phib"); const fvPatchField<vector>& Uap = patch().lookupPatchField<volVectorField, vector>("Ub"); const dictionary& transportProperties = db().lookupObject<IOdictionary>("transportProperties"); dimensionedScalar nu(transportProperties.lookup("nu")); scalarField Up_n = phip / patch().magSf();//Primal scalarField Uap_n = phiap / patch().magSf();//Adjoint const incompressible::RASModel& rasModel = db().lookupObject<Foam::incompressible::RASModel>("RASProperties"); scalarField nueff = rasModel.nuEff()().boundaryField()[patch().index()]; const scalarField& deltainv = patch().deltaCoeffs(); // distance^(-1) scalarField Uaneigh_n = (Uap.patchInternalField() & patch().nf()); //operator ==((Up_n * Uap_n) +2*nu.value()*deltainv*(Uap_n-Uaneigh_n));

    operator ==((Up_n * Uap_n) +2*nueff.value()deltainv(Uap_n-Uaneigh_n));

    fixedValueFvPatchScalarField::updateCoeffs();

    }

    void Foam::adjointOutletPressureHeatFvPatchScalarField::write(Ostream& os) const
    {
    fvPatchScalarField::write(os);
    writeEntry("value", os);
    }

    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

    namespace Foam
    {
    makePatchTypeField
    (
    fvPatchScalarField,
    adjointOutletPressureHeatFvPatchScalarField
    );
    incompressible
    }
    f0c155d4-8455-4c68-be20-3db9aa49d6b6-image.png

  • 17 帖子
    3k 浏览

    @疏影横斜水清浅topoSet, createPatch, createBaffle 在网格内部添加一个平面 求指教 中说:

    @脉动通风 你好,能详细说一下么,你是用的哪种颗粒注入方式,内部画网格是指生成面还是cellzone,你使用的方式是连续注入么

    内部画网格就是我自己在房间中间挖了一块正方体的区域,然后再使用ICEM画的网格。最后传入Openfoam中,再对那个正方体的一个面设置气体输入的浓度。
    使用的方式是连续注入,我是注入气体。

  • icoFoam源代码解读

    1 帖子
    74 浏览

    各位老师,大佬晚上好!openfoam小白最近在阅读icoFoam源代码时遇到了一点问题,根据李老师对icoFoam求解器的理论推导,它的压力泊松方程如下:7.png
    99.png
    在源代码中首先定义了phiHbyA,应该是HbyA的面通量:
    1.png
    但是,它的压力泊松方程里面的用的是phiHbyA而不是HbyA,这里我不是很能理解:
    3.png
    另外按理说piso算法每算一次U、P,按理来说应该要更新HbyA一次:
    8.png
    但是源代码里面更新的好像是phiHbyA(速度变了,且是个通量)
    在我的理解里,这段代码每次进行piso算法时,HbyA似乎没变,毕竟它是从之前的速度方程那里得到的?(对UEqn.A这个函数不太了解)
    9.png
    但是piso算完以后的U用的又是和理论推导的结果一致,用的是HbyA,而不是phiHbyA:
    6.png
    恳请各位老师,大佬解惑,谢谢各位!

  • OpenFOAM 8中的波浪边界是否支持纯波浪?

    18 帖子
    3k 浏览

    @tidedrinker 前辈你好,我在使用olaFlow做一个二维的狭缝共振,但是把两个浮箱加上之后造出的波浪不向前传递是什么原因呀,详细的我放在了这个问题里面问题地址

  • 7 帖子
    152 浏览

    参考openfoam自带的dambreach这个算例

  • reactingFoam甲烷空气预混燃烧后处理

    3 帖子
    91 浏览

    @wangfei9088 好滴,感谢大佬:xinxin2:

  • 3 帖子
    65 浏览

    @学流体的小明 嗯嗯,谢谢大佬

  • 旋转动网格集合面不对应

    1 帖子
    30 浏览

    eb812a45-a24b-435b-a01c-246db6db8afc-250c0b40b51035fb0e43108730efee4.jpg
    请教各位:
    我想如图设置一个扇形的计算域,中间一段圆环设置为旋转动网格,其中涉及a-a' 与b-b'两个对应面之间设置的问题,因为整个过程中,两组对应面并不是时刻交互的,某些面区域会作为边界,这种情况应该如何设置呢?谢谢

  • 求助olaFoam造波问题

    1 帖子
    42 浏览

    各位前辈好,我请教一下一个问题,我在使用olaFoam来建立一个模型,是一个二维的双浮体狭缝共振,我单独造波的时候(波高0.024,周期2s)的时候是可以造波的
    a1150344-d9bd-4c60-a03a-df521fec528d-image.png
    但是当我把两个固定的浮体加上之后,波浪就几乎没有了,请问这是什么原因

  • openform的瞬时温度场

    3 帖子
    55 浏览

    @学流体的小明 我感觉也是时间太长,我目前打算检测一个点,观察温度的峰值和峰谷,取这个时间段作为周期

  • 关于openfoam中计算气体密度的疑问

    3 帖子
    76 浏览

    @wangfei9088 非常感谢大佬的指点!! 完美解决了这个问题:140:

  • 9 帖子
    538 浏览

    @Do1975 确实,可能还是看具体需求场景,我这是一方面DBS方法速度提升好像不多,然后在AB区域交界附近流场会出现间断,我没解决这个问题,就没用了

  • CFD与机器学习基本概念入门

    11 帖子
    600 浏览

    感觉CFD加机器学习是黑匣子加黑匣子,终极炼丹炉

  • subsetmesh后运行不了

    1 帖子
    26 浏览

    (我是一个算例出现这样的问题,然后简化了模型为333,来检查哪儿出了问题,应该与网格划分的多少没什么关系)
    我在toposetDict中设置了如下actions来挖去部分网格
    1c3291a7-b5d7-45a5-9f62-58296ac541e9-image.png
    挖取后如图所示(即一个333被挖去两列):
    b05be598-09be-405a-ae73-294da445666b-image.png
    但我使用命令subsetMesh -overwrite obstacle -patch frontAndBack后运行(时间步长为1e-8,自适应时间步长,writeNow。),很快就停了,也没有报错,也没有输出时间文件,不知道哪里出了问题。
    04ba5dfb-7d2e-4243-8127-423774e20268-image.png

  • openFoam与Fluent模拟简单的Laval蒸汽喷管

    21 帖子
    2k 浏览

    @李东岳 东岳老师,这个用rhoCentralFoam的case可以发上来参考一下吗

  • 8 帖子
    100 浏览

    @wsy11 好的,稍等,我提交了

  • 燃烧求解在AMR之后报错

    5 帖子
    101 浏览

    破案了。程序没问题,是我自定义的用于AMR的coded量忘记clear了

  • OpenFOAM outflow边界条件

    6 帖子
    1k 浏览

    @shrine 是只在出口下降了吗,你把出口压强改成零梯度试一下,可以看一下案例里面那个open channel的设置

  • 边界条件tableFile读取错误问题

    8 帖子
    3k 浏览

    @Hope 楼主有没有ESDU的document呀,风剖速度和湍流强度以及风谱,没订阅,也搜索不到

  • toposet 得到的新边界怎么加边界层

    1 帖子
    33 浏览

    各位前辈好,请问我使用toposet创建的新的边界或者面之后,我应该怎么在这个边界或者说面上加上边界层呢,是不是相加边界层只能用snappyHexMesh

  • 3 帖子
    97 浏览

    @学流体的小明 恩呢,谢谢您的回答。
    /--------------------------------- C++ -----------------------------------
    | ========= | |
    | \ / F ield | OpenFOAM: The Open Source CFD Toolbox |
    | \ / O peration | Version: v2212 |
    | \ / A nd | Website: www.openfoam.com |
    | \/ M anipulation | |
    *---------------------------------------------------------------------------*/
    FoamFile
    {
    version 2.0;
    format ascii;
    class dictionary;
    location "constant";
    object dynamicMeshDict;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

    dynamicFvMesh dynamicRefineFvMesh;

    // How often to refine
    refineInterval 1;

    // Field to be refinement on
    field alpha.water;

    // Refine field inbetween lower..upper
    lowerRefineLevel 0.001;
    upperRefineLevel 0.999;

    // If value < unrefineLevel unrefine
    unrefineLevel 1;

    // Have slower than 2:1 refinement
    nBufferLayers 6;

    // Refine cells only up to maxRefinement levels
    maxRefinement 1;

    // Stop refinement if maxCells reached
    maxCells 15000000;

    // Flux field and corresponding velocity field. Fluxes on changed
    // faces get recalculated by interpolating the velocity. Use 'none'
    // on surfaceScalarFields that do not need to be reinterpolated.
    correctFluxes
    (
    (phi none)
    (nHatf none)
    (rhoPhi none)
    (alphaPhi_ none)
    (ghf none)
    (phi0 none)
    (dVf_ none)
    (alphaPhi0.water none)
    (alphaPhiUn none)
    );

    // Write the refinement level as a volScalarField
    dumpLevel true;

    // ************************************************************************* //
    这是我的dynamicMeshDict文件。
    我按您说的方法去试一下。

  • 6 帖子
    180 浏览

    @Prometheus10
    我看了一下那个帖子,可能因为实现方法的差异,两种边界会有细微的差别,但应该不会这么大。

    你的其他边界是怎么设置的?symmetry不用特别设置,每一个变量都是sym就行。但是,slip你是具体怎么设置的?速度肯定是slip,其他边界是什么?如果搭配不合适的话,和sym不一致是很正常的事情。

    再一个,是不是因为雷诺数特别小,以致实现方法带来的微小区别被放大了?或者说,在低雷诺数下,实现方法带来的差异特别大?建议可以加点流速试试,看一下高流速下是不是还差这么多?

  • openFoam postProcess报错

    2 帖子
    70 浏览

    看起来好像你得OpenFOAM没编译完整

  • wsl2中安装ubuntu18.04后只有64个CPU分配

    1 帖子
    51 浏览

    wsl2中安装ubuntu18.04后只有64个CPU分配,按照教程新建并修改./wslconfigure文件后,关闭wsl并重启,仍然还是64个核,请问有人遇到到这种情况吗,谢谢!!!图片.png

  • 7 帖子
    128 浏览

    @coolhhh
    大佬您好,我可能忘了介绍我的研究时段了,我研究的是较长时间的模拟,理想模拟时间应该是2-3天;模拟区域也比较大,大概为长宽高为6km6km600m。
    1、因为研究的时间较长,所以每个边界的风速肯定是变化的(风速输入用的是每个边界所设置的非均匀分布风塔的观测数据,每个面都有数个观测点,观测数据风速利用timeVaryingMappedFixedValue每隔十分钟输入)因为之前学习了windaroundbuildings这个算例(也是建筑扰流),所以设置求解器为simpleFoam,这个算例风速确实是时不变的,这一点没有考虑到,等换成瞬时求解器试试;
    2、目前还没有试过五个入流面,因为我也认为可能不太符合通量守恒,所以先设置了3个速度入口和2个出口,我先做一下大佬在4中提供的建议;
    3、LES模拟也考虑过,正在学习,等做完2中试验后尝试一下大佬提供的条件,就不用计算k和epsilon文件的设置了。

  • 1 帖子
    46 浏览

    在ParaView 中用 Temporal Particles To Pathlines 追踪粒子轨迹,会出现多余的线条是怎么回事,求指导。

    abc25b9f-320d-4e32-8d77-4c45ac5ea775-image.png

  • 14 帖子
    296 浏览

    @coolhhh 我明白了,您不妨试试uniformFixedValue。另外dsmcFoam+的dsmcCloud.C中没有correctBoundaryConditions,我估计是包装在别的函数里了。

  • 1 帖子
    42 浏览

    在进行模拟时,运行136s出现上述报错:Primary job terminated normally, but 1 process returned
    a non-zero exit code. Per user-direction, the job has been aborted.
    2024-03-15_21-17.png

    附上我的算例边界条件,是一个基于真实地形,使用codefixedVal函数实现非均匀边界条件的模拟。1.zip
    请哪位大神给点建议,谢谢

  • 1 帖子
    44 浏览
  • chemkin中的therm.dat文件理解

    7 帖子
    153 浏览

    还有一个问题就是我在chemkin反应机理中添加了这个反应:
    1.png
    对于hv这个光子应该在哪里定义呀?我在chem.inp以及therm.date文件中没有定义光子,也不清楚如何定义,但是采用chemkinToFoam时显示了如下错误:
    屏幕截图 2024-03-15 190833.png
    hv改成大写以后就成了这样:
    1.png
    恳请各位老师,大佬解惑,感谢各位了!

  • divShemes离散格式的顺序问题

    6 帖子
    353 浏览

    :135: :135: :135:

  • 56 帖子
    8k 浏览

    @Prometheus10 对 如果这样理解的话 为什么symmetry计算结果和理论解更相近呢

  • interfaceHeight 运行报错

    8 帖子
    288 浏览

    @tidedrinker @李东岳 找到原因了,是因为我输入命令的问题,我之前输入的是postProcess,应该用 interFoam -postProcess , 。。。。新手不太会

  • MPPICFoam/denseParticleFoam 对于重力的考虑

    32 帖子
    1k 浏览

    @李东岳 李老师,最近在做实验,昨天又试验了一下,p场稳定了一些但是还在波动,但是U.air场变得混乱了,李老师有空可帮我看下吗,还有一个问题719e060c-5757-402d-b40a-0d978c2be0a7-tp_of10.zip
    b39e6d46-adc8-4f48-b766-281d3efcc0b7-image.png

    DPMFoam中的UcEqn.H:

    fvVectorMatrix UcEqn
    (
    fvm::ddt(alphac, Uc) + fvm::div(alphaPhic, Uc)

    fvm::Sp(fvc::ddt(alphac) + fvc::div(alphaPhic), Uc) continuousPhaseTurbulence->divDevRhoReff(Uc)
    ==
    (1.0/rhoc)*cloudSU
    );

    UcEqn.relax();

    volScalarField rAUc(1.0/UcEqn.A());
    surfaceScalarField rAUcf("Dp", fvc::interpolate(rAUc));

    surfaceScalarField phicForces
    (
    fvc::flux(rAUccloudVolSUSu/rhoc) + rAUcf(g & mesh.Sf())
    );

    if (pimple.momentumPredictor())
    {
    solve
    (
    UcEqn
    ==
    fvc::reconstruct
    (
    phicForces/rAUcf - fvc::snGrad(p)*mesh.magSf()
    )
    );
    }

    ///////还有就是这一项代表了什么意思呢////////
    surfaceScalarField phicForces
    (
    fvc::flux(rAUccloudVolSUSu/rhoc) + rAUcf(g & mesh.Sf())
    );

  • reactingFoam求解器修改化学反应机理

    3 帖子
    103 浏览

    @LiuWenchao 好嘞,我去看看,谢谢大佬!

  • 关于nut和mut的问题

    5 帖子
    144 浏览

    谢谢李老师,那我是不是直接用turbulence->nut()就可以获得混合湍流运动粘度了?我是看到createFields.H定义了这样的指针,对应找到他的 incompressible::turbulenceModel 类,就发现mut和nut是一样的,对于这种多相流的,它实际用的是哪个类,在哪里体现了密度的影响?对openFOAM不太了解,谢谢老师指点
    image.png

  • DPMFoam压力计算失稳

    8 帖子
    969 浏览

    您好,我在修改了入射条件后依然没有解决这个问题,不知道您有什么解决办法吗

  • OpenFOAM外挂libtorch

    2 帖子
    151 浏览
  • LES定义入口速度的问题(DSRFG方法)

    82 帖子
    61k 浏览

    @xzdbjx 大佬,可以提供一下编译进Fluent里面的udf吗? CFD小白,自己写的总是报错:zoule: