PDRblockMeshとは?
この記事について
OpenFOAMの基本的なメッシュ作成ユーティリティとして,blockMeshが存在する。少し前に,これとは少しことなる PDRblockMesh というユーティリティーが開発された。
ここでは,PDRblockMesh とは何なのか,何ができるのかについて考える。
PDRblockMesh
概要
blockMeshの設定はわかりにくい。それをシンプルにしたものがPDRblockMeshなのかもしれない。
基本的に,x, y, z軸にそった直線で構成されるメッシュを作成する。構造格子のような感覚で,作成するメッシュを指示することができる。
各軸に対して,どこからどこまでを何分割するか,という指示を与える。
それに加えて,上記の指示で作成したメッシュの外部にも,限られたタイプではあるが,メッシュを追加することができる。
ソースコードヘッダでの説明
Class
Foam::PDRblock
Description
A single block x-y-z rectilinear mesh addressable as i,j,k with
simplified creation. Some of the input is similar to blockMeshDict,
but since this specialization is for a single-block that is aligned
with the x-y-z directions, it provides a different means of specifying
the mesh.
Dictionary controls
\table
Property | Description | Required | Default
x | X-direction grid specification | yes |
y | Y-direction grid specification | yes |
z | Z-direction grid specification | yes |
scale | Point scaling | no | 1.0
expansion | Type of expansion (ratio/relative) | no | ratio
boundary | Boundary patches | yes |
defaultPatch | Default patch specification | no |
\endtable
Grid coordinate controls
\table
Property| Description | Required | Default
points | Locations defining the mesh segment | yes |
nCells | Divisions per mesh segment | yes |
ratios | Expansion values per segment | no |
\endtable
A negative expansion value is trapped and treated as its reciprocal.
by default, the expansion is as per blockMesh and represents the ratio
of end-size / start-size for the section.
Alternatively, the relative size can be given.
PDRとは何か?
PDR (porosity/distributed resistance) modelling
なのかもしれない。
cavity例題のメッシュ
OpenFOAMの基本的な例題cavityのメッシュを使ってPDRblockMeshについて考える。cavity例題では,単純な2次元矩形領域が計算対象である。図1にblockMeshおよびPDRblockMeshにより作成したメッシュをします。OpenFOAMに付属する例題には,両方の設定ファイル(blockMeshDictおよびPDRblockMeshDict)が付属している。
図1 cavity例題用メッシュ;左: blockMeshによるメッシュ,右: PDRblockMeshによるメッシュ |
なお,この例題では,極めてシンプルなメッシュを作成する。そのため,外部メッシュ(outer)は使用していない。
設定ファイルの比較
設定ファイルの主要部分を下記に示す。
blockMeshの場合(blockMeshDict)
blockMeshDictでは,ブロックを構成する8つの節点座標を指定する。さらに,ブロック構成を指示する順によって,グローバル座標(x, y, z)に沿わない方向にもメッシュを生成できる。
scale 0.1;
vertices
(
(0 0 0)
(1 0 0)
(1 1 0)
(0 1 0)
(0 0 0.1)
(1 0 0.1)
(1 1 0.1)
(0 1 0.1)
);
blocks
(
hex (0 1 2 3 4 5 6 7) (20 20 1) simpleGrading (1 1 1)
);
PDRblockMeshの場合(PDRblockMeshDict)
PDRblockMeshDictでは,節点の座標を直接指示する必要はない。その代わりに,グローバル座標(x, y, z)のそれぞれに対して,次の3つを指示する。
- 開始点および終了点の座標(必要なら途中の点の座標も)
- セルの数
- セルサイズ比率(等間隔なら1)
この方法では,x,y,z軸に沿ったメッシュしか生成できない。(軸を回転させるオプションは使用できる。)軸に沿ったセルを作る場合には,どの軸を何分割するかという指示だけでよく,ブロックの指示は不要となり,設定ファイルがシンプルになる。
scale 0.1;
x
{
points (0 1);
nCells (20);
ratios (1);
}
y
{
points (0 1);
nCells (20);
ratios (1);
}
z
{
points (0 0.1);
nCells (1);
ratios (1);
}
使用例(simplePipeCage例題)
simplePipeCage例題概要
この例題では,矩形領域の単純なメッシュを作成するとともに,その外部にメッシュを追加する。この外部メッシュは,設定ファイル内部のouterエントリーで指示する。
outerのタイプとしては,次の4つが選択できる。それぞれの指定によって作成されるメッシュを示す。
- none
- extend
- box
- sphere
基本設定
x
{
points ( -11.87 0.03 1.03 2.03 3.05 15.32 );
nCells ( 14 5 5 5 14 );
ratios ( 0.0887187064230887 1 1 1.04060401 10.6993205379072 );
}
y
{
points ( -11.64 0.04 1.03 2.03 3.05 15.31 );
nCells ( 14 5 5 5 14 );
ratios ( 0.0887187064230887 1 1 1.04060401 10.6993205379072 );
}
z
{
points ( 0 1.02 2.05 14.19 );
nCells ( 5 5 14 );
ratios ( 1 1 10.6993205379072 );
}
outer 設定の効果(4つのtype)
outer
{
type none; // (none | extend | box | sphere) [default: none]
onGround true; // Module on the ground? [default: false]
expansion relative; // (uniform | ratio | relative) [default: ratio]
ratios 1.1;
size 3; // Overall outer/inner size
nCells 10; // Number of cells for outer region
}
作成されたメッシュ
outer - none
outer - extend
outer - box
outer - sphere
Discussion