openFOAM动量方程中张量的处理

版权声明:本文为博主原创文章,网络精神,欢迎转载。如果转载,请注明出处。 https://blog.csdn.net/zhangyl03/article/details/85598451

动量方程有许多种形式。本文以rhoPimpleFoam为例子进行说明。
rhoPimpleFoam/UEqn.h内容如下:

文件内容

tmp<fvVectorMatrix> UEqn
(
    fvm::ddt(rho, U) 										(I)
       + fvm::div(phi, U)									(II)
       + MRF.DDt(rho, U)								(III)
       + turbulence -> divDevReff(U)		(IV)
       ==
       fvOptions(rho, U)									(V)
)

其中,(I)为非稳态项;(II)为对流项;(III)为MRF造成的附加修正;(IV)为应力张量;(V)用于处理fvOptions文件夹中的附加源项。

我们主要关注turbulence->divDevReff(U)函数。(如果是可压缩流体,那么这个函数就是turbulence->divDevRhoReff(U))

turbulence->divDevReff(U)是什么

类的名称是turbulence,该类基于turbulenceModel类,并从imcompressibleTurbulenceModel类中衍生出来。turbulence类调用了函数divDevReff(U)。该函数内容如下:

tmp<fvVectorMatrix> laminar::divDevReff(volVectorField& U) const
{
    return
    (
      - fvm::laplacian(nuEff(), U)
      - fvc::div(nuEff()*dev(T(fvc::grad(U))))
    );
}

在此函数中存在运动粘度nu,暗示此方程为一不可压缩方程。其次,fvm代表隐式,fvc代表显式。此外,还调用了一个新函数dev()。

新函数dev()

dev()内容为:

template<class Cmpt>
inline Tensor<Cmt dev(const Tensor<Cmpt>& t>
{
    return t - SphericalTensor<Cmpt>::oneThirdsI*tr(t);
}

猜你喜欢

转载自blog.csdn.net/zhangyl03/article/details/85598451