snappyHexMeshDictの設定とsnappyHexMeshでのメッシュについて

3,245 views
Skip to first unread message

Sakuma

unread,
Mar 4, 2010, 5:18:25 PM3/4/10
to OpenFOAM
DEXCS2009の上にOpenFoam1.6.xを入れて色々と勉強に使わせて頂いております初心者です。

自分で勉強用のモデル作り,openfoamのチュートリアルにあるsnappyHexMeshDictをコピーして自分用に書き換え,
snappyHexMeshでメッシュを作ろうとしましたが,エラーで直ぐに止まってしまいます。

Build : 1.6.x-46f51879cf0a
Exec : snappyHexMesh -overwrite -parallel
Date : Mar 05 2010
Time : 00:33:47
Host : ubuntu-vm
PID : 10612
Case : /home/Desktop/fan
nProcs : 2
Slaves :
1
(
ubuntu-vm.10613
)
Pstream initialized with:
floatTransfer : 0
nProcsSimpleSum : 0
commsType : nonBlocking
SigFpe : Enabling floating point exception trapping (FOAM_SIGFPE).

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * //
Create time
Create mesh for time = 0
Read mesh in = 0.03 s
Overall mesh bounding box : (-0.05 -0.05 -0.2) (0.05 0.05 0.18)
Relative tolerance : 1e-06
Absolute matching distance : 4.054627e-07
[1]
[1]
[1] --> FOAM FATAL ERROR:
[1] Shell FINE_AREA.stl does not support testing for inside
Probably it is not closed.
[1]
[1] From function shellSurfaces::shellSurfaces(const
searchableSurfaces&, const PtrList<dictionary>&)
[1] in file autoHexMesh/shellSurfaces/shellSurfaces.C at line 134.
[1]
FOAM parallel run exiting
[1]
-------------------------------------------------------------------

エラーから,snappyHexMeshDictのrefinementRegionsの設定のどこかに問題があるようですが良く分かりません。
refinementRegionsに設定しているFINE_AREAは円柱形の形状です。汎用のメッシャーのモデル作成機能で形状
を作り,stlに変換しているため,閉じていないことはないと思っていますが...

refinementRegions
{
FINE_AREA
{
mode inside;
levels ((1 2));
}
}

"does not support testing for inside"をキーワードとしてグーグーるで検索すると書きがヒットしますがドイツ語
のようで
...
http://www.cad.de/foren/ubb/Forum527/HTML/000016.shtml

このようなエラーについて対応はどのようにしたら良いでしょうか。
ご存じの方がおられましたら,アドバイスを頂きたく思います。

Masashi Imano

unread,
Mar 4, 2010, 6:53:53 PM3/4/10
to open...@googlegroups.com
今野です。

refinementRegionsというのは、snappyHexMeshDictのサンプルに

// Region-wise refinement
// ~~~~~~~~~~~~~~~~~~~~~~

// Specifies refinement level for cells in relation to a surface. One of
// three modes
// - distance. 'levels' specifies per distance to the surface the
// wanted refinement level. The distances need to be specified in
// descending order.
// - inside. 'levels' is only one entry and only the level is used. All
// cells inside the surface get refined up to the level. The surface
// needs to be closed for this to be possible.
// - outside. Same but cells outside.

と書いてある通り、指定した表面に関連した領域を再分割する機能ですよね。

ここでは、

> refinementRegions
> {
> FINE_AREA
> {
> mode inside;
> levels ((1 2));
> }
> }

と、円柱の表面内をlevel 2迄再分割するという指示になってます。

ところで、何故円柱内を再分割するのでしょうか?
どのような問題を解きたいのか書いてないので、再分割の意図がわかりません。

単純に円柱の表面を再分割して、円柱内、もしくは、円柱外に格子を生成するのであれば、
以下のようにrefinementSurfacesの機能を使うと思います。

refinementSurfaces
{
FINE_AREA
{
levels (1 2);
}
}

どのような流れを解こうとしているのかきちんと書かないと、適切なアドバイスが出来ないと思います。

E.Mogura

unread,
Mar 5, 2010, 6:15:04 PM3/5/10
to OpenFOAM
E.Mogura です。

円柱をstlファイルで定義して、その内部を細分化指定することは可能のはずです。

考えられるのは、

・円柱の側面だけ定義してあるなど、領域が閉じていない
・stlファイル形式の問題
・座標系の問題

などありますが、paraFoamで基礎メッシュを表示させた状態で、
指定した円柱のstlを読み込んでやれば、
大抵の場合(経験的に)、問題点がはっきりすると思います。

