openfoam学习心得—壁面函数在CFD中如何实施
最近研究壁面函数,发现邱教授博客,讲的很是不错!记录一下
http://xiaopingqiu.github.io/2016/04/25/wallFunctions4/
在一般的外流场计算中,一般遇到的边界有入口、出口、对称面以及壁面-v7编程指南P40对此处应用的边界条件进行了说明,我们重点关注壁面,壁面一般设置为v-no-slip,p-法向梯度为0,代入离散方程从而进行求解,当加入湍流模型时,还会存在湍流参量k、 ε \varepsilon ε、 ω \omega ω,nut,博主主要想归纳在运用壁面函数时,到底该如何对这些参量设置边界条件。
openfoam中的壁面函数按其计算位置分为两种—第一种计算壁面上的值,第二种计算靠近壁面第一层网格,其中心的值。
openfoam里面求解器源代码都位于applications里面,如壁面函数等预先定义好的类位于src里面,其主要有六个k、 ε \varepsilon ε、 ω \omega ω,nut、f、vf、v主要是针对f-v2湍流模型,这里我们主要看k、 ε \varepsilon ε、 ω \omega ω、nut,注意文件夹的名称以s结尾,说明对于某一个参量,可能存在不止一种壁面函数,我们进去下一级目录查看,可以发现 ε \varepsilon ε、 ω \omega ω只有一种壁面函数,k有两种,nut足足有八种壁面函数可供选择!今天笔者主要阅读kqRwallFunctions源代码,遂做些标注,方便日后查阅也供他人参考,有理解不对的地方,还望大佬不吝赐教!
kqRwallFunction.H-这是类声明,固没有出现函数体
namespace Foam //名称空间
{
template<class Type> //模板类定义符,Type可以是任何类
class kqRWallFunctionFvPatchField
:
public zeroGradientFvPatchField<Type> //该类公有继承于模板类
{
public: //公有成员
//- Runtime type information
TypeName("kqRWallFunction"); //成员变量初始化
// Constructors
//- Construct from patch and internal field
kqRWallFunctionFvPatchField //构造函数 无返回值,以类名命名,初始化以引用类型传递参数
(
const fvPatch&,
const DimensionedField<Type, volMesh>&
);
//- Construct from patch, internal field and dictionary
kqRWallFunctionFvPatchField
(
const fvPatch&,
const DimensionedField<Type, volMesh>&,