OpenFOAM中为何要这样定义雷诺应力模型?
-
我发现OpenFOAM2.4中把雷诺应力模型定义成了这样:
我不太理解为什么要这么写,以我的理解应该是这样:
请问有人能解开我的疑惑吗? -
其中R代表雷诺应力,S代表源项
-
哪个求解器?没找到这段代码。。。
-
@wwzhao LRR 求解器+pimpleFoam,我把两边的公式加起来得到的这个完整的公式。
-
tmp<fvVectorMatrix> UEqn ( fvm::ddt(U) + fvm::div(phi, U) + turbulence->divDevReff(U) == fvOptions(U) ); tmp<fvVectorMatrix> UEqn ( fvm::ddt(U) + fvm::div(phi, U) + turbulence->divDevReff(U) == fvOptions(U) );
且默认
couplingFactor=0.
//- Return the effective viscosity virtual tmp<volScalarField> nuEff() const { return tmp<volScalarField> ( new volScalarField("nuEff", nut() + nu()) );
-
LRR
tmp<fvVectorMatrix> LRR::divDevReff(volVectorField& U) const { if (couplingFactor_.value() > 0.0) { return ( fvc::div(R_ + couplingFactor_*nut_*fvc::grad(U), "div(R)") + fvc::laplacian ( (1.0 - couplingFactor_)*nut_, U, "laplacian(nuEff,U)" ) - fvm::laplacian(nuEff(), U) ); } else { return ( fvc::div(R_) + fvc::laplacian(nut_, U, "laplacian(nuEff,U)") - fvm::laplacian(nuEff(), U) ); } }
-
这可能是基于数值稳定性的考虑,只有nueff这一项用的是fvm隐式离散,其他用的都是fvc显式离散
-
@wwzhao 谢谢。这个问题我现在已经搞清楚了,是为了增加矩阵的“对角占优”特性,提高收敛性。经过实验,假如修改成不加nu_t的公式,对于一些Co数较大的case就有可能计算发散。