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. 在linearViscousStress中硬植入nonlinearStress非线性应力

在linearViscousStress中硬植入nonlinearStress非线性应力

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

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

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

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

    第一种简单一些,但有一些硬植入。就是devTau函数这块

    现在我尝试采用硬植入的方式更改divDevRhoReff,原定义nonlinearEddyViscosity.H中:

    protected:
            // Fields
                volSymmTensorField nonlinearStress_;   
    

    nonlinearEddyViscosity.C中:

     nonlinearStress_
        (
            IOobject
            (
                IOobject::groupName("nonlinearStress", alphaRhoPhi.group()),
                this->runTime_.timeName(),
                this->mesh_
            ),
            this->mesh_,
            dimensionedSymmTensor
            (
                "nonlinearStress",
                sqr(dimVelocity),
                Zero
            )
        )
    

    仿照上面,我在linearViscousStress.C中:

      / * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
        tensor I(1,0,0,0,1,0,0,0,1);  
        volSymmTensorField S(twoSymm(fvc::grad(this->U_)));
        volTensorField W(twoSkew(fvc::grad(this->U_)));
        
        nonlinearStress_ 
        (
            IOobject
            (
                IOobject::groupName("nonlinearStress", alphaRhoPhi.group()),
                this->runTime_.timeName(),
                this->mesh_
            ),
            this->mesh_,
            dimensionedSymmTensor
            (
                "nonlinearStress",
                sqr(dimVelocity), 
                1/omega_*(S&S - (1/3)*magSqr(W)*I + twoSymm(S&W) + (2.5)*(W&W - (1/3)*magSqr(W)*I)) 
            )
    // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
    template<class BasicTurbulenceModel>
    Foam::tmp<Foam::fvVectorMatrix>
    Foam::linearViscousStress<BasicTurbulenceModel>::divDevRhoReff //
    (
        const volScalarField& rho,
        volVectorField& U
    ) const
    {
        return
        (
          - fvc::div((this->alpha_*rho*this->nuEff())*dev2(T(fvc::grad(U))))
           -fvc::div((this->alpha_*rho*this->nuEff())* nonlinearStress_ ) //?????
          - fvm::laplacian(this->alpha_*rho*this->nuEff(), U)
        );
    }
    
    

    疑问:这样在Constructor给 nonlinearStress_ 赋值对不对?如果可以,最棘手的是nonlinearStress_中含有一个omega_,怎么声明引用?只在上面加一个相应湍流模型的H文件就可以吗?
    没系统学过c++,对改写模棱两可,希望各位能直面迷津:135:

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

    你第二段代码好像不全。如果没有omage,那就在构造函数中按照第一段的函数来弄。然后在后面进行修正。类似:

    构造函数()
    :
    nonlinearStress
    (
    )
    {
        修正nonlinearStress
    }
    
    

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

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

    @李东岳

    // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
    
    template<class BasicTurbulenceModel>
    Foam::linearViscousStress<BasicTurbulenceModel>::linearViscousStress
    (
       const word& modelName,
       const alphaField& alpha,
       const rhoField& rho,
       const volVectorField& U,
       const surfaceScalarField& alphaRhoPhi,
       const surfaceScalarField& phi,
       const transportModel& transport,
       const word& propertiesName
    )
    :
       BasicTurbulenceModel
       (
           modelName,
           alpha,
           rho,
           U,
           alphaRhoPhi,
           phi,
           transport,
           propertiesName
       ),
       
       nonlinearStress_ 
       (
           IOobject
           (
               IOobject::groupName("nonlinearStress", alphaRhoPhi.group()),
               this->runTime_.timeName(),
               this->mesh_
           ),
           this->mesh_,
           dimensionedSymmTensor
           (
               "nonlinearStress",
               sqr(dimVelocity), 
               Zero 
           )
              
       )   
       {
    
       tensor I(1,0,0,0,1,0,0,0,1);  
       volSymmTensorField S(twoSymm(fvc::grad(this->U_)));
       volTensorField W(twoSkew(fvc::grad(this->U_)));
     
       nonlinearStress_ =
        1/omega_                            //omega_???
        *(
          S&S 
          - (1/3)*magSqr(W)*I 
          + twoSymm(S&W) 
          + (2.5)*(W&W - (1/3)*magSqr(W)*I));
       }
    
    

    类似这样吗?修正直接跟在后面,那对于omega_是直接在:inearViscousStress.H文件中定义:
    volScalarField omega_; 然后使用就可以吗? 麻烦老师了~

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

    @chen_hao 是的。不多你这个omega是不是应该是引用过来的?

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

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

    @李东岳
    哦哦,
    老师所说的引用过来是指:在linearViscousStress.H文件中添加kOmegaSSTBase.H头文件(omega_定义的地方),然后在linearViscousStress.C文件里直接用对吧

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

    @李东岳
    还是说这才叫引用~

        const volScalarField& omega_ = this->omega_;   
    

    :zoule: 查了半天还是在疑惑:我需不需要在linearViscousStress.H文件中声明关于omega,还是挂个H文件就可以,问题有点低级,但希望老师能再次指点迷津。
    继承类的可以直接用,但这种非继承类的......

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

    @chen_hao

    const volScalarField& omega_ = this->omega_;

    这一种

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

    1 条回复 最后回复

  • 登录

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