Sakuma

unread,
Mar 8, 2010, 10:53:08 AM3/8/10
to OpenFOAM
今野さん,E.Mogura さん アドバイス,ご指摘をありがとうごさいます。

解析モデルの形状は,直管状のチューブのほぼ真ん中にファンが入っていて
そのファンを囲むようにFINE_AREA が作成してあります。今回の解析では
ファンの回転を計算するのでなく,ファンが障害物として流路内にあるという,
極めて簡単な設定です。

直管状のチューブは,半径45で長さが340
FINE_AREA の大きさは,半径40で長さが18
ファンの大きさは,FINE_AREA よりもう少しち小さい設定です。
但し,羽の枚数は,37枚と多いです。

blockMeshには,書きもような設定をしています。
vertices
(
(50.000000 -50.000000 180.000000) // 0
(50.000000 50.000000 180.000000) // 1
(-50.000000 -50.000000 180.000000) // 2
(-50.000000 50.000000 180.000000) // 3
(50.000000 50.000000 -200.000000) // 4
(50.000000 -50.000000 -200.000000) // 5
(-50.000000 50.000000 -200.000000) // 6
(-50.000000 -50.000000 -200.000000) // 7
);

blocks
(
hex (7 5 4 6 2 0 1 3) (10 10 30) simpleGrading (1 1 1)

);

始めはモデルを汎用のメッシャーで作成しましたがstlに書き出すと
面の分割が多く,さらに下記のようなエラー


[1] --> FOAM FATAL ERROR:
[1] Shell FINE_AREA.stl does not support testing for inside

が出るため,blenderで何とか作成しなおしました。作り直すと
このエラーは消えました。やはりstlに何か問題があったようです。

また,メッシュ作成をsnappyHexMeshで実施する時,refinementSurfacesで
メッシュ分割の最小,最大の値を設定しますが,ある設定では上手くメッシュ
が作れ,ある設定ではすぐにエラーします。
OKの時
ROTOR
{
// Surface-wise min and max refinement level
level (3 4);
}

NGの時
ROTOR
{
// Surface-wise min and max refinement level
level (3 5);
}
エラーの場合には,次のようなメッセージが出てきます。これは単純にメモリが
足りないのでしょうか?

Marked for refinement due to surface intersection : 37032 cells.
Marked for refinement due to curvature/regions : 0 cells.
Determined cells to refine in = 0.08 s
Selected for refinement : 37032 cells (out of 316881)
[0] hexRef8 : Dumping cell as obj to "/home/sakuramaru/Desktop/fan/
processor0/cell_6399.obj"
[0]
[0]
[0] --> FOAM FATAL ERROR:
[0] cell 6399 of level 0 uses more than 8 points of equal or lower
level
Points so far:8(97 98 140 141 3539 3540 10082 13612)
[0]
[0] From function hexRef8::setRefinement(const labelList&,
polyTopoChange&)
[0] in file polyTopoChange/polyTopoChange/hexRef8.C at line 3493.
[0]
FOAM parallel run aborting
[0]
[0] #0 Foam::error::printStack(Foam::Ostream&) in "/home/sakuramaru/
OpenFOAM/OpenFOAM-1.6.x/lib/linuxGccDPOpt/libOpenFOAM.so"
[0] #1 Foam::error::abort()[1] hexRef8 : Dumping cell as obj to "/
home/sakuramaru/Desktop/fan/processor1/cell_6414.obj"


[1]
[1]
[1] --> FOAM FATAL ERROR:

[1] cell 6414 of level 0 uses more than 8 points of equal or lower
level
Points so far:8(10772 12606 18162 18288 24133 24142 119842 119845)
[1]
[1] From function hexRef8::setRefinement(const labelList&,
polyTopoChange&)
[1] in file polyTopoChange/polyTopoChange/hexRef8.C at line 3493.
[1]
FOAM parallel run aborting
[1]

そこで,stlの作り方や,メッシュの設定で色々と試してみている所です。

snappyHexMeshの設定で今一良く分からない事があります。blockMeshDictでは,convertToMeters
のような単位系をmに直す設定がありますが,snappyHexMeshにはこのような設定はないのでしょうか。
私の利用するCADでは単位系がmmです。このためSTLで書き出したデータをOpenFOAMに入れると
mになってしまうような気がします。どのように考えたら良いのでしょうか?

> > どのような流れを解こうとしているのかきちんと書かないと、適切なアドバイスが出来ないと思います。- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

