下图是我基于不同的密度场(xh)进行速度场(U)和伴随速度场(Ua)的计算结果,xh有些小差异,但是伴随速度场计算出来完全不一样,右图计算出错了。
a712471d-a2cf-4ca5-8ca9-88d11620cffc-image.png
速度场计算是基于SA模型进行,在UEqn方程中增加了源项:
tmp<fvVectorMatrix> tUEqn
(
fvm::div(phi, U)
+ turbulence->divDevReff(U)
+ fvm::Sp(alpha, U)
==
fvOptions(U)
);
fvVectorMatrix& UEqn = tUEqn.ref();
UEqn.relax();
其中alpha是由密度场xh插值进行的,alphaMax=2.5e5,qu=0.01。
alpha=alphaMax*qu*(1-xh)/(qu+xh);
对于伴随速度场的计算,和UEqn类似,如下所示:
volVectorField adjointTransposeConvectiona((fvc::grad(U) & Ua));
tmp<fvVectorMatrix> tUaEqn
(
fvm::div(-phi, Ua)
+ adjointTransposeConvectiona
+ turbulence->divDevReff(Ua)
+ fvm::Sp(alpha, Ua)
==
fvOptions(Ua)
);
fvVectorMatrix& UaEqn = tUaEqn.ref();
UaEqn.relax();
请大家帮忙看看,会有哪些可能性导致代码计算出现异常。