在openfoam对边界层的处理,为什么仅仅修正边界,而不是跟边界相邻的那一层网格?
-
比如说,对nut的边界问题,调用的是nutWallFunctionFvPatchScalarField.h
void nutWallFunctionFvPatchScalarField::updateCoeffs() { if (updated()) { return; } operator==(calcNut()); fixedValueFvPatchScalarField::updateCoeffs(); }
其中
operator==(calcNut());
仅仅更新了fvPatch相对应的边界boundaryField,而不是跟边界相邻的那一层网格patchInternalField。 请问这样的处理是一种折衷吗? -
@yuan_neu 由于不同湍流模型的nut计算方法不一样,因此OpenFOAM把对nut internalField的更新放在了各湍流模型的具体代码实现里面。
可参考kOmegaSST模型的相关代码:
src/TurbulenceModels/turbulenceModels/Base/kOmegaSST/kOmegaSSTBase.Ctemplate<class TurbulenceModel, class BasicTurbulenceModel> void kOmegaSST<TurbulenceModel, BasicTurbulenceModel>::correctNut ( const volScalarField& S2, const volScalarField& F2 ) { this->nut_ = a1_*k_/max(a1_*omega_, b1_*F2*sqrt(S2)); this->nut_.correctBoundaryConditions(); fv::options::New(this->mesh_).correct(this->nut_); BasicTurbulenceModel::correctNut(); }
计算完nut后再调用
this->nut_.correctBoundaryConditions()
更新边界条件。