[simpleFoam]、雷诺应力及湍流模型原理
-
各位老师好,我是一个刚接触湍流模型的萌新,关于simpleFoam和k-epsilon湍流模型有以下问题想请教:
①k-epsilon模型是通过k和epsilon两方程解出涡粘系数nut,进而求解雷诺应力使方程封闭对吗,雷诺应力是包含在turbulence->divDevReff(U)这项当中的吗;
②在simpleFoam中,UEqn中有turbulence->divDevReff(U)这一项,为什么我在src/TurbulenceModels文件夹下搜索“divDevReff”关键词却没有找到其表达式,只有divDevRhoReff的表达式呢;
③以下是我找到的nuEff的表达式,其有nu和nut组成,这是否是湍流模型在求解器计算UEqn时发挥作用的体现呢(不然SIMPLEC算法直接就解出U和p了)//- Return the effective viscosity virtual tmp<volScalarField> nuEff() const { return volScalarField::New ( IOobject::groupName("nuEff", this->alphaRhoPhi_.group()), this->nut() + this->nu() ); }
④如果在求解器中设置了很多速度,比如U、Ut、Uf等,那么湍流模型在计算的时候,是选择其中的U来计算雷诺应力吗,选择的依据是什么呢;
我的湍流模型基础较薄弱,希望老师多多指教,感激不尽 -
雷诺应力确实有一部分包含在turbulence->divDevReff(U)这一项中,在OpenFoam中这一项称为有效雷诺应力,表达式如下
\begin{equation}
\mathbf R_\mathrm{eff} = \nu_\mathrm{eff} \left[ \nabla \overline{\mathbf u} + (\nabla \overline{\mathbf u})^\mathsf{T} - \frac{2}{3} (\nabla \cdot \overline{\mathbf u}) \mathbf I \right]
\end{equation}其中的$\nu_\mathrm{eff}=\nu + \nu_t$,$\nu_t$即为通过k-epsilon模型计算出的涡粘性系数。turbulence->divDevReff(U)在动量方程中,由此湍流模型在求解速度时发挥作用。
另外关于turbulence->divDevReff(U)这一项的调用,虽然此项在不可压求解器中,但如果采用线性涡粘的湍流模型,调用的是linearViscousStress 中的 divDevRhoReff(U)(可压缩也用这个),具体代码为:template<class BasicTurbulenceModel> Foam::tmp<Foam::fvVectorMatrix> Foam::linearViscousStress<BasicTurbulenceModel>::divDevRhoReff ( volVectorField& U ) const { return ( - fvc::div((this->alpha_*this->rho_*this->nuEff())*dev2(T(fvc::grad(U)))) - fvm::laplacian(this->alpha_*this->rho_*this->nuEff(), U) ); }
计算时根据括号中的量选择带入计算的是哪个速度。(其中负号是因为定义在系数矩阵等式的右边)
以上内容整理自OpenFOAM 中的不可压和可压 RANS 方程,网页内容非常详细,要是我早点看到能省不少麻烦 -
问题解决,
this->alpha_
的定义在template < class Alpha, class Rho, class BasicTurbulenceModel, class TransportModel > class TurbulenceModel : public BasicTurbulenceModel { public: typedef Alpha alphaField; typedef Rho rhoField; typedef TransportModel transportModel; protected: // Protected data const alphaField& alpha_; const transportModel& transport_; .......... }
这里的
alpha_
应该表示相分数。