关于“CFD中的能量方程”中最后的方程(16)
-
东岳大神,最近在看rhopimpleFoam 解析,发现pEqn.H代码中以前这一行
volScalarField Dp("Dp", rho*rAU);
在新版的求解器中已经没有了,取而代之的是
surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU));
而对应的Dp
fvScalarMatrix pEqn //方程(99) ( fvm::ddt(psi, p) + fvc::div(phiHbyA) - fvm::laplacian(Dp, p)//就是这一行 == fvOptions(psi, p, rho.name()) );
已经改成了
- fvm::laplacian(rhorAUf, p)
-
@hurricane007
区别不大:expressionless: 哈哈 -
@cfd-china 嗯啊其实基本没区别。。。不过我有点疑惑的是一个用的是volScalarField 另一个是surfaceScalarField,所以差别应该是一个是体心的值,另一个是差值到面上了?
-
@hurricane007
fvm::laplacian(A, p)
中的A可以使体场也可以是面场,应该在fvm::laplacian()
函数内部有重载,你可以看这个函数的C文件看看:expressionless: -
@cfd-china 感谢指教!我还有个问题,为啥有的要用体场,而有的要用面场呢?这个应该是牵涉到对高斯定理散度体积分变为面积分?而就这个例子来说,把以前的体心值改成了面上的插值,数值上有什么影响?
-
为啥有的要用体场,而有的要用面场呢?这个应该是牵涉到对高斯定理散度体积分变为面积分?
体场一般存储值,有限体积法大体都需要把体场变成面场,通过高斯定理处理通量求解NS方程,所以说通量是有限体积法重要的概念,也是有限体积法的优点。
而就这个例子来说,把以前的体心值改成了面上的插值,数值上有什么影响?
我建议你看看
fvm::laplacian()
函数重载,有可能处理体场的函数调用了处理面场的函数,这样的话结果是一样的。
https://github.com/OpenFOAM/OpenFOAM-2.2.x/blob/master/src/finiteVolume/finiteVolume/fvm/fvmLaplacian.C
大略看了下,一样的。