编程小白求问:kEpsilon模型中 k_() 的定义在哪?
-
在求解器(例如
pisoFoam.C
)中添加代码turbulence->k()
可以得到湍动能的量。这是因为在kEpsilon.H
中,对k()
有如下定义//- Return the turbulence kinetic energy virtual tmp<volScalarField> k() const { return k_; }
所以我明白
k_
和k()
代表什么。
但是,在kEpsilon.C
中,对湍动能的求解方程如下tmp<fvScalarMatrix> kEqn ( fvm::ddt(alpha, rho, k_) + fvm::div(alphaRhoPhi, k_) - fvm::laplacian(alpha*rho*DkEff(), k_) == alpha()*rho()*G - fvm::SuSp((2.0/3.0)*alpha()*rho()*divU, k_) - fvm::Sp(alpha()*rho()*epsilon_()/k_(), k_) + kSource() + fvOptions(alpha, rho, k_) ); kEqn.ref().relax(); fvOptions.constrain(kEqn.ref()); solve(kEqn); fvOptions.correct(k_); bound(k_, this->kMin_);
不论是显式离散还是隐式离散,源项括号左边中的湍动能都是用
k_()
表示的。那么k_()
是在哪定义的?代表什么含义? -
@yfclark 在 编程小白求问:kEpsilon模型中 k_() 的定义在哪? 中说:
我知道k_和k()分别为protected变量和member function,但是这里出现了k_(),那么k_()是protected function吗?
-
k_()
调用的是GeometricField
的operator()
,定义如下:src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricField.H
//- Return a const-reference to the dimensioned internal field // Useful in the formulation of source-terms for FV equations inline const Internal& operator()() const;