在openFoam中创建cellZone

简介

openFoam的cellZone概念十分重要,可以给一个区域的单元命名,广泛应用于设置初始场(如气、液两相流的初始VOF分布)
而cellZone通常由cellSet转化而来,本文将介绍使用cellSet定义cellZone的方法

方法

在项目的system目录下新建topoSetDict文件,用于定义cellZone和cellSet. 该文件的内容为

/*--------------------------------*- C++ -*----------------------------------*\
  =========                 |
  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
   \\    /   O peration     | Website:  https://openfoam.org
    \\  /    A nd           | Version:  8
     \\/     M anipulation  |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    object      topoSetDict;
}

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

actions
(
  {
  name    g;              // 单元集合命名为g
  type    cellSet;
  action  new;
  source  cylinderToCell; // 圆柱区域
  sourceInfo
  {
    p1       (0.013759 0.0066167 0);    // 圆柱体上表面的中心点
    p2       (0.038779 0.0066167 0);   	// 圆柱体下表面的中心点
    radius   0.004191;         	        // 圆柱半径
  }
  }
    
  {
  name    g;
  type    cellSet;
  action  add;             // 追加
  source  cylinderToCell;  // 圆柱区域
  sourceInfo
  {
  p1       (0.00321535 0.0113443 0);    // 圆柱体上表面的中心点
  p2       (0.0153868 0.00715329 0);   	// 圆柱体下表面的中心点
  radius   0.005;         	            // 圆柱半径
  }
  }
    
  {
  name    g;
  type    cellSet;
  action  add;            // 追加
  source  cylinderToCell; // 圆柱区域
  sourceInfo
  {
  p1       (0.0362785 0.00675582 0); // 圆柱体上表面的中心点
  p2       (0.0435375 0.0109468 0);  // 圆柱体下表面的中心点
  radius   0.005;         	         // 圆柱半径
  }
  }

  {
  name    grain;         // 区域命名grain
  type    cellZoneSet;    
  action  new;
  source  setToCellZone;
  sourceInfo
  {
      set g;            // 给定source信息,来自单元集合g
  }
  }

);

// ************************************************************************* //

首先定义了一个名为gcellSet,由一个圆柱确定cellSet中包含的单元。然而这个圆柱不能完全满足需要,还需对g再追加两个圆柱区域. 最终得到的g是由三个圆柱所组成的并集。

得到g后,可以将g转化为cellZone,名称为grain

结果

划分网格后,在命令行运行(这里不叙述网格的划分过程)

topoSet

可以看见constant/polyMesh文件夹中多出了set文件夹和cellZones文件,分别保存了生成的cellSetcellZone. 使用paraview查看网格即可观察cellZone的结果(红色区域)

在openFoam中创建cellZone_第1张图片

你可能感兴趣的:(流体力学,固体火箭发动机仿真,经验分享,c++,linux,openFoam)