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 发布者 4.1k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • C 离线
    C 离线
    Chen_hao
    写于2022年11月4日 10:15 最后由 编辑
    #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 条回复 最后回复
  • 李 在线
    李 在线
    李东岳 管理员
    写于2022年11月4日 11:48 最后由 编辑
    #2

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

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

    9月CFD算法编程课: http://dyfluid.com/class.html

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

    C 1 条回复 最后回复 2022年11月4日 14:04
  • C 离线
    C 离线
    Chen_hao
    在 2022年11月4日 14:04 中回复了 李东岳 最后由 编辑
    #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 条回复 最后回复 2022年11月4日 15:08
  • 李 在线
    李 在线
    李东岳 管理员
    在 2022年11月4日 15:08 中回复了 Chen_hao 最后由 编辑
    #4

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

    9月CFD算法编程课: http://dyfluid.com/class.html

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

    C 2 条回复 最后回复 2022年11月7日 07:06
  • C 离线
    C 离线
    Chen_hao
    在 2022年11月7日 07:06 中回复了 李东岳 最后由 编辑
    #5

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

    1 条回复 最后回复
  • C 离线
    C 离线
    Chen_hao
    在 2022年11月7日 14:38 中回复了 李东岳 最后由 编辑
    #6

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

        const volScalarField& omega_ = this->omega_;   
    

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

    李 1 条回复 最后回复 2022年11月8日 00:22
  • 李 在线
    李 在线
    李东岳 管理员
    在 2022年11月8日 00:22 中回复了 Chen_hao 最后由 编辑
    #7

    @chen_hao

    const volScalarField& omega_ = this->omega_;

    这一种

    9月CFD算法编程课: http://dyfluid.com/class.html

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

    1 条回复 最后回复
2022年11月4日 10:15

4/7

2022年11月4日 15:08

未读 3
2022年11月8日 00:22
  • 登录

  • 没有帐号? 注册

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