Skip to content
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
CFD中文网

CFD中文网

  1. CFD中文网
  2. OpenFOAM
  3. 关于修改湍流模型中非线性雷诺应力项的问题

关于修改湍流模型中非线性雷诺应力项的问题

已定时 已固定 已锁定 已移动 OpenFOAM
25 帖子 3 发布者 14.8k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • C 离线
    C 离线
    Chen_hao
    在 中回复了 xpqiu 最后由 编辑
    #16

    @xpqiu 谢谢老师的回答,ShihQuadraticKE模型是一个很好的参考!

    这类模型除了修改 νt ,还需要把雷诺应力的非线性部分加上。

    您所指的加上雷诺应力非线性部分就是UEqn.H中turbulence->divDevRhoReff(rho, U)项的修改对吗?

    X 1 条回复 最后回复
  • X 在线
    X 在线
    xpqiu 超神
    在 中回复了 Chen_hao 最后由 编辑
    #17

    @chen_hao 在 关于修改湍流模型中非线性雷诺应力项的问题 中说:

    您所指的加上雷诺应力非线性部分就是UEqn.H中turbulence->divDevRhoReff(rho, U)项的修改对吗?

    不是,不需要修改这个函数,你仔细看看 ShihQuadraticKE 这个模型的继承关系,它继承的是 nonLinearEddyViscousity 类。这个类计算雷诺应力的方式不一样,除了线性项还有一个 nonLinearStress 项。你只要按照这个框架去写,把你的非线性项赋值给 nonLinearStress 就行了。

    1 条回复 最后回复
  • C 离线
    C 离线
    Chen_hao
    在 中回复了 李东岳 最后由 编辑
    #18

    @李东岳
    我会采用老师提供的第一种思路进行修改,感激不尽~

    1 条回复 最后回复
  • C 离线
    C 离线
    Chen_hao
    写于 最后由 编辑
    #19

    @xpqiu @李东岳

    QQ图片20220701101118.png

    老师,改程序中有个关于语法的问题不太确定,ShiQuadraticKE.C 中程序没有采用模板化的,但是KOmaga.C是采用模板化的,在我更改KOmaga.H文件的继承类时,我上图这个写法对不对,直接在nonlinearEddyViscosityincompressible::RASModel 中类比eddyViscosity<RASModel<BasicTurbulenceModel>>。

    1 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    写于 最后由 编辑
    #20

    我觉得你不用这么写。你动继承肯定会有一些问题,目前也看不出来,不是很strightworrd。比较简单的是:

    1. kOmega.H头文件不用动,你先去把tau植入到你的kOmega.C里面
    2. 计算G
    3. 去devTau函数里面把tau的非线性部分加上

    你要是按照ShiQuadraticKE套路来,

    1. 把k方程改成你的omega方程,不用动.H文件
    2. 非线性项按照你的tau去写

    第一种简单一些,但有一些硬植入。就是devTau函数这块
    第二种更灵活。做完了就是非线性komega模型。

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复
  • C 离线
    C 离线
    Chen_hao
    写于 最后由 李东岳 编辑
    #21

    @李东岳 @
    谢谢老师指导,我最后按照方法二,完全按照他的格式来修改的,修改到最后我发现一个问题,如下

     public:
    
        //typedef typename BasicTurbulenceModel::alphaField alphaField;
        //typedef typename BasicTurbulenceModel::rhoField rhoField;
        //typedef typename BasicTurbulenceModel::transportModel transportModel;
    
    
        //- Runtime type information
        TypeName("MHDkOmega");
    
    
        // Constructors
    
            //- Construct from components
            MHDkOmega
            (
                //const alphaField& alpha,   ????
               //const rhoField& rho,
                const geometricOneField& alpha,  
                const geometricOneField& rho,
                const volVectorField& U,
                const surfaceScalarField& alphaRhoPhi,
                const surfaceScalarField& phi,
                const transportModel& transport,
                const word& propertiesName = turbulenceModel::propertiesName,
                const word& type = typeName
            );
    

    其中 alpha是定义为geometricOneField也就是定义为1,可我的模型是三层液体,采用了multiphaseInterFoam求解器又基于VOF,我才意识到是不是湍流模型一般不能适用于多相的情况,这个alpha能不能修改来适用于这个求解器,担心自己做了无用功,希望老师能帮忙解答:xinlei:

    李东岳李 1 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    在 中回复了 Chen_hao 最后由 编辑
    #22

    从这个alpha来看,确实不能用于多相

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复
  • C 离线
    C 离线
    Chen_hao
    写于 最后由 编辑
    #23

    @李东岳
    1.png
    老师,像这种形式的alpha的定义,能用于多相的情况吗?

    typedef typename BasicTurbulenceModel::alphaField alphaField
    const alphaField& alpha
    

    BasicTurbulenceModel这个通用类是代指的是KomegaSST?(就本例)

    1 条回复 最后回复
  • C 离线
    C 离线
    Chen_hao
    在 中回复了 李东岳 最后由 Chen_hao 编辑
    #24

    @李东岳
    请老师看看G这部分代码可不可以这样写,
    矢量场Snl有点搞不清=和()赋值,tgradU后面用不用加括号~

    tmp<volTensorField> tgradU = fvc::grad(U);//tmp reload to Field
        volScalarField S2(2*magSqr(symm(tgradU())));
        
        tensor I(1,0,0,0,1,0,0,0,1);  
        volSymmTensorField S(twoSymm(tgradU));
        volTensorField W(twoSkew(tgradU));
        volTensorField Snl =
            1/omega_
           *(
               S&S-(1/3)*magSqr(W)*I
             + twoSymm(S&W)
             + (2.5)*(W&W-(1/3)*magSqr(W)*I)
            );
        
        volScalarField::Internal GbyNu(dev(twoSymm(tgradU()())+Snl) && tgradU()());
        volScalarField::Internal G(this->GName(), nut()*GbyNu);
        tgradU.clear();
    
    

    3d1d2e59-f49e-414d-b15b-61c741aa6667-image.png

    1 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    写于 最后由 编辑
    #25

    可以。我记得湍流方程右边都是只考虑网格点的作用,不需要考虑边界。因此你的G声明了内部场,没有问题。

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复

  • 登录

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]