E.Mogura

unread,
Mar 8, 2010, 3:45:19 PM3/8/10
to OpenFOAM
E.Mogura です

> level (3 4);
でOKだったのが、(3,5)でNGというのなら、
メモリ不足の可能性大ですね。
ubuntuだと、
 システム管理-システム・モニタ
にて、メモリ使用量を監視できるので、当たりがつくと思います。
エラーの生じる直前(level (3 4);の分割)で50%を超えているようだと、
難しいかもしれません。

また、stlの単位の問題は、いずこも同じのようです。
こちらでは通常、blockMeshもmmで作成しておいて、
snappyHexMeshまではmmのメッシュを作成。
計算実行の前に、scaleコマンドを使って、m(メートル)
に変換するという手順でやっています。

以上

> > - 引用テキストを表示 -- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

Masashi Imano

unread,
Mar 9, 2010, 9:50:56 AM3/9/10
to OpenFOAM
今野です。

> エラーの場合には,次のようなメッセージが出てきます。これは単純にメモリが
> 足りないのでしょうか?
>
> Marked for refinement due to surface intersection : 37032 cells.
> Marked for refinement due to curvature/regions : 0 cells.
> Determined cells to refine in = 0.08 s
> Selected for refinement : 37032 cells (out of 316881)
> [0] hexRef8 : Dumping cell as obj to "/home/sakuramaru/Desktop/fan/
> processor0/cell_6399.obj"
> [0]
> [0]
> [0] --> FOAM FATAL ERROR:
> [0] cell 6399 of level 0 uses more than 8 points of equal or lower
> level
> Points so far:8(97 98 140 141 3539 3540 10082 13612)

エラーメッセージは、FATAL ERROR の下の、

> [0] cell 6399 of level 0 uses more than 8 points of equal or lower
> level

ですよね。

また、

> [0] hexRef8 : Dumping cell as obj to "/home/sakuramaru/Desktop/fan/
> processor0/cell_6399.obj"

と、processor0が出てくるということは、格子を並列生成しているということで
ですよね。

格子の並列生成はまだ少しバギーなので、そのエラーが並列計算によるものか、
シングル計算でも出るのかを、まず初めに確かめたほうが良いです。
シングル計算で出来るのあれば、バグが直るまで、シングル計算で我慢します。


なお、CFD onlineのOpenFOAMフォーラムで、エラーメッセージの


"level 0 uses more than 8 points of equal or lower level"

を検索すると、以下のスレッド

http://www.cfd-online.com/Forums/openfoam-bugs/62372-snappyhexmesh-parallel-openmpi.html
http://www.cfd-online.com/Forums/openfoam/67705-snappyhexmesh-problems-1-5-1-6-a.html

で同様のエラーが報告されていますが、mattijsからは1.5.xや1.6.x等の最新
版を使えという返答です。ここでは最近の1.6.xを使っているみたいなので、
関係ありませんね。


ちなみに、私の経験ではsnappyHexMeshで一気に格子を生成すると、エラーが
出たりメモリが足りなくなる場合でも、段階を分けて格子を生成すると上手く
いく場合があります。

0.blockMeshで直方体を格子を生成
1.snappyHexMeshで直管状のチューブ内部の格子を生成
2.snappyHexMeshでにFINE_AREA内を再分割
3.snappyHexMeshでにROTOR表面を再分割して、ROTORを取り除いた格子を生成

というようにです。


E.Mogura wrote:
> こちらでは通常、blockMeshもmmで作成しておいて、
> snappyHexMeshまではmmのメッシュを作成。
> 計算実行の前に、scaleコマンドを使って、m(メートル)
> に変換するという手順でやっています。

surfaceTransformPoints mm.stl m.stl -scale "(0.001 0.001 0.001)"

ってやつですね。

自分は、blockMeshDictの単位はあくまでも[m]、snappyHexMeshに入れるstlを
事前に上記コマンドでm単位に変換しています。

それでは。

IMANO Masashi

unread,
Mar 6, 2010, 1:54:04 AM3/6/10
to open...@googlegroups.com

今野です。

> E.Mogura です。
>
> 円柱をstlファイルで定義して、その内部を細分化指定することは可能のはずです。
>
> 考えられるのは、
>
> ・円柱の側面だけ定義してあるなど、領域が閉じていない
> ・stlファイル形式の問題
> ・座標系の問題
>
> などありますが、paraFoamで基礎メッシュを表示させた状態で、
> 指定した円柱のstlを読み込んでやれば、
> 大抵の場合(経験的に)、問題点がはっきりすると思います。

