OpenFOAM

4.5k Topics 26.2k Posts
  • 18 Posts
    5k Views

    @HITSC30 你好,请问你这个问题解决了嘛?我也遇到了和你一样的报错。

  • 3 Posts
    249 Views

    您能解释一下为什么会有rhoCpPhi=rhoPhi*(Cp1 - Cp2) + phi*rho2*Cp2吗?这个是什么物理意义?

  • 多线程这个错误怎么解决

    17 Posts
    4k Views

    类似的案例,我也遇到过,我的案例是在跑别人的代码时出错的,在出现的“No MRF models present/n No finite volume options present"报错,且后面出现了”Kill“字祥时,其中“Kill”字样很重要。
    到后面我发现:我的案例文件放错的位置,原先我放在与OF整体文件的所在的主文件夹内,我的解决是通过将案例放在OF的主文件夹内,而不是在OF主文件夹外,这成功。
    首先说我为什么这么做:

    出现MRF警告时,我也以为时MRF链接出了问题,但事实是其他案例是正常的,故排除MRF问题; 我看到所引用的案例包内有:platfrom文件且内部为”linux64GccDPint32Opt“,这与OF主文件一致,我猜测事路径出了问题,最终事实如此。
  • 8 Posts
    549 Views

    @hachikoi 您好,能帮忙问一下做六自由度双浮箱的同学,他做的双浮箱涉及两个浮体之间的耦合吗,想交流一下。

  • chemkin

    4 Posts
    465 Views

    @annchemkin 中说:

    在网上找到的C12H26化学反应机理文件,不管是直接运行还是通过chemkinToFoam转换都显示类似格式错误的问题

    因为OpenFOAM里chemisrtyReader和chemkinToFoam只会读transportProperties这个文件里的数据,类似下面这种。用在sutherland公式里。

    ".*" { transport { As 1.512e-06; Ts 120.; } } "H2" { transport { As 6.362e-07; Ts 72.; } } "CO2" { transport { As 1.572e-06; Ts 240.; } }

    @annchemkin 中说:

    我在网上找到的trans文件都长类似的样子

    chemkin软件的三个文件之一就是这个六列分子特性数据的trans.dat,这才是正确的。只是OpenFOAM因为用sutherland公式就不需要这个文件了。sutherland公式需要的是上面的As和Ts。
    使用OpenFOAM自带的chemkinToFoam命令:

    chemkinToFoam chem.inp therm.dat transportProperties reactions.dat thermo.dat
  • Lagrangian求解器模拟颗粒荷电运动

    1 Posts
    154 Views

    大家好,我用 icoUncoupledKinematicParcelFoam求解器模拟静电除尘器中颗粒荷电运动轨迹,颗粒考虑曳力、重力和电场力,计算电场力需要电荷量q(通过方程计算,是动态变化的值)和场强E(矢量场,给定)两个参数,我在submodels/Kinematic/particleforces路径下添加了一个电场力子模型,怎么能做到q的实时读取和电场力的实时更新呢,求大神指点。
    0.png

  • porousGasificationFoam运行ODESolver报错

    9 Posts
    657 Views

    @wangfei9088 邮箱联系您了!期待您的回复

  • 1 Posts
    128 Views

    第一列为能量,第二列电离系数为关于能量的函数,能量由能量方程求解,第二列需要根据场中的能量数值插值计算当地的电离系数。
    e6d35e3b-505f-4342-ad41-cc3aa7905308-image.png
    22ee645c-9f2d-4540-84ef-84a11e942e6f-image.png

  • 1 Posts
    139 Views

    @李东岳 东岳老师您好,我使用通过结合 waves2foam 和 overInterDyMFoam 的用overWaveDyMFoam求解器计算波浪与旋转模型相互作用的时候,重叠部分区域的流体不随时间改变,重叠的部分已经设置成overset边界条件了,想请教老师是否知道这个是什么原因导致的。
    113.png
    背景部分如图
    111.png
    重叠部分如图
    112.png
    boundary文件设置如下:
    /--------------------------------- C++ -----------------------------------
    | ========= | |
    | \ / F ield | OpenFOAM: The Open Source CFD Toolbox |
    | \ / O peration | Version: v1912 |
    | \ / A nd | Website: www.openfoam.com |
    | \/ M anipulation | |
    *---------------------------------------------------------------------------*/
    FoamFile
    {
    version 2.0;
    format ascii;
    class polyBoundaryMesh;
    location "constant/polyMesh";
    object boundary;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

    8
    (
    oversetPatch
    {
    type overset;
    inGroups 1(overset);
    nFaces 56;
    startFace 222062;
    }
    inlet
    {
    type patch;
    nFaces 98;
    startFace 222118;
    }
    bottom
    {
    type wall;
    inGroups 1(wall);
    nFaces 1132;
    startFace 222216;
    }
    outlet
    {
    type patch;
    nFaces 98;
    startFace 223348;
    }
    atmosphere
    {
    type patch;
    nFaces 1132;
    startFace 223446;
    }
    frontBack
    {
    type empty;
    inGroups 1(empty);
    nFaces 221480;
    startFace 224578;
    }
    sides
    {
    type overset;
    inGroups 1(overset);
    nFaces 2000;
    startFace 446058;
    }
    cylinder
    {
    type wall;
    inGroups 1(wall);
    nFaces 80;
    startFace 448058;
    }
    )

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

  • fvMeshStitcher for changing mesh not found

    4 Posts
    269 Views

    @李东岳 果然跑起来了!

  • bubble colume算例一个

    3 Posts
    733 Views

    是的,大约20秒之后

  • 10 Posts
    2k Views

    @zhe 谢谢,我按照方法排查尝试了一下,发现并不是粒子的加入影响了液体速度场,二而是MPPICInterFoam对于setFields对于输入速度场就有问题。下图一个是MPPICInterFoam计算的,一个是interFoam计算的,同样设置的5m/s液体下落速度,但结果截然不同。@李东岳 也请麻烦李老师能否帮忙看一下,谢谢!
    2a82db74-6e61-43e1-a687-5a6ca08d9055-image.png
    7751b300-7c97-4692-97a7-48f19f694107-image.png
    96ee3830-8f39-4ffe-8986-3988a9d011df-image.png

  • Openfoam时间步长无关性

    7 Posts
    650 Views

    @RQLI_CFD 一些涡量很杂乱的区域,导致Cd系数会在某些时刻突然蹦很高。

  • 编译overWaveDyMFoam后生成波浪出错

    3 Posts
    314 Views

    已解决,基于interDyMFoam改waveDyMFoam的文件更改overInterDyMFoam就可以

  • open foam的参考压力

    6 Posts
    509 Views

    @coolhhh 应该是平均值

  • 6 Posts
    552 Views

    我是openFoam10,如果只是删了processor没有改动constant的话,在更改controlDict起始时间后可直接输入decomposePar然后进行求解器求解。
    decomposePar命令会根据controlDict中的起始时间拷贝对应的U、p作为初始数据以及当前constant文件夹里的polymesh文件夹读取网格拓扑信息。

  • 重新编译热物理库

    7 Posts
    670 Views

    @yuky 哪个问题呢,煤油还是穿透长度?

  • 3 Posts
    491 Views

    请问题主解决此问题了吗?

  • 关于paraview画图

    16 Posts
    2k Views

    一眼望去,全是进步空间

    哈哈,幽默,有意思

  • 4 Posts
    860 Views

    加密网格不能使用壁面函数,同时要使用低雷诺数湍流模型

  • paraView调整显示比例

    6 Posts
    2k Views

    @Samuel-Tu 请问这个功能在paraview的哪里可以找到呢

  • 关于LES的dynamicSmagorinsky一些问题

    12 Posts
    914 Views

    @李东岳 f084b820-6ac4-4a71-aa27-4cc598955778-image.png 李老师,这是我文献中看到的,这种是咋实现的,没什么思路现在

  • 在安装CFDEM时,安装不了LPP

    3 Posts
    366 Views

    请问,就是改成下面这个解决的吗

  • bound 函数的实现方法

    6 Posts
    497 Views

    bound 函数的实现到底为什么要这样。

    这个看起来是个很简单的数值操作。不是从物流守恒定律搞出来的。这就是Henry自己搞的。他很多东西都自己搞。

    average这个函数我最大的印象就是dynSmagorinsky模型,Henry搞这么个东西进去,整个场的动态Cs变成了一个标量,后来让alberto怼有bug,Henry直接给dynSmagorinsky模型给删了。到现在OpenFOAM也没有动态Smagorinsky模型。 https://bugs.openfoam.org/view.php?id=99

  • Smagorinsky模型系数问题

    42 Posts
    4k Views

    最近没细看这个玩别的去了。我参考Spectral analysis of large eddy simulations of the convective boundary layer昨天晚上推了个八九不离十。这个ck ce是符合湍流能谱的一个常数。这是前人已经做过的工作。没法写英文了。我以为别人没玩过这个。哈哈

  • 如何人为将曲率给定为一个定值

    8 Posts
    660 Views

    @李东岳 好的,东岳老师,我试试按照您说得这样算一下。

    另外我应该补充一下,100μm直径气泡的实验测得的浮升终速度大约是0.005~0.008m/s.

    e584ada7-1a05-4bb6-8cd8-f1e1997c43cc-image.png

    参考文献 Pawliszak, P., Ulaganathan, V., Bradshaw-Hajek, B.H., Manica, R., Beattie, D.A., Krasowska, M., 2019. Mobile or Immobile? Rise Velocity of Air Bubbles in High-Purity Water. J. Phys. Chem. C 123, 15131–15138.
  • 初始速度场给定

    10 Posts
    2k Views

    @fubianhanshu 你好可以加个联系方式吗,想请教一些问题

  • 20 Posts
    2k Views

    @Prometheus10

    期待期待

  • 质量入口边界

    3 Posts
    310 Views

    @李东岳质量入口边界 中说:

    你考虑的是多相流还是单相流

    李老师您好,感谢您的回复我考虑的是多相流,但是入口处只有气体,也只有气体进入

  • 运行结束后输出密度rho

    11 Posts
    838 Views

    @wangfei9088 了解了,感谢:142:

  • 82 Posts
    14k Views

    看到 cfd online 的后处理代码:compressibleyPlusLES,感觉修改下作为后处理工具,不失为一个更简单直接的方法。

    volScalarField yPlusTemp ( IOobject ( "yPlusTemp", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::NO_WRITE ), mesh, dimensionedScalar("yPlusTemp", dimless, 0.0) ); volVectorField uPlus ( IOobject ( "uPlus", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::NO_WRITE ), mesh, dimensionedVector("uPlus", dimless, vector::zero) ); volScalarField uTau ( IOobject ( "uTau", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::NO_WRITE ), mesh, dimensionedScalar("uTau", dimVelocity, 0.0) ); volScalarField yPlus ( IOobject ( "yPlus", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::NO_WRITE ), mesh, dimensionedScalar("yPlus", dimless, 0.0) ); Info<< "Reading field UMean\n" << endl; volVectorField UMean ( IOobject ( "UMean", runTime.timeName(), mesh, IOobject::MUST_READ, IOobject::NO_WRITE ), mesh ); Info<< "Reading field U\n" << endl; volVectorField U ( IOobject ( "U", runTime.timeName(), mesh, IOobject::MUST_READ, IOobject::NO_WRITE ), mesh ); Info<< "Reading field rho\n" << endl; volScalarField rho ( IOobject ( "rho", runTime.timeName(), mesh, IOobject::MUST_READ, IOobject::NO_WRITE ), mesh ); # include "compressibleCreatePhi.H" Info<< "successs1\n" << endl; autoPtr<basicThermo> pThermo ( basicThermo::New(mesh) ); basicThermo& thermo = pThermo(); Info<< "successs2\n" << endl; autoPtr<compressible::LESModel> sgsModel ( compressible::LESModel::New(rho, UMean, phi, thermo) ); /*---------------------------------------------------------------------------*\ ========= | \\ / 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/>. Application yPlusLES Description Calculates and reports yPlus and uPlus for all wall patches, for the specified times, for compressible LES. \*---------------------------------------------------------------------------*/ #include "fvCFD.H" //#include "incompressible/singlePhaseTransportModel/singlePhaseTransportModel.H" //aali #include "compressible/LES/LESModel/LESModel.H" #include "basicThermo.H" //ali #include "wallFvPatch.H" #include "LESModel.H" #include "nearWallDist.H" #include "wallDist.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // int main(int argc, char *argv[]) { timeSelector::addOptions(); #include "setRootCase.H" # include "createTime.H" instantList timeDirs = timeSelector::select0(runTime, args); # include "createMesh.H" forAll(timeDirs, timeI) { runTime.setTime(timeDirs[timeI], timeI); Info<< "Time = " << runTime.timeName() << endl; fvMesh::readUpdateState state = mesh.readUpdate(); // Wall distance wallDist y(mesh, true); if (timeI == 0 || state != fvMesh::UNCHANGED) { Info<< "Calculating wall distance\n" << endl; Info<< "Writing wall distance to field " << y.name() << nl << endl; y.write(); } #include "createFields.H" volScalarField::GeometricBoundaryField d = nearWallDist(mesh).y(); volScalarField muEff(sgsModel->muEff()); const fvPatchList& patches = mesh.boundary(); dimensionedScalar uTauAvg("uTauAvg", dimVelocity, 0); const volScalarField muLam(sgsModel->mu()); scalar nPatch = 0; Info<< "Summary: " << nl << endl; forAll(patches, patchi) { const fvPatch& currPatch = patches[patchi]; if (typeid(currPatch) == typeid(wallFvPatch))//isA<wallFvPatch>(currPatch)) { yPlusTemp.boundaryField()[patchi] = d[patchi] *sqrt ( muEff.boundaryField()[patchi]/rho.boundaryField()[patchi] *mag(UMean.boundaryField()[patchi].snGrad()) ) /muLam.boundaryField()[patchi]/rho.boundaryField()[patchi]; const scalarField& YpTemp = yPlusTemp.boundaryField()[patchi]; //effective viscosity used in the calculation of u* uTau.boundaryField()[patchi] = sqrt ( sgsModel->muEff() *mag(UMean.boundaryField()[patchi].snGrad()) /sgsModel->rho() ); const fvPatchScalarField& uTauWall = uTau.boundaryField()[patchi]; dimensionedScalar uTauTmp("uTauTmp", dimVelocity, average(uTauWall)); uTauAvg += uTauTmp; nPatch ++; Info<< "Patch " << patchi << " named " << currPatch.name() << " y+ : min: " << min(YpTemp) << " max: " << max(YpTemp) << " average: " << average(YpTemp) << " avgUGradWall: " << average(mag(U.boundaryField()[patchi].snGrad())) << nl << endl; } } uTauAvg /= nPatch; Info << " avg. friction velocity uTau is: " << uTauAvg.value() << " (averaged over " << nPatch << " wall(s))" << nl <<endl; //yPlus is = u* x y/nu yPlus = y.y() * uTauAvg / ((sgsModel->mu()) / (sgsModel->rho())); uPlus = UMean / uTauAvg; Info << "Writing yPlus and uPlus to corresponding fields." << nl <<endl; yPlus.write(); uPlus.write(); // Info<< "Writing yPlus to field " // << yPlus.name() << nl << endl; // // yPlus.write(); } Info<< "End\n" << endl; return 0; } // ************************************************************************* //
  • openfoam中添加新变量并输出

    3 Posts
    304 Views

    我也不是很懂,从代码角度来看,貌似只有进入了if判断语句中才会进行变量的输出?是不是得把IO操作放在外层

  • 5 Posts
    390 Views

    @李东岳 好的,谢谢老师

  • 5 Posts
    390 Views

    空的是指真空还是空气?
    空气就两相流(入口是water,计算域本来是air),真空就知识盲区了。

  • 9 Posts
    2k Views

    @wsy11 那就是你的blockmesh 设置 把底面 ground 在设置低一些

  • scalarField和volScalarField

    6 Posts
    506 Views

    @kcol 相当于volScalarField,但是只定义内部网格,在边界网格上没有定义

  • 7 Posts
    690 Views

    @yhdthu 好的 谢谢大佬

  • Wray-Agarwal湍流模型

    Moved
    16 Posts
    4k Views
    一个流弊的低雷诺数SA模型在CFD中文网于2023年11月27日诞生!
  • 9 Posts
    764 Views

    @coolhhh 对,我使用这个命令:alias Anaconda3='PATH=/home/install/Anaconda3/bin:$PATH'时,还没有把anaconda的环境给注释掉,OpenFOAM也可以正常使用,但是并行命令不能使用。
    我大概懂大佬你的意思了,如果使用了alias命令,只要没有输入Anaconda3应该就不会激活anaconda环境。可能是因为我这边前人在给anaconda设置环境的时候,有点繁琐(具体我也没弄清楚),所以我可能只使用一条alias命令,不能完全把相应的anaconda环境给包含进去。所以才导致使用alias Anaconda3='PATH=/home/install/Anaconda3/bin:$PATH'命令还不能消除使用并行命令带来的报错。再次感谢您的回答,谢谢!

  • OpenFOAM 浮体铰接可以计算吗

    6 Posts
    539 Views

    @hachikoi 就是说目前还没有实现需要自己修改源码是吗

  • 16 Posts
    4k Views

    老哥们,你们是如何解决这个问题
    我在使用两套overset做浮体自衰减的时候也遇到类似的问题

  • SHM尖锐直角边界层添加

    4 Posts
    403 Views

    @xpqiu 感谢大佬回复,问题已解决 请问大佬有遇到过多重overset计算错误的问题吗

  • mapField报错

    3 Posts
    273 Views

    厉害啊老铁

  • OpenFOAM大涡模拟的滤波尺度

    4 Posts
    583 Views

    @zhangxy 是一个网格的尺度

  • 三维圆柱绕流升力沿管长分布

    5 Posts
    927 Views

    @xpqiu 谢谢您!我大致明白了,去试一试:xinxin:

  • 3 Posts
    288 Views

    @coolhhh 发现问题了,因为我的是两相流,需要设定field 为U.water

  • 7 Posts
    900 Views

    @李东岳
    参考文献:
    Knacke, T. (2013).
    Potential effects of Rhie & Chow type interpolations in airframe
    noise simulations. In: Schram, C., Dénos, R., Lecomte E. (ed):
    Accurate and efficient aeroacoustic prediction approaches for
    airframe noise, VKI LS 2013-03.

  • 3 Posts
    331 Views

    @Chen_hao
    当这个模型用于多相流时,IOobject::groupName("omega", alphaRhoPhi.group()) 会变成类似 omega.air 这样的名字。

  • 计算一定区域内网格数

    2 Posts
    234 Views

    用 topoSet,把这些区域内的网格提取到 cellSet,提取过程会告诉你网格数量。

  • 2 Posts
    206 Views

    还可以用 topoSet 结合 createPatch 来实现,不过这样得到的面不一定是精确地 1/2,因为createPatch 只是从已经画好的网格上选一些面来生成一个新边界。