Skip to content

OpenFOAM

OpenFOAM交流区

5.4k 主题 31.9k 帖子
  • 3 帖子
    1k 浏览
    M

    好了,没事了,我眼瞎

  • OpenFOAM turbulentInlet 求助

    7
    7 帖子
    6k 浏览
    O

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

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

    2
    2 帖子
    2k 浏览
    T

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

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

    10
    10 帖子
    13k 浏览

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

    @ZifeiYin

    Hi,

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

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

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

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

    1
    1 帖子
    979 浏览
    S

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

  • openfoam Floating point exception

    4
    4 帖子
    3k 浏览
    S

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

  • 无网络安装openfoam的一些库

    1
    1 帖子
    1k 浏览
    李东岳

    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 帖子
    6k 浏览
    M

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

  • 湍流模型编译的问题

    9
    9 帖子
    7k 浏览
    S

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

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

  • OpenFOAM网格尺寸缩放问题

    7
    7 帖子
    10k 浏览
    S

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

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

    4
    4 帖子
    3k 浏览
    C

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

  • 请问UprimeMean是如何计算的

    7
    7 帖子
    7k 浏览
    J

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

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

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

  • 5 帖子
    2k 浏览
    S

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

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

    5
    5 帖子
    5k 浏览
    H

    foamToVTK

  • MPPICFoam计算求解时的错误

    4
    4 帖子
    3k 浏览
    S

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

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

    3
    3 帖子
    1k 浏览
    S

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

  • 神经网络和OpenFOAM组合的新湍流模型问题讨论

    2
    2 帖子
    2k 浏览
    S

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

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

    2
    2 帖子
    2k 浏览
    G

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

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

    3
    3 帖子
    3k 浏览
    S

    这是我的.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

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