そうですね。
本当に円柱内の領域を再分割したいのあれば、E.Moguraさんがおしゃる用に、
まずparaFoamでstlファイルをOpenして見てみるのが先決ですね。

それでもすぐに原因がわからなかったら、surfaceCheckコマンドでstlファイ
ルをチェックしてみてください。

チェック項目としては、surfaceがcloseしていることも必要ですが、他にも
必要なことがあります。

それは、CFD OnlineのOpenFOAMフォーラム

http://www.cfd-online.com/Forums/openfoam/

で"support testing for inside"を検索すると最初に出てくる以下のスレッド

http://www.cfd-online.com/Forums/openfoam-meshing-mesh-utilities/61535-how-make-boundary-patches-stl-file.html

でMattijsが

To use inside/outside we require every edge to have exactly two faces using it. Load in paraview, Filter->Feature Edges and switch on the 'non-manifold' edges. Disable all sharp angle ones (by setting angle to 180?).

と、答えているように、

every edge to have exactly two faces

であることで、surfaceCheckすると、

Surface is closed. All edges connected to two faces.

等とチェックしてくれます。これで、エラーが出るようなら、Mattijsが書い
ているように、ParaView(paraFoam)のFeature Edgesフィルターで問題の箇所を
調べれば良いのではないでしょうか?

IMANO Masashi

unread,
Mar 8, 2010, 10:57:48 PM3/8/10
to open...@googlegroups.com

今野です。

> エラーの場合には,次のようなメッセージが出てきます。これは単純にメモリが
> 足りないのでしょうか?
>
> Marked for refinement due to surface intersection : 37032 cells.
> Marked for refinement due to curvature/regions : 0 cells.
> Determined cells to refine in = 0.08 s
> Selected for refinement : 37032 cells (out of 316881)
> [0] hexRef8 : Dumping cell as obj to "/home/sakuramaru/Desktop/fan/
> processor0/cell_6399.obj"
> [0]
> [0]
> [0] --> FOAM FATAL ERROR:
> [0] cell 6399 of level 0 uses more than 8 points of equal or lower
> level
> Points so far:8(97 98 140 141 3539 3540 10082 13612)

エラーメッセージは、FATAL ERROR の下の、

> [0] cell 6399 of level 0 uses more than 8 points of equal or lower
> level

ですよね。

また、

> [0] hexRef8 : Dumping cell as obj to "/home/sakuramaru/Desktop/fan/
> processor0/cell_6399.obj"

と、processor0が出てくるということは、格子を並列生成しているということで
ですよね。

格子の並列生成はまだ少しバギーなので、そのエラーが並列計算によるものか、
シングル計算でも出るのかを、まず初めに確かめたほうが良いです。
シングル計算で出来るのあれば、バグが直るまで、シングル計算で我慢します。


なお、CFD onlineのOpenFOAMフォーラムで、エラーメッセージの


"level 0 uses more than 8 points of equal or lower level"

を検索すると、以下のスレッド

http://www.cfd-online.com/Forums/openfoam-bugs/62372-snappyhexmesh-parallel-openmpi.html
http://www.cfd-online.com/Forums/openfoam/67705-snappyhexmesh-problems-1-5-1-6-a.html

で同様のエラーが報告されていますが、mattijsからは1.5.xや1.6.x等の最新
版を使えという返答です。ここでは最近の1.6.xを使っているみたいなので、
関係ありませんね。


ちなみに、私の経験ではsnappyHexMeshで一気に格子を生成すると、エラーが
出たりメモリが足りなくなる場合でも、段階を分けて格子を生成すると上手く
いく場合があります。

0.blockMeshで直方体を格子を生成
1.snappyHexMeshで直管状のチューブ内部の格子を生成
2.snappyHexMeshでにFINE_AREA内を再分割
3.snappyHexMeshでにROTOR表面を再分割して、ROTORを取り除いた格子を生成

というようにです。


E.Mogura wrote:
> こちらでは通常、blockMeshもmmで作成しておいて、
> snappyHexMeshまではmmのメッシュを作成。
> 計算実行の前に、scaleコマンドを使って、m(メートル)
> に変換するという手順でやっています。

surfaceTransformPoints mm.stl m.stl -scale "(0.001 0.001 0.001)"

Sakuma

unread,
Mar 11, 2010, 7:42:14 AM3/11/10
to OpenFOAM
今野さん,E.Moguraさん,追加のアドバイス等を色々とありがとうございました。
投稿が少し長くなりますがご容赦ください。

