OpenFOAM

4.5k 主题 26.4k 帖子
  • 场计算问题

    5 帖子
    507 浏览

    @李东岳 谢谢李老师,我再回去看看是不是我公式的问题

  • 2 帖子
    305 浏览

    我看了你的一些帖子,大部分都是基本的使用问题。这一类问题在学习用户手册后都可以被解决。 http://www.dyfluid.com/OpenFOAM用户指南-9.pdf

    先处理出来涡量 : http://dyfluid.com/code.html#id29 使用streamLine函数可以处理某个平面的速度,压力,涡量等值: http://dyfluid.com/code.html#id40
  • 14 帖子
    2k 浏览

    @hr Moodyn我没有试过,Moody是成功安装使用了的,后面阻力太大就放弃了。

  • OpenFOAM动网格出现网格畸变

    4 帖子
    483 浏览

    @Stan同学 看你的图片,网格变形并不大,按理是不会出现负体积这个问题的,而且扭曲率也没有很离谱啊,为什么会错呢?openfoam其他的动网格方案都卡的比较死,我之前是放弃用openfoam实现较大网格变形的算例了。如果你真的要弄大变形,可能需要对Openfoam里的变形进行重新编程该写算法去做了。或者用FLuent的重构网格试试,也可以用Udf写新算法进行计算。

  • 多域求解器

    2 帖子
    242 浏览

    建立两个网格就行了。P一套网格。Q一套网格。

  • 修改OpenFOAM中自带求解器应该怎么做

    1 帖子
    229 浏览

    思路具体是需要对OpenFOAM中某一求解器中的头文件进行修改和变化,并修改其中其中一些项。是自己建立一个求解器然后将原来的自带求解器中代码粘贴到建立的求解器中修改,然后编译的过程吗?有什么注意事项吗?

  • 6 帖子
    587 浏览

    @李东岳 谢谢东哥

  • request for volScalarField from objectRegistry failed

    2 帖子
    2k 浏览

    @李东岳 李老师,在使用openFOAM-V2006版本的buoyantBoussinesqFoam求解器,出现如下报错:
    --> FOAM FATAL ERROR:

    request for basicThermo thermophysicalProperties from objectRegistry region0 failed available objects of type basicThermo are

    0()

    From const Type& Foam::objectRegistry::lookupObject(const Foam::word&, bool) const [with Type = Foam::basicThermo] in file /home/lyc/OpenFOAM/OpenFOAM-v2006/src/OpenFOAM/lnInclude/objectRegistryTemplates.C at line 463.

    FOAM aborting

    #0 Foam::error::printStack(Foam::Ostream&) at ??:?
    #1 Foam::error::exitOrAbort(int, bool) at ??:?
    #2 Foam::basicThermo const& Foam::objectRegistry::lookupObjectFoam::basicThermo(Foam::word const&, bool) const at ??:?
    #3 Foam::fv::fixedTemperatureConstraint::fixedTemperatureConstraint(Foam::word const&, Foam::word const&, Foam::dictionary const&, Foam::fvMesh const&) at ??:?
    #4 Foam::fv::option::adddictionaryConstructorToTableFoam::fv::fixedTemperatureConstraint::New(Foam::word const&, Foam::word const&, Foam::dictionary const&, Foam::fvMesh const&) at ??:?
    #5 Foam::fv::option::New(Foam::word const&, Foam::dictionary const&, Foam::fvMesh const&) at ??:?
    #6 Foam::fv::optionList::reset(Foam::dictionary const&) at ??:?
    #7 Foam::fv::optionList::optionList(Foam::fvMesh const&, Foam::dictionary const&) at ??:?
    #8 Foam::fv::options::options(Foam::fvMesh const&) at ??:?
    #9 Foam::fv::options::New(Foam::fvMesh const&) at ??:?
    #10 ? in ~/OpenFOAM/OpenFOAM-v2006/platforms/linux64GccDPInt32Opt/bin/buoyantBoussinesqPimpleFoam
    #11 __libc_start_main in /lib/x86_64-linux-gnu/libc.so.6
    #12 ? in ~/OpenFOAM/OpenFOAM-v2006/platforms/linux64GccDPInt32Opt/bin/buoyantBoussinesqPimpleFoam
    请问是什么原因呢,我的constant 和0文件与tutorials一致,还是报错。

  • Paraview中如何提取单元压力平均值

    2 帖子
    288 浏览

    同问一下,我怎样能够提取某一截面中某一部分的速度,感谢

  • openFOAM怎么输出debug文件查看其中参数

    3 帖子
    299 浏览

    @李东岳 谢谢李老师

  • wsl和虚拟机

    10 帖子
    929 浏览

    @heike256 hyper-v我都不知道是啥,大佬整的太高端了。我就知道虚拟机,wsl,真系统。那你试试真系统。

  • 3 帖子
    336 浏览

    好了,没事了,我眼瞎

  • OpenFOAM turbulentInlet 求助

    7 帖子
    2k 浏览

    请问这个边界条件生成的流场脉动是线性变化的吗?

  • OpenFOAM中怎么只通过MapFields映射边界值

    2 帖子
    258 浏览

    最后自己修改了mapFields把映射内部场的代码删掉了

  • OpenFOAM里面的dnsFoam为什么这么菜?

    10 帖子
    7k 浏览

    @李东岳OpenFOAM里面的dnsFoam为什么这么菜? 中说:

    @ZifeiYin

    Hi,

    请参考下述内容,把第一行第二句话自行删去:

    鉴于CFD圈子的小众性,“CFD中国”执行最严厉的友善管理制度:所有用户请以专业的态度对待所有问题。不得在所有版块发表轻蔑性言论;
    例如,下面的语句被认为是具有轻蔑性的:“楼主回去看看书吧”,“这种问题你也问?”,“不会用百度?”
    “CFD中国”建议用户对每个问题严谨友善处理。例如上述内容可以这样表述:“建议楼主参考《数值传热学》第48页,有对xxx问题的详细表述”,“个人认为这个问题是一个非常普适性的问题,在大部分的教材中都有涉及,楼主可以参考xxx”,“这个问题和CFD的关系不大,建议楼主去百度。google去搜索相关内容”

    哈哈哈哈,东岳老师干得漂亮

  • 5 帖子
    497 浏览

    @李东岳 好的,明白!感谢老师!

  • 风力机致动线模型分布因子的考虑

    1 帖子
    156 浏览

    在turbineFoam中自带算例中似乎没有关于风力机致动线的设置,有没有大佬做过致动线的可以交流一下,感谢!

  • openfoam Floating point exception

    4 帖子
    602 浏览

    您好,询问一下在ALM的使用中你有没有考虑分布因子的设置,可以交流一下吗,感谢

  • 无网络安装openfoam的一些库

    1 帖子
    180 浏览

    libevent_pthreads-2.1.so.7

    libevent-2.1.so.7

    libhwloc.so.15

    libmpi.so.40

    libopen-pal.so.40

    libopen-rte.so.40

    这几个包是在一个刚装完ubuntu系统的机器上 1)如果能从别的地方拷贝一个装好的openfoam 2)把这些包复制到lib下,就可以跑openfoam

  • 7 帖子
    2k 浏览

    网格质量问题吧,可以先用那个move动网格命令检查一下运动过程的网格质量

  • 湍流模型编译的问题

    9 帖子
    792 浏览

    @李东岳 李老师,我看了应该是一样的,第一个是v2206,第二个是of9

    const volScalarField::Internal divU ( fvc::div(fvc::absolute(this->phi(), U))().v() ); tmp<volTensorField> tgradU = fvc::grad(U); const volScalarField::Internal GbyNu ( this->type() + ":GbyNu", tgradU().v() && dev(twoSymm(tgradU().v())) ); const volScalarField::Internal G(this->GName(), nut()*GbyNu); tgradU.clear() eddyViscosity<RASModel<BasicMomentumTransportModel>>::correct(); volScalarField::Internal divU ( fvc::div(fvc::absolute(this->phi(), U))() ); tmp<volTensorField> tgradU = fvc::grad(U); volScalarField::Internal G ( this->GName(), nut()*(dev(twoSymm(tgradU().v())) && tgradU().v()) ); tgradU.clear();
  • 2 帖子
    266 浏览

    这个看起来是边界条件设置的问题,正常用的话不会这样,网格少的话发在论坛我给你看看

  • OpenFOAM网格尺寸缩放问题

    7 帖子
    769 浏览

    @coolhhh 感谢您的回复,应该就是求解器中那些非线性模型导致的。感觉openfoam做无量纲化有不少trick。。

  • Ubuntu 20.04 安装 OpenFOAM-v1712

    22 帖子
    8k 浏览

    @李东岳 已解决,谢谢!

  • 关于openfoam新手的一些提问与注意事项

    4 帖子
    497 浏览

    centos7能装openfoamv2212,但比ubantu费点劲,并且centos7也不再更新了,能用ubantu就用ubantu

  • 请问UprimeMean是如何计算的

    7 帖子
    2k 浏览

    @李东岳请问UprimeMean是如何计算的 中说:

    所以你要计算得是$\overline{{\bfU '}^2}=\overline{\bfU^2}-{\overline{\bfU}}^2$?$\bfU '$是脉动速度,$\bfU$是速度,$\overline{\bfU}$是平均速度

    老师,请问openFoam中可压缩求解器(rhoreactingFoam)使用Les模型,使用uprimemean计算的是favre平均的值吗还是雷诺平均的值,如果想要分别计算favre平均和雷诺平均可以做到吗

  • waves2Foam安装 2024年更新版本

    6 帖子
    1k 浏览

    @李东岳waves2Foam安装 2024年更新版本 中说:

    @liujm 老教程需要用老版本的ubuntu,客户用新版本的ubuntu就失败了

    :145:

  • 5 帖子
    219 浏览

    解决办法一:关闭3d加速,但会卡成ppt,其它办法暂未发现

  • window下的paraview如何读取拉格朗日场?

    5 帖子
    1k 浏览

    foamToVTK

  • MPPICFoam计算求解时的错误

    4 帖子
    399 浏览

    @sxz0823 再回应一下李老师,我上面的修改应该是错误的,应该在求解器下面重新定义phi

  • OpenFOAM小代码

    39 帖子
    16k 浏览
    本帖之前写的代码,挑主要的都更新到这里的

    http://dyfluid.com/code.html

  • OpenFOAM控制方程植入代码讨论

    4 帖子
    644 浏览

    首先谢谢李老师的回复,我的计算模型长这个样子
    5afa5f9625cb27a2605306540053ba79_720.png
    最常见的报错信息是这个样子:

    --> FOAM FATAL ERROR: (openfoam-2306) Maximum number of iterations exceeded: 100 when starting from T0:300 old T:18296.6 new T:3283.45 f:1.71386e+07 p:100000 tol:0.03

    简言之就是发散了。
    上面这个是二维网格,计算结果长这个样子(都给把计算结果对称了):速度云图
    173f8291-4eb9-4b3e-b747-c217feb14b65-96160786c562205c6777481adb0f4773.png
    温度云图:
    a6b8fdee-f871-42ce-843c-faf5a097e561-603ff8fd332322579632f68434ccd8c6.png
    感觉计算结果就是错的,因为在Cathode是wall类型,从Inlet附近到Cathode附近流线应该有弯曲的表现。

    阴极我设定的边界条件3500K,它最高温度才3800K,磁场产生的源项作用效果十分小。

    谢谢李老师提的reconstruct方法,我研究试试。

  • 关于turbinesfoam中pitching直接运行产生的错误

    3 帖子
    179 浏览

    好的,谢谢李老师,我研究一下

  • 2 帖子
    287 浏览

    目前打算从稍微简单的kEpsilon或kOmage湍流模型进行修改

  • 借助localPoints实现网格运动控制的问题

    4 帖子
    1k 浏览

    也遇到相同的问题

  • 求推荐OpenFOAM编程方面的资料或课程

    2 帖子
    555 浏览

    同样求推荐资料或者书籍,比如介绍OpenFOAM数据类型,场的类型,遍历边界,遍历内部场,将数学公式转化为OpenFOAM代码,等等。

  • OpenFOAM中编译新的湍流模型报错

    3 帖子
    309 浏览

    这是我的.C文件```
    /---------------------------------------------------------------------------\

    \ / F ield OpenFOAM: The Open Source CFD Toolbox \ / O peration \ / A nd www.openfoam.com \/ M anipulation Copyright (C) 2011-2017 OpenFOAM Foundation Copyright (C) 2019 OpenCFD Ltd.

    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 "kEpsilonNNQuadraticTrain.H"
    #include "bound.H"
    #include "wallFvPatch.H"
    #include "nutkWallFunctionFvPatchScalarField.H"
    #include "addToRunTimeSelectionTable.H"

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

    namespace Foam
    {
    namespace incompressible
    {
    namespace RASModels
    {

    // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //

    defineTypeNameAndDebug(kEpsilonNNQuadraticTrain, 0);
    addToRunTimeSelectionTable(RASModel, kEpsilonNNQuadraticTrain, dictionary);

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

    void kEpsilonNNQuadraticTrain::correctNut()
    {
    correctNonlinearStress(fvc::grad(U_));
    }

    void kEpsilonNNQuadraticTrain::correctNonlinearStress(const volTensorField& gradU)
    {
    timeScale_=k_/epsilon_;

    // Linear (nut) nut_ = -g1_*k_*timeScale_; nut_.correctBoundaryConditions(); // Quadratic (tau_NL) volSymmTensorField S(timeScale_*symm(gradU)); volTensorField W(timeScale_*skew(gradU)); nonlinearStress_ = 2*k_ *( g2_ * twoSymm(S&W) + g3_ * dev(innerSqr(S)) + g4_ * dev(symm(W&W)) );

    }

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

    kEpsilonNNQuadraticTrain::kEpsilonNNQuadraticTrain
    (
    const geometricOneField& alpha,
    const geometricOneField& rho,
    const volVectorField& U,
    const surfaceScalarField& alphaRhoPhi,
    const surfaceScalarField& phi,
    const transportModel& transport,
    const word& propertiesName,
    const word& type
    )
    :
    nonlinearEddyViscosityincompressible::RASModel
    (
    type,
    alpha,
    rho,
    U,
    alphaRhoPhi,
    phi,
    transport,
    propertiesName
    ),

    Ceps1_ ( dimensioned<scalar>::lookupOrAddToDict ( "Ceps1", coeffDict_, 1.44 ) ), Ceps2_ ( dimensioned<scalar>::lookupOrAddToDict ( "Ceps2", coeffDict_, 1.92 ) ), sigmak_ ( dimensioned<scalar>::lookupOrAddToDict ( "sigmak", coeffDict_, 1.0 ) ), sigmaEps_ ( dimensioned<scalar>::lookupOrAddToDict ( "sigmaEps", coeffDict_, 1.3 ) ), k_ ( IOobject ( IOobject::groupName("k", alphaRhoPhi.group()), runTime_.timeName(), mesh_, IOobject::MUST_READ, IOobject::AUTO_WRITE ), mesh_ ), epsilon_ ( IOobject ( IOobject::groupName("epsilon", alphaRhoPhi.group()), runTime_.timeName(), mesh_, IOobject::MUST_READ, IOobject::AUTO_WRITE ), mesh_ ), g1_ ( IOobject ( "g1", runTime_.timeName(), mesh_, IOobject::MUST_READ, IOobject::AUTO_WRITE ), mesh_ ), g2_ ( IOobject ( "g2", runTime_.timeName(), mesh_, IOobject::MUST_READ, IOobject::AUTO_WRITE ), mesh_ ), g3_ ( IOobject ( "g3", runTime_.timeName(), mesh_, IOobject::MUST_READ, IOobject::AUTO_WRITE ), mesh_ ), g4_ ( IOobject ( "g4", runTime_.timeName(), mesh_, IOobject::MUST_READ, IOobject::AUTO_WRITE ), mesh_ ), timeScale_ ( IOobject ( "timeScale", runTime_.timeName(), mesh_, IOobject::NO_READ, IOobject::AUTO_WRITE ), mesh_, dimensionedScalar("timeScale", dimTime, scalar(0.0)) )

    {
    bound(k_, kMin_);
    bound(epsilon_, epsilonMin_);

    if (type == typeName) { printCoeffs(type); }

    }

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

    bool kEpsilonNNQuadraticTrain::read()
    {
    if (nonlinearEddyViscosityincompressible::RASModel::read())
    {
    Ceps1_.readIfPresent(coeffDict());
    Ceps2_.readIfPresent(coeffDict());
    sigmak_.readIfPresent(coeffDict());
    sigmaEps_.readIfPresent(coeffDict());

    return true; } return false;

    }

    void kEpsilonNNQuadraticTrain::correct()
    {
    if (!turbulence_)
    {
    return;
    }

    nonlinearEddyViscosity<incompressible::RASModel>::correct(); tmp<volTensorField> tgradU = fvc::grad(U_); const volTensorField& gradU = tgradU(); volScalarField G ( GName(), (nut_*twoSymm(gradU) - nonlinearStress_) && gradU ); // Update epsilon and G at the wall epsilon_.boundaryFieldRef().updateCoeffs(); // Dissipation equation tmp<fvScalarMatrix> epsEqn ( fvm::ddt(epsilon_) + fvm::div(phi_, epsilon_) - fvm::laplacian(DepsilonEff(), epsilon_) == Ceps1_*G*epsilon_/k_ - fvm::Sp(Ceps2_*epsilon_/k_, epsilon_) ); epsEqn.ref().relax(); epsEqn.ref().boundaryManipulate(epsilon_.boundaryFieldRef()); solve(epsEqn); bound(epsilon_, epsilonMin_); // Turbulent kinetic energy equation tmp<fvScalarMatrix> kEqn ( fvm::ddt(k_) + fvm::div(phi_, k_) - fvm::laplacian(DkEff(), k_) == G - fvm::Sp(epsilon_/k_, k_) ); kEqn.ref().relax(); solve(kEqn); bound(k_, kMin_); // Re-calculate viscosity and non-linear stress correctNonlinearStress(gradU);

    }

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

    } // End namespace RASModels
    } // End namespace incompressible
    } // End namespace Foam

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

  • OpenFOAM中实现结果的转移

    2 帖子
    255 浏览

    可以,请查找mapFields命令

  • 1 帖子
    142 浏览

    我用LEMOS中的湍流入流为入流边界湍流模型采用LES做大气边界层仿真,但是入口和出口处湍流波动差距很大,在出口区几乎没有波动,请问各位大佬这个应该怎么办
    这里是入口边界处生成的速度结果:
    2c5cc383-747d-420b-990d-1c5a33977235-146bb4d9c73c73787867cf697c142ef.png
    这里是入口边界处生成的速度结果:
    ae723d96-8a6d-42fd-9809-ecacfa7db1a9-ecc2b878b5346cf4f27bea8ecb763cf.png

  • 风力机致动线模型

    1 帖子
    189 浏览

    准备学习风力机致动线模型,但是在of10中并没有找到相关案例,应该如何下手去学习,github中的文件似乎并不能适用于这个版本,不知道如何运行,还请各位大佬给予相关建议,非常感谢

  • 13 帖子
    2k 浏览

    时至今日,我是刚刚接触这方面小白,问下风力机致动线模型是否有相关算例可以学习,如有打扰,非常抱歉

  • 3 帖子
    368 浏览

    @李东岳非结构化网格如何加显式滤波 中说:

    OpenFOAM有一些LES模型需要调用显示滤波。比如动态k模型。OpenFOAM已经处理好了。你可以看看源代码。在我那个笔记里面也写的非常详细,不管是理论,还是方程方面。

    多谢老师

  • 4 帖子
    492 浏览

    @李东岳 谢谢李老师,也谢谢楼上几位。目前找到一些问题所在了。在fluent中进出口的温度不是周期性的而流场是,每个周期都会重置入口温度(之前用fluent的人不清楚),所以这一点是我们自己的问题所在。另外还有一个问题就是在计算之前fluent进行初始化为300K,但是计算一段时间后会发现有小于300K的,这个问题就不知道是什么原因了。目前计划是对温度场T+、y+了。和实验的验证结果如下图所示,个人感觉能凑合用吧。
    9a7bebfa-8bf1-450e-8768-5e386dd453a2-微信截图_20240115155859.png

  • OpenFOAM循环壁面生成

    2 帖子
    271 浏览

    感谢分享!!:146: :146: :146:

  • parafoam打开加密网格

    3 帖子
    343 浏览

    @cresendo 但是我每次运行前都会allclean。是在什么时候删除时间步呢,toposet之前还是refinemesh之后呢?

  • 不可压缩多相流计算出现负压

    5 帖子
    578 浏览

    谢谢大佬,我的Courant数设置的是0.5,时间步长使用的自适应时间步长。我的想法是可不可能是因为alpha.water场某个单元计算出来比较小,导致得到该单元的U特别大,然后求解压力方程后在该单元附近出现负压?

  • 1 帖子
    155 浏览

    使用OpenFOAM-v2006版本的setExprBoundaryFieldsDict在设置某个坐标方向上边界值符合分段函数分布规律的初值时,比如z方向上再0<z<11000m 时符合T = 288.15 - 0.0065*z,在z>11000m时T = 216.65,分段函数如下:
    7332c5a5-eb8a-48b7-b4d0-b2effae3bbdc-image.png
    这样的边界条件设置我一开始模仿了setExprFields的语法,使用condition语法限定分段区域,但是查看0/T文件发现后面的函数值会覆盖前面的赋值,也就是说condition语句在这里被忽略了,tutorials仅给出了2个示例,都比较简单。请问各位道友怎么实现这种功能??

  • levelset初始条件

    3 帖子
    351 浏览

    @fireztw 好的谢谢!

  • tecplot加载OpenFOAM文件报错且速度特别慢

    10 帖子
    2k 浏览

    @myheart 好的,谢谢您

  • Floating point exception

    8 帖子
    4k 浏览

    @Alvin 请问前辈最后有没有找到解决方法??