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中动量方程扩散项的问题

OpenFOAM中动量方程扩散项的问题

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

    首先贴出动量方程,这张文章的截图引用自冶金领域公认SCI(MMTB)

    0_1523695986786_1.png

    0_1523696074361_2.png

    式中的有效黏度(effective viscosity)为层流黏度与湍流黏度之和,我平常对湍流黏度的理解即为论文中湍流黏度的公式定义。但是在openfoam中UEqn.H文件中对此项的编写为turbulence->divDevRhoReff(rho, U),对此我不是很理解,此项具体返回的是怎样的表达式呢?
    在OpenFOAM的算例constant文件中设置了层流黏度,湍流黏度的边界是在0文件中的nut中设置的吗?
    nut与turbulence->divDevRhoReff(rho, U)有怎样的联系吗?
    对于turbulence->divDevRhoReff(rho, U)这一项的理解我也查阅了一下,大家可以参考以下的链接中Tobi的解释,他的解释中表达式和我图片中贴的是一回事吗?
    网站链接如下:

    https://www.cfd-online.com/Forums/openfoam-solving/58214-calculating-divdevreff.html

    (可能要使劲往下翻一翻:chitang: )
    问题有点多,我可能是个问题少年:mihu: :mihu: :mihu:

    我希望我得到的少一点,少一点,再少一点......

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

    @dingcy 在 OpenFOAM中动量方程扩散项的问题 中说:

    turbulence->divDevRhoReff(rho, U),对此我不是很理解,

    长答案

    turbulence是一个指针,divDevRhoReff(rho, U)是函数名称。举例,如果你用的是simpleFoam,其在createFields.H中创建了

    autoPtr<incompressible::turbulenceModel> turbulence
    (
        incompressible::turbulenceModel::New(U, phi, laminarTransport)
    );
    

    其中``为OpenFOAM的智能指针,你可以理解为指针。这一句表示创建名称为turbulence的incompressible::turbulenceModel类型的智能指针autoPtr。

    对于incompressible::turbulenceModel,incompressible表示C++中类的名称空间,turbulenceModel在文件turbulentTransportModel.H中被改名,实际上他就是IncompressibleTurbulenceModel<transportModel>。

    IncompressibleTurbulenceModel<transportModel>在文件IncompressibleTurbulenceModel.H,其为一个类模板。

    在求解器中,simpleFoam调用了turbulence->divDevReff(U)其对应IncompressibleTurbulenceModel.H文件中的函数

    virtual tmp<fvVectorMatrix> divDevReff(volVectorField& U) const;
    

    其返回

    divDevRhoReff(U);
    

    同时,IncompressibleTurbulenceModel继承了incompressibleTurbulenceModel,incompressibleTurbulenceModel是一个虚基类,不能创建具体的类型,在它基础上,可以创建RAS, LES等类型。举例,在kEpsilon这个具体的类型里面,其建立在eddyViscosity类型上,eddyViscosity类型建立在linearViscousStress类型上,在linearViscousStress.C文件里,定义了

    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))))
          - fvm::laplacian(this->alpha_*rho*this->nuEff(), U)
        );
    }
    

    此项具体返回的是怎样的表达式呢?

    短答案

    上面代码的最终形式就是这个表达式。

    式中的有效黏度(effective viscosity)为层流黏度与湍流黏度之和,

    见下面的代码,正是nut的定义,二者之和

    //- Return the effective viscosity
            virtual tmp<volScalarField> nuEff() const
            {
                return tmp<volScalarField>
                (
                    new volScalarField
                    (
                        IOobject::groupName("nuEff", this->alphaRhoPhi_.group()),
                        this->nut() + this->nu()
                    )
                );
            }
    

    湍流黏度的边界是在0文件中的nut中设置的吗?

    是的

    nut与turbulence->divDevRhoReff(rho, U)有怎样的联系吗?

    turbulence->divDevRhoReff(rho, U)见上文描述,nut只是湍流粘度。

    对于turbulence->divDevRhoReff(rho, U)这一项的理解我也查阅了一下,大家可以参考以下的链接中Tobi的解释,他的解释中表达式和我图片中贴的是一回事吗?
    网站链接如下:

    有点长,暂时先不看了。。不过Tobi这个人玩CFD理论很多年了,他贴出来的应该没问题。

    对了,OpenFOAM的Turbulence类型变得越来越复杂,但是目前还不是最复杂的,其中类的调用纷杂交错,看起来非常混乱。如果要学习,建议从粘度模型开始学习。湍流代码放后一些。

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

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

    @李东岳 东岳老师,您好。对于kEpsilon模型,您已经解释了动量方程的扩散项,也就是turbulence->divDevRhoReff(rho, U),是在linearViscousStress.C文件里定义的。但是对于层流的话, turbulence->divDevRhoReff(rho, U)是在哪里指定的呢?

    1 条回复 最后回复
  • E 离线
    E 离线
    EricLiu
    写于 最后由 编辑
    #4

    @瑞水南 您好,请问层流里如何制定的这个问题解决了吗,能不能分享一下

    1 条回复 最后回复

  • 登录

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