今までと同じモデルに対して,シングルCPUと並列CPU(2個)でメッシュ作成(snappyHexMesh)を比較してみました。
モデルの概要:
・blockMeshで切る基礎メッシュの寸法は100×100の正方形で長さが380
・直管状のチューブは,半径45で長さが340で,基礎メッシュの丁度真ん中にいれてあります。
流体の入力側をFRONT,出口側をBACK,側面をSTATORと名付けてあります。
・直管状のチューブのほぼ真ん中に,半径40で長さが18の円柱を FINE_AREAと名付けて置き,その内側に
ファン(ROTOR)を入れてあり,半径38で高さが17,羽根の枚数は37枚です。

blockMeshDictの設定は
vertices
(
(50 -50 180) // 0
(50 50 180) // 1
(-50 -50 180) // 2
(-50 50 180) // 3
(50 50 -200) // 4
(50 -50 -200) // 5
(-50 50 -200) // 6
(-50 -50 -200) // 7


);
blocks
(
hex (7 5 4 6 2 0 1 3) (10 10 30) simpleGrading (1 1 1)
);

sanppyHexMeshの設定ですが,ROTOR部のメッシュ分割のレベルを
level(3 4)とlevel(3 5)でチェックしてみました。
refinementSurfaces
{


ROTOR
{
// Surface-wise min and max refinement level
level (3 4);
}

シングルCUP,並列CPU(2個)ともにROTOR部のメッシュ分割レベルがlevel(3 4)では問題なくメッシュが作成できました。
約3分程度で終わります。paraFoamでメッシュ形状を見ますと,ファンの羽根先端部分のメッシュ状態が少し気になりますが,
レベルを上げれば上手く形状にフィットしそうな気がします。

シングルCUPでROTOR部のメッシュ分割のレベルをlevel(3 5)で作成しようとすると,wmware用の割り当てメモリが1024MB
で,
使用メモリが1G(システムモニタで97%の使用率)となり,スワップも840MB位で,2時間を超えてもメッシュが出来ないのであき
らめました。やはり自分のノートPCではメモリ不足のようです。このため,並列CPU(2個)でメッシュは試していません。

ただ,色々と触っていてふとある事に気がつきました。今回のメッシュ作成状況をチェックしている時にエラーが出ました。特に気
になったのがOverall mesh bounding boxの値です。XとYの値が微妙に小数まじりになっています。この時,Number
of edges:
1006090 Number of edges to retest: 1006090 Number of intersected
edges : 37824が妙に大きな値になっています。

メッシュが切れなかった時のsnappyHexMeshのログからの抜粋
Build : 1.6.x-f7c68a480aa7
nProcs : 1

Overall mesh bounding box : (-44.99845 -44.99846 -180) (44.99845
44.99843 160)
Relative tolerance : 1e-06
Absolute matching distance : 0.0003630412

Edge intersection testing:
Number of edges : 1006090
Number of edges to retest : 1006090
Number of intersected edges : 37824
Calculated surface intersections in = 9.86 s
Initial mesh : cells:316881 faces:1006090 points:375668
Cells per refinement level:
0 316881

hexRef8 : Dumping cell as obj to "/home/sakuramaru/Desktop/fan/

cell_6399.obj"
--> FOAM FATAL ERROR:


cell 6399 of level 0 uses more than 8 points of equal or lower level
Points so far:8(97 98 140 141 3539 3540 10082 13612)

From function hexRef8::setRefinement(const labelList&,
polyTopoChange&)

in file polyTopoChange/polyTopoChange/hexRef8.C at line 3493.

FOAM aborting
エラーで終わっています。

これに対してメッシュが切れたsnappyHexMeshのログでは,Overall mesh bounding boxの値が
blockMeshDictで設定した値と合っています。また,Number of edges : 9700 Number of edges
to retest : 9700  Number of intersected edges : 1167でエラーが発生したものとオーダーが異
なっています。

Build : 1.6.x-f7c68a480aa7
nProcs : 1

Overall mesh bounding box : (-50 -50 -200) (50 50 180)
Relative tolerance : 1e-06
Absolute matching distance : 0.0004054627

Edge intersection testing:
Number of edges : 9700
Number of edges to retest : 9700
Number of intersected edges : 1167
Calculated surface intersections in = 2.79 s

Initial mesh : cells:3000 faces:9700 points:3751
Cells per refinement level:
0 3000

途中省略

Cells per refinement level:
0 302
1 5178
2 50827
3 37334
4 223141
Writing mesh to time constant
Written mesh in = 78.1 s.
Layers added in = 78.1 s.
Finished meshing in = 206 s.
End

同じ設定ファイル(色々と触っているためどこかで変化があったかもしれませんが)でなぜこんな事が
起きるか良くわかりません。

エラーが出た直後にDEXCS OpenFOAM2009の1.5.xのsnappyHexMeshでメッシュを作成しました
が,同様のエラーが出ています。
Overall mesh bounding box : (-44.99845 -44.99846 -180) (44.99845
44.99843 160)
Relative tolerance : 1e-06
Absolute matching distance : 0.0003630412
Determining initial surface intersections
-----------------------------------------
Edge intersection testing:
Number of edges : 1006090
Number of edges to retest : 1006090
Number of intersected edges : 37730
Calculated surface intersections in = 9.75 s

Initial mesh : cells:316881 faces:1006090 points:375668
Cells per refinement level:
0 316881

PCを再起動させたりしたせいか,エラーの再現は上手く行きませんでした。
一応メッシュは出来そうなので,流れ計算までやってみる予定です。

IMANO Masashi

unread,
Mar 11, 2010, 9:55:56 AM3/11/10
to open...@googlegroups.com

今野です.

> ただ,色々と触っていてふとある事に気がつきました。今回のメッシュ作成状況をチェックしている時にエラーが出ました。特に気
> になったのがOverall mesh bounding boxの値です。XとYの値が微妙に小数まじりになっています。この時,Number
> of edges:
> 1006090 Number of edges to retest: 1006090 Number of intersected
> edges : 37824が妙に大きな値になっています。
>
> メッシュが切れなかった時のsnappyHexMeshのログからの抜粋
> Build : 1.6.x-f7c68a480aa7
> nProcs : 1
>
> Overall mesh bounding box : (-44.99845 -44.99846 -180) (44.99845
> 44.99843 160)

Overall mesh bounding boxが

> ・直管状のチューブは,半径45で長さが340で,基礎メッシュの丁度真ん中
> にいれてあります。

とチューブのbounding boxと符合しますし,

> Initial mesh : cells:316881 faces:1006090 points:375668

とInitial mesh数もblockMeshで切った初期メッシュの3000と異なります.

このsnappyHexMeshのログは,blockMeshによる初期メッシュ生成後に走らせた
もののではなく,チューブ内部のメッシュ生成後から走らせたものに見えます
ので,おそらく昔生成しようとして失敗したメッシュが残っていたんじゃない
でしょうか?

それなら,

rm -r [0-9]*/polyMesh

と等として,古いメッシュデータを消した後に,

blockMesh
snappyHexMesh

してみたらどうなりますか?


あと,blockMeshで切る初期メッシュが,立方体でないのが気になります.
特に理由がなければ,

blocks
(
hex (7 5 4 6 2 0 1 3) (10 10 38) simpleGrading (1 1 1)
);


等と,立方体にしたほうが良いと思います.

Sakuma

unread,
Mar 14, 2010, 5:12:31 AM3/14/10
to OpenFOAM
今野さん,アドバイスをありがとうごさいます。

古いメッシュデータを完全に消して
blockMesh
snappyHexMesh
と進むと,問題無くメッシュデータが出来ました。

blockMeshDictでの分割は,ご指摘頂いた通り


hex (7 5 4 6 2 0 1 3) (10 10 38) simpleGrading (1 1 1)

にしました。

メッシュの規模ですが,paraFoamのInformationで見ると
 Cellsが726700
 Pointsが501936
となっています。

入力部の流速に1m/sを与え,simpleFoam,k-epsilonモデル
の設定で2cpuで並列計算しました。

約500stepで収束が見られ,5300秒程度の計算時間でした。
利用しているメモリは600MB程度でした。

やはり流体の計算にはメッシュを作成するにしろ,計算するにしろ
メモリやマシンパワーがいりますね。

ありがとうごさいました。

IMANO Masashi

unread,
Mar 14, 2010, 7:43:11 AM3/14/10
to open...@googlegroups.com

今野です。

> 古いメッシュデータを完全に消して
> blockMesh
> snappyHexMesh
> と進むと,問題無くメッシュデータが出来ました。

良かったですね。

なお、snappyHexMeshの後は、必ずcheckMeshでメッシュの質を
チェックしたほうが良いです。

さらに、renumberMeshをすると、多少収束が速くなると思います。

Reply all
Reply to author
Forward
0 new messages