OpenFOAM

4.5k 主题 26.4k 帖子
  • OpenFOAM中怎么只通过MapFields映射边界值

    2 帖子
    198 浏览

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

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

    10 帖子
    7k 浏览

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

    @ZifeiYin

    Hi,

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

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

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

  • 5 帖子
    397 浏览

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

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

    1 帖子
    126 浏览

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

  • openfoam Floating point exception

    4 帖子
    551 浏览

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

  • 无网络安装openfoam的一些库

    1 帖子
    151 浏览

    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 帖子
    685 浏览

    @李东岳 李老师,我看了应该是一样的,第一个是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 帖子
    208 浏览

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

  • OpenFOAM网格尺寸缩放问题

    7 帖子
    663 浏览

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

  • Ubuntu 20.04 安装 OpenFOAM-v1712

    22 帖子
    8k 浏览

    @李东岳 已解决,谢谢!

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

    4 帖子
    415 浏览

    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 帖子
    992 浏览

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

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

    :145:

  • 5 帖子
    162 浏览

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

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

    5 帖子
    1k 浏览

    foamToVTK

  • MPPICFoam计算求解时的错误

    4 帖子
    333 浏览

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

  • OpenFOAM小代码

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

    http://dyfluid.com/code.html

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

    4 帖子
    576 浏览

    首先谢谢李老师的回复,我的计算模型长这个样子
    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 帖子
    137 浏览

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

  • 2 帖子
    246 浏览

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

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

    4 帖子
    1k 浏览

    也遇到相同的问题

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

    2 帖子
    510 浏览

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

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

    3 帖子
    266 浏览

    这是我的.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 帖子
    217 浏览

    可以,请查找mapFields命令

  • 1 帖子
    117 浏览

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

  • 风力机致动线模型

    1 帖子
    158 浏览

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

  • 13 帖子
    2k 浏览

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

  • 3 帖子
    304 浏览

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

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

    多谢老师

  • 4 帖子
    425 浏览

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

  • OpenFOAM循环壁面生成

    2 帖子
    230 浏览

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

  • parafoam打开加密网格

    3 帖子
    291 浏览

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

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

    5 帖子
    498 浏览

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

  • 1 帖子
    119 浏览

    使用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 帖子
    302 浏览

    @fireztw 好的谢谢!

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

    10 帖子
    2k 浏览

    @myheart 好的,谢谢您

  • Floating point exception

    8 帖子
    4k 浏览

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

  • 液体与固体表面的接触角怎么定义和操作?

    4 帖子
    2k 浏览

    @wwzhao液体与固体表面的接触角怎么定义和操作? 中说:

    接触角是指气-液界面的切线穿过液体与固-液交界线之间的夹角θ。θ小于90°代表固体表面亲水,大于90°代表固体表面疏水。

    可以通过对wall类型的边界设置alpha边界条件来设置接触角。

    参考constantAlphaContactAngle、dynamicAlphaContactAngle以及timeVaryingAlphaContactAngle。

    想请教一下,如果像定义个类似于timeVaryingAlphaContactAngle的边界条件,只是把时间换成坐标x,y或者z,该如何创建新的边界条件呢?

  • 1 帖子
    139 浏览

    Openfoam中的多相流问题,如果考虑壁面润湿性,需要将alpha.water的wall设置为接触角边界条件,最常用的就是constantAlphaContactAngle和dynamicAlphaContactAngle。特别地,如果接触角随时间变化,有一个对应的timeVaryingAlphaContactAngle;现在想做一个接触角对空间位置变化的,如θ=θ1+(θ2-θ1)*x。也就是将timeVaryingAlphaContactAngle中的time改为x,该如何创建这一新的边界条件呢?求赐教

  • 高压下费托合成反应发散

    3 帖子
    289 浏览

    @bestucan 感谢您的指导,我去试着改一下

  • matllab数据导入paraview

    1 帖子
    140 浏览

    如何在matlab中将二维流场写入vtk文件,找了一圈都只有三维的,有大佬知道吗

  • 3 帖子
    287 浏览

    @李东岳OpenFOAM-dev 支持二维AMR吗?测试计算一直报错。 中说:

    不支持2维AMR,但是可以把z方向处理为slip

    原来如此,多谢李老师

  • Openfoam 远程并行计算问题

    4 帖子
    431 浏览

    可以试试screen,tmux,byobu

  • MPPICInterFoam支持自适应网格技术吗?

    1 帖子
    121 浏览

    各位大佬好!在MPPICInterFoam的源代码中没看到关于动网格的源文件,所以MPPICInterFoam求解器支持自适应网格技术吗?

  • 关于fvSchemes字典中wallDist的疑问

    4 帖子
    2k 浏览

    @tidedrinker关于fvSchemes字典中wallDist的疑问 中说:

    哪些模型最简单的方法是空置这一项,或者故意填个错的,然后报错的时候会提示你有那些可选
    确实k-omega SST需要,没有就会报错

  • 浮点数例外 (核心已转储)问题

    3 帖子
    327 浏览

    加密前网格由blockMesh生成blockMeshDict

    FoamFile { version 2.0; format ascii; class dictionary; object blockMeshDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // scale 1; vertices ( (-0.15242 0 -0.005) ( 0 0 -0.005) ( 0.3048 0.081670913853 -0.005) (-0.15242 0.1524 -0.005) ( 0 0.1524 -0.005) ( 0.3048 0.1524 -0.005) (-0.15242 0 0.005) ( 0 0 0.005) ( 0.3048 0.081670913853 0.005) (-0.15242 0.1524 0.005) ( 0 0.1524 0.005) ( 0.3048 0.1524 0.005) ); blocks ( hex (0 1 4 3 6 7 10 9 ) (80 80 1) simpleGrading (1 1 1) hex (1 2 5 4 7 8 11 10) (160 80 1) simpleGrading (1 1 1) ); edges ( ); boundary ( inlet { type patch; faces ( (0 6 9 3) ); } outlet { type patch; faces ( (2 5 11 8) ); } bottom { type symmetryPlane; faces ( (0 1 7 6) ); } top { type symmetryPlane; faces ( (3 9 10 4) (4 10 11 5) ); } obstacle { type patch; faces ( (1 2 8 7) ); } ); mergePatchPairs ( ); // ************************************************************************* //

    加密后是由fluent.msh转换的fluent.msh
    加密前:controlDict
    加密后:controlDict
    其他设置基本是一样的
    物性参数:thermophysicalProperties
    湍流模型laminarturbulenceProperties
    离散格式:fvSchemes
    求解器控制:fvSolution
    来流条件:p T U

  • OpenFOAM中的sphereDrag相关参数修改

    3 帖子
    323 浏览

    @李东岳 谢谢李老师

  • paraview处理试验数据

    2 帖子
    264 浏览

    能否根据一些散点的坐标xyz,即这些散点的风压值,生成paraview可以读取的格式让其能插值显示曲面风压?

  • 关于setFields工具设置的一些疑问

    17 帖子
    4k 浏览

    @wangwang 谢谢前辈,是的发现问题了

  • OpenFOAM温度越界

    2 帖子
    240 浏览

    温度越界这个问题在可压缩那面出现的太多了。没有一个普适性的答案。这就是发散了。