首页
关于先锋注册
业务范围
最新动态
联系我们
栏目分类

业务范围

你的位置:先锋注册 > 业务范围 > OpenFOAM编程案例|08 自定义边界

OpenFOAM编程案例|08 自定义边界

发布日期:2024-07-22 07:11    点击次数:152

本文描述在OpenFOAM中编程实现自定义边界类型。

OpenFOAM中可以利用codeStream、codeFixedValue实现自定义边界上物理场分布。这些方式操作起来简单,但是功能也较为单一。若想要实现更加复杂的边界条件类型,可以通过编程创建新的边界类型。

OpenFOAM中所有的边界条件定义均位于文件夹$FOAM_SRC/finiteVolume/fields/fvPatchFields中,用户可以利用文件夹中的边界类型为模板,开发自己的边界条件类型。

以一个沿y方向速度成抛物线分布的边界为例,描述在OpenFOAM中新建一个边界条件的基本流程。在充分发展的管道流动中,轴向速度沿径向分布为:

这里为平均速度;为径向方向坐标,为管道半径,为圆心坐标。

1 文件准备

打开Linux终端或Windows WSL,通过下面的命令准备文件。

runfoamNewBC -f -v parabolicVelocitycd parabolicVelocity

这里利用程序foamNewBC快速构造一个边界条件定义框架。关于foamNewBC的用法,可以使用命令foamNewBC -help进行查看,如下图所示。

图片

上面的命令中,-f表示创建一个fixedValue型边界;-v表示创建一个矢量边界。

此时在当前路径下创建了一个名为parabolicVelocity的文件夹,其内文件结构如下图所示。

图片

文件夹parabolicVelocity中包含了一个Make文件夹与parabolicVelocityFvPatchVectorField.C及parabolicVelocityFvPatchVectorField.H文件。这里不需要改动Make文件夹中的任何内容。

2 修改头文件

在头文件parabolicVelocityFvPatchVectorField.H中指定成员变量及构造函数。

删除多余的成员变量,添加新的成员变量
// 指定最大速度值scalar maxvalue_;// 指定流动方向vector n_;// 指定y坐标方向vector y_;

如下图所示。

图片

注释掉虚函数autoMap与rmap的定义

图片

3 修改源文件

在源文件parabolicVelocityFvPatchVectorField.C中定义功能实现。

注释或删掉t()函数在第一个构造函数中添加参数初始化程序代码
// 默认初始化Foam::parabolicVelocityFvPatchVectorField::    parabolicVelocityFvPatchVectorField(        const fvPatch &p,        const DimensionedField<vector, volMesh> &iF)    : fixedValueFvPatchVectorField(p, iF),      maxvalue_(0),      n_(1, 0, 0),      y_(0, 1, 0){}
修改第二个构造函数
Foam::parabolicVelocityFvPatchVectorField::parabolicVelocityFvPatchVectorField(    const fvPatch& p,    const DimensionedField<vector, volMesh>& iF,    const dictionary& dict):    fixedValueFvPatchVectorField(p, iF),    maxvalue_(readScalar(dict.lookup("maxvalue"))),    n_(dict.lookup("n")),    y_(dict.lookup("y")){    Info << "Using the parabolicVelocity boundary condition" << endl;    if (mag(n_) < SMALL