Skip to content

OpenFOAM

OpenFOAM交流区

5.3k 主题 31.4k 帖子
  • 5 帖子
    1k 浏览
    S

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

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

    5
    5 帖子
    4k 浏览
    H

    foamToVTK

  • MPPICFoam计算求解时的错误

    4
    4 帖子
    2k 浏览
    S

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

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

    3
    3 帖子
    1k 浏览
    S

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

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

    2
    2 帖子
    1k 浏览
    S

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

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

    2
    2 帖子
    2k 浏览
    G

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

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

    3
    3 帖子
    2k 浏览
    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

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

  • OpenFOAM中实现结果的转移

    2
    2 帖子
    1k 浏览
    tidedrinkerT

    可以,请查找mapFields命令

  • 1 帖子
    794 浏览
    S

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

  • 风力机致动线模型

    1
    1 帖子
    911 浏览
    S

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

  • 非结构化网格如何加显式滤波

    3
    3 帖子
    2k 浏览
    Z

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

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

    多谢老师

  • OpenFOAM循环壁面生成

    2
    2 帖子
    2k 浏览
    李东岳

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

  • parafoam打开加密网格

    3
    3 帖子
    2k 浏览
    A

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

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

    5
    5 帖子
    3k 浏览
    A

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

  • 1 帖子
    820 浏览
    L

    使用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
    3 帖子
    2k 浏览
    1

    @fireztw 好的谢谢!

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

    10
    10 帖子
    6k 浏览
    H

    @myheart 好的,谢谢您

  • Floating point exception

    8
    8 帖子
    8k 浏览
    L

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

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

    4
    4 帖子
    5k 浏览
    fireztwF

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

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

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

    参考constantAlphaContactAngle、dynamicAlphaContactAngle以及timeVaryingAlphaContactAngle。

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

  • 1 帖子
    894 浏览
    fireztwF

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