回転体を解析するためのメッシュソフトの組み合わせ

1,247 views
Skip to first unread message

Nagai Minoru

unread,
Jul 23, 2010, 10:10:26 PM7/23/10
to OpenFOAM
永井@和歌山県在住です。

 槽内でローターが回転することにより、発生する水の流れを解析するための試みを解析の
環境を作りながら行なっています。

 今の所、以下の3通りの方法で勉強を進めていますが、CADファイルから取り込んで解析す
る場合、メッシュ作成はSalome+GmshとsnappyHexMesh、どちらが素人向きでしょうか?



1)Salome+Gmsh
 長崎総合科学大学のMech News Blogにこの組み合わせで回転体を解析したという情報が
 ありました。メッシュ作成の要点のメモがあります。
http://www.mech.nias.ac.jp/blog_main/log/eid92.html

 CADファイルは、STEPでSalomeに読み込ませます。

 現在、Salomeで2次元解析用のメッシュを作るため、奥行きが1メッシュになるようにメッシュ
 を切るやり方が分からず行き詰っています。


2)sanppyHexMesh
 標準の添付ソフトなのでこれを使うのが一番正しいと思うのですが、これを使って回転体を
 解析する手順の情報が得られませんでした。
 E.Moguraさんのウェブページを見ると、snappyHexMeshで解析しているようなのですが、
 その方法が分かりません。
http://mogura7.zenno.info/~et/xoops/modules/wordpress/index.php?p=238
http://mogura7.zenno.info/~et/xoops/modules/wordpress/index.php?p=244

 CADファイルは3DS(3D Studio)でBlenderに読み込ませ、STLでsnappyHexMeshに取り
 込みます。
  会社はAutoCADで、自前でturboCAD10Proを持っています。DWG→3DSの変換は
 turboCADで行ないます。
  turboCADには、ASCII形式のSTLを出力する機能もありますので、将来的にはturboCAD
 でモデルの作成からSTLの出力まで行ないたいと考えています。現状、2次元図を押し出
 しで3次元化したとき、中身のない筒になぜかなってしまうので、AutoCADでモデルを作成
 しています。
  また、DEXCSのチュートリの「DEXCS」を作成したモデルに置き換えて解析した時、
 turboCADから出力したSTLファイルでうまく行きませんでした。原因を確認していないので、
 今後、確認し、使えるかどうか確認したいと思っています。

 DEXCS2009はMRFSimpleFoamのソルバーをwmakeできなかったので、そこで使うのを
 やめています。


3)テキストファイルを直接作成
 簡単な形状なら、力技でできるだろうと、mixerVesel2Dのファイルの書き換えを試みていま
 す。
  まずは、rotorのサイズ変更とstatorの形状変更を試みてみました。
  blockMeshDictは書き換えることができたのですが、blockMeshDict.m4の記述方法が
 分からず、行き詰っています。
  blockMeshDict.m4の記載方法が分かる資料等ありましたら、ご紹介頂けると幸いです。

E.Mogura

unread,
Jul 24, 2010, 3:26:10 AM7/24/10
to OpenFOAM
E.Mogura です。

メッシュ作成方法の話と、回転体を含む系の解析の話が混乱しているようですが、
snappyHexMeshと、MRFSimpleFOAMに関してコメントさせてもらいます。

>  E.Moguraさんのウェブページを見ると、snappyHexMeshで解析しているようなのですが、
>  その方法が分かりません。
> http://mogura7.zenno.info/~et/xoops/modules/wordpress/index.php?p=238

確かに更新が滞っており、ご迷惑をおかけしております。

ただ上記ページにてアピールしたかったのは、

円筒形状内の複雑形状をsnappyHexMeshにてメッシュ作成するには、
後工程のMRFSimpleFOAM用に回転領域を設定することを含めて、
基礎メッシュそのものを円筒形状ベースで作成しておいた方が、何かと嬉しいことがある

といったあたりが主眼なので、

もっともベーシックには、DEXCSをそのまま使って、
(基礎メッシュを直方体領域にして、)
回転体と、円筒形状の解析領域を別々に用意して、普通に
snappyHexMeshを使ってメッシュ作成することも可能です。

その際、stlデータ仕様が問題となりますが、DEXCSで取り扱う際、このあたりは、

第1回オープンCAE講習会 資料
http://www.opencae.jp/data/201005OpenCAEWorkshop/A-1.pdf

のp.18~22 にまとめてあるので参考にしてください。

普通のCADから吐き出したSTLをいったんblenderでインポートして、
blenderの組み込みスクリプト Named ascii STL でエクスポート
する方法がお勧めになります。

>  DEXCS2009はMRFSimpleFoamのソルバーをwmakeできなかったので、そこで使うのを
>  やめています。

DEXCS2009で、wmake できない理由はないので、
出来なかったときの症状を具体的に記していただければ
お助けできるかもしれません。


以上

Sakuma

unread,
Jul 25, 2010, 10:04:24 PM7/25/10
to OpenFOAM
永井さん,はじめまして。OpenFOAM初心者のsakumaです。

私も多分同じような問題をOpenFOAMでやろうとこのユーザー会で色々と
教えて頂いています。まだまだOpenFOAM初心者の域を出ていないため,
間違っているかもしれませんが,下記の内容がお役に立たないでしょうか。

“MRFSimpleFoamを使った計算について”
http://groups.google.com/group/openfoam/browse_thread/thread/d4a84b48e13106af/208eaf0c36ab6ef8

これは,小生がテスト的に円管の中でファンが回転するモデルをOpenFOAM(MRFSimpleFoam)
で計算したく,E.Moguraさんや今野先生に教えて頂いたものです。

モデルは全てE.Moguraさんが書かれているようにNamed STLで用意します。
blockMeshを行った後に,snappyHexMeshでメッシュを作成するのですが,
E.Moguraさんの4月8日の投稿にあるように,回転領域も同時に作成しています。

今はこの教えて頂いた方法でメッシュを作成しています。具体的にはsnappyHexMesh
のrefinementSurfacesで,回転領域部分の設定(小生の例ではROTOR_AREAの設定)
がポイントになるかと思います。

refinementSurfaces
{
ROTOR ←ファン
{
level(3,4);
}

FRONT ←インレット部分
{
level(2,3);
}

BACK ←アウトレット部分
{
level(2,3);
}

STATOR ←円管部分
{
level(2,3);
}

ROTOR_AREA ←ファンを含む回転を与える領域
{
level(3,4);
   faceZone ROTOR_AREA; ←ここで設定した名前をMRFZonesで使います。
   cellZone ROTOR_AREA;
zoneInside ture;
}


これで上手い具合にメッシュが作成できています。その後は,MRFSimpleFoamで
計算をしています。

 また,メッシュ作成ですが,小生は3DモデラーからNamed STLを書き出し,blender,
snappyHexMeshで全てやっています。CADモデルからSTLを書き出す時に一部修正
はありますが,Named STLで書き出したモデルは今の所問題はありません。

以上,ご参考になればと思いますが,もし間違っていたら教えてください。


On 7月24日, 午後4:26, "E.Mogura" <seikun...@gmail.com> wrote:
> E.Mogura です。
>
> メッシュ作成方法の話と、回転体を含む系の解析の話が混乱しているようですが、
> snappyHexMeshと、MRFSimpleFOAMに関してコメントさせてもらいます。
>
> >  E.Moguraさんのウェブページを見ると、snappyHexMeshで解析しているようなのですが、
> >  その方法が分かりません。
> > http://mogura7.zenno.info/~et/xoops/modules/wordpress/index.php?p=238
>
> 確かに更新が滞っており、ご迷惑をおかけしております。
>
> ただ上記ページにてアピールしたかったのは、
>
> 円筒形状内の複雑形状をsnappyHexMeshにてメッシュ作成するには、
> 後工程のMRFSimpleFOAM用に回転領域を設定することを含めて、
> 基礎メッシュそのものを円筒形状ベースで作成しておいた方が、何かと嬉しいことがある
>
> といったあたりが主眼なので、
>
> もっともベーシックには、DEXCSをそのまま使って、
> (基礎メッシュを直方体領域にして、)
> 回転体と、円筒形状の解析領域を別々に用意して、普通に
> snappyHexMeshを使ってメッシュ作成することも可能です。
>
> その際、stlデータ仕様が問題となりますが、DEXCSで取り扱う際、このあたりは、
>
> 第1回オープンCAE講習会 資料http://www.opencae.jp/data/201005OpenCAEWorkshop/A-1.pdf
> >   blockMeshDict.m4の記載方法が分かる資料等ありましたら、ご紹介頂けると幸いです。- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

Nagai Minoru

unread,
Jul 26, 2010, 12:27:10 AM7/26/10
to OpenFOAM
永井@和歌山県在住です。

E.Moguraさん、ご回答有り難うございます。

> >  DEXCS2009はMRFSimpleFoamのソルバーをwmakeできなかったので、そこで使うのを
> >  やめています。
>
> DEXCS2009で、wmake できない理由はないので、
> 出来なかったときの症状を具体的に記していただければ
> お助けできるかもしれません。

VMwareのDEXCS2009でwmakeをすると、以下のように、コマンドが見つからない、と言われます。

dexcs@ubuntu-vm:~/OpenFOAM/dexcs-1.5.x/tutorials/MRFSimpleFoam/
MRFSimpleFoam$ wmake
bash: wmake: コマンドが見つかりません



> もっともベーシックには、DEXCSをそのまま使って、
> (基礎メッシュを直方体領域にして、)
> 回転体と、円筒形状の解析領域を別々に用意して、普通に
> snappyHexMeshを使ってメッシュ作成することも可能です。

CellSetを適切に使うことができれば、DEXCSで回転体の解析も可能だ、という認識で宜しいでしょうか。
それとも、メッシュの作成まではできる、ということでしょか。



>> 3)テキストファイルを直接作成
>>  簡単な形状なら、力技でできるだろうと、mixerVesel2Dのファイルの書き換えを試みていま
>>  す。

blockMeshDictのみ書き換えた状態で./Allrunを走らせて見たところ、形状の変化があまりなかった
ことが幸いして一応計算できました。
たぶん、そこかしこで不都合が残っていると思いますが。

ところで、rotorの回転スピードの設定はファイルdynamicMeshDictの中のrpmで行なっていると思い
ますが、単位を御存知ないでしょうか?
例題では10なのですが、10rpmだとすると、50s単位の計算結果で、rotorの羽の位置が同じになるは
ずないので、10rps(秒間10回転)ということこでしょうか?

Nagai Minoru

unread,
Jul 26, 2010, 1:38:20 AM7/26/10
to OpenFOAM
永井@和歌山県在住です。

sakumaさん、ご回答有り難うございます。
さっき投稿した記事はsakumaさんの記事が投稿される前に読み込んだ掲示板を更新しないで投稿してしまいました。

> “MRFSimpleFoamを使った計算について”http://groups.google.com/group/openfoam/browse_thread/thread/d4a84b48...

sakumaさんの一連の記事は見せて頂いていたのですが、勉強不足でまだきちんと理解できていません。
しかしながら、sakumaさんに頂いた回答でDEXCSとcellSetで回転体の計算ができる確信が持てました。

正直、私自身不勉強すぎて、どの方向で勉強を進めていくのが良いのか悩んでいました。
今後は、DEXCSを使って学習を進めて行きたいと思います。



>  また,メッシュ作成ですが,小生は3DモデラーからNamed STLを書き出し,blender,
> snappyHexMeshで全てやっています。CADモデルからSTLを書き出す時に一部修正
> はありますが,Named STLで書き出したモデルは今の所問題はありません。

ところで、STLは小さい三角形の各頂点の座標とその三角形の法線ベクトルの集合体で図形を表すので、Blenderの内部処理が同じように扱っていな
いと、BlenderからSTLを出力した時、図形の微細な箇所が崩れると思うのですが、そんな心配は無用でしょうか。

最終的に目指しているモデルは、5mmの穴の空いたパンチングメタルででき、ゆっくりとまわる筒状のローターの中で、特殊な羽を持ったローターを高速回
転させて、パンチングメタル外側で洗浄目的の水流を生み出す計算をしたいと考えています。
パンチングメタルの筒の直径は400mmでパンチングの穴の直径が5mm、特に見たいのがこのパンチングの穴を通した水流の流れなので、メッシュの数が
かなりの量になり、二、三十万円クラスのパソコンでは三次元計算は無理があるのでは、と思っています。

とりあえず、二次元計算を目指そうと思いますが、DEXCS用の二次元解析モデルのz方向の厚みは通常、どれくらいが適当でしょうか?
MRFSimpleFOAMのmixerVesel2Dでは、直径200mmのstatorに対して厚みが10mmになっていましたが、モデルの大きさ
の1/20が適当なのか、それとも常に10mmくらいが適当なのか、分かりません。

経験上これくらいでいいだろう、というのがありましたら、ご教授頂けると幸いです。

E.Mogura

unread,
Jul 26, 2010, 8:28:49 AM7/26/10
to open...@googlegroups.com
E.Mogura です。

>VMwareのDEXCS2009でwmakeをすると、以下のように、コマンドが見つからない、と言われます。
>
>dexcs@ubuntu-vm:~/OpenFOAM/dexcs-1.5.x/tutorials/MRFSimpleFoam/
>MRFSimpleFoam$ wmake
>bash: wmake: コマンドが見つかりません
端末を、ubuntuメニューから起動してませんか?
その場合は、OpenFOAMの環境変数を自分で設定する必要あります。
 
それが面倒な場合には、DEXCSのツールメニューにある端末を使用してください。
 
>CellSetを適切に使うことができれば、DEXCSで回転体の解析も可能だ、という認識で宜しいでしょうか。
>それとも、メッシュの作成まではできる、ということでしょか。
CellSetはメッシュが作成できているという前提で使用するコマンドです。
MRFSimpleFOAMで解析する場合に、回転領域に名前をつけてやる必要があって、
それをCellSetコマンドを使って実現できるということです。
ただ、snappyHexMeshを使う場合には、それを使わないで済む方法も可能です。

>ところで、rotorの回転スピードの設定はファイルdynamicMeshDictの中のrpmで行なっていると思い
>ますが、単位を御存知ないでしょうか?
単位は rad/s です
 
 
2010年7月26日13:27 Nagai Minoru <m-n...@komatsubara-iw.jp>:

--
このメールは Google グループのグループ「OpenFOAM」の登録者に送られています。
このグループに投稿するには、open...@googlegroups.com にメールを送信してください。
このグループから退会するには、openfoam+u...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/openfoam?hl=ja からこのグループにアクセスしてください。


E.Mogura

unread,
Jul 26, 2010, 8:41:31 AM7/26/10
to open...@googlegroups.com
E.Mogura です
 
>ところで、STLは小さい三角形の各頂点の座標とその三角形の法線ベクトルの集合体で図形を表すの
>で、Blenderの内部処理が同じように扱っていな
>いと、BlenderからSTLを出力した時、図形の微細な箇所が崩れると思うのですが、そんな心配は無用でしょうか。
 
STL というか、ポリゴン系のCAD形式間での変換では心配無用です。
なので、blenderをフィルター代わりに使うことを推奨しています。
blenderで取り込んだ際に、面の不整合の有無は検出できるので。

>とりあえず、二次元計算を目指そうと思いますが、DEXCS用の二次元解析モデルのz方向の厚みは通>常、どれくらいが適当でしょうか?
厚さ方向に1メッシュしか使わないという2Dでやるなら、
よほど桁違いのサイズにでもしない限り、厚みのサイズはいくつであっても関係ありません。
 
ただ、snappyHexMeshを使うという前提だと、2Dメッシュ作成はお勧めできません。
形状にフィットした細分化をしようとすると、厚さ方向のメッシュも細分化されてしまうため。
 
2010年7月26日14:38 Nagai Minoru <m-n...@komatsubara-iw.jp>:

Nagai Minoru

unread,
Jul 27, 2010, 4:29:20 AM7/27/10
to OpenFOAM
永井@和歌山県在住です。

E.Moguraさん、ご回答有り難うございます。

> >VMwareのDEXCS2009でwmakeをすると、以下のように、コマンドが見つからない、と言われます。
>
> >dexcs@ubuntu-vm:~/OpenFOAM/dexcs-1.5.x/tutorials/MRFSimpleFoam/
> >MRFSimpleFoam$ wmake
> >bash: wmake: コマンドが見つかりません
>
> 端末を、ubuntuメニューから起動してませんか?
> その場合は、OpenFOAMの環境変数を自分で設定する必要あります。
>
> それが面倒な場合には、DEXCSのツールメニューにある端末を使用してください。

御指摘の通り、ランチャーからの端末でいくとうまく行きました。
有り難うございます。

> >ところで、rotorの回転スピードの設定はファイルdynamicMeshDictの中のrpmで行なっていると思い
> >ますが、単位を御存知ないでしょうか?
>
> 単位は rad/s です

単位がrad/sだと、50s単位ごとの計算結果で羽が動いていないようにみえるのは、おかしいと思います。
10ras/sだとすると、50sで、500radとなります。これがπ/2で割り切れなければなりませんが、
500 ÷ (π/2)=318.3098862・・・
となり、余りが出てしまいますので、50s毎に約28度づつずれていかなければならないと思いますが、いかがでしょうか?

Nagai Minoru

unread,
Jul 27, 2010, 4:46:59 AM7/27/10
to OpenFOAM
永井@和歌山県在住です。

E.Moguraさん、ご回答有り難うございます。

> >ところで、STLは小さい三角形の各頂点の座標とその三角形の法線ベクトルの集合体で図形を表すの
> >で、Blenderの内部処理が同じように扱っていな
> >いと、BlenderからSTLを出力した時、図形の微細な箇所が崩れると思うのですが、そんな心配は無用でしょうか。
>
> STL というか、ポリゴン系のCAD形式間での変換では心配無用です。
> なので、blenderをフィルター代わりに使うことを推奨しています。
> blenderで取り込んだ際に、面の不整合の有無は検出できるので。

昔、AutoCAD、OneSpaceDesigner、TurboCAD、図脳RAPID、DesignCADのそれぞれのソフトで球を作成し、それ
ぞれ出力できるファイル形式で出力して、それぞれのCADソフトに読み込ませて、表面積と体積の変化を見てみたことがありますが、結構変わるので、それ
以来、3D CADのファイルフォーマットの変換を気にしてしまうようになりましたが、安心しました。

> >とりあえず、二次元計算を目指そうと思いますが、DEXCS用の二次元解析モデルのz方向の厚みは通>常、どれくらいが適当でしょうか?
>
> 厚さ方向に1メッシュしか使わないという2Dでやるなら、
> よほど桁違いのサイズにでもしない限り、厚みのサイズはいくつであっても関係ありません。
>
> ただ、snappyHexMeshを使うという前提だと、2Dメッシュ作成はお勧めできません。
> 形状にフィットした細分化をしようとすると、厚さ方向のメッシュも細分化されてしまうため。

Salomeでも厚さ方向の細分化に困っています。

当面ソフトになれるまではパンチングメタルのrotorなしのモデルで三次元計算しようと思いますが、もし、二次元メッシュを切るのに向いているソフト
を御存知でしたら、教えて頂けると幸いです。

E.Mogura

unread,
Jul 27, 2010, 8:46:10 AM7/27/10
to open...@googlegroups.com
E.Mogura です。
 
>単位がrad/sだと、50s単位ごとの計算結果で羽が動いていないようにみえるのは、おかしいと思います。
>10ras/sだとすると、50sで、500radとなります。これがπ/2で割り切れなければなりませんが、
 >500 ÷ (π/2)=318.3098862・・・
 >となり、余りが出てしまいますので、50s毎に約28度づつずれていかなければならないと思いますが、いかがでしょうか?
 
MRFSimpleFoam の計算は、いわば簡易的な回転場解析とでも言うべきもので、
実際に物体を回転させながらの流れ場を計算しているものではありません。
 
規定した回転領域内(ReferenceFrame)で、流体に回転速度に相応した
コリオリ力を付与するのと、
壁の速度条件を部位ごとに回転速度に相応したすべり速度にて計算させるもので、
物体が回転するものではなく、ご指摘の点はあたりません。
 


 
2010年7月27日17:29 Nagai Minoru <m-n...@komatsubara-iw.jp>:

--

E.Mogura

unread,
Jul 27, 2010, 8:53:12 AM7/27/10
to open...@googlegroups.com
E.Mogura です。
 
もう1点、追加しておきます。

MRFSimpleFoam の計算は、定常計算です。
形式的に時間毎の出力がありますが、物理的な意味はありません。
(そういう意味でも簡易計算です)
 
 
2010年7月27日21:46 E.Mogura <seik...@gmail.com>:

Nagai Minoru

unread,
Jul 27, 2010, 11:00:45 PM7/27/10
to OpenFOAM
永井@和歌山県在住です。

E.Moguraさん、たびたびのご回答有り難うございます。

> MRFSimpleFoam の計算は、いわば簡易的な回転場解析とでも言うべきもので、
> 実際に物体を回転させながらの流れ場を計算しているものではありません。
>
> 規定した回転領域内(ReferenceFrame)で、流体に回転速度に相応した
> コリオリ力を付与するのと、
> 壁の速度条件を部位ごとに回転速度に相応したすべり速度にて計算させるもので、
> 物体が回転するものではなく、ご指摘の点はあたりません。

丁寧なご回答有り難うございます。
疑問が解消しました。

各例題のこの辺の情報は何を見れば分かるでしょうか。
また、もし実際に回転させながら解析する例題を御存知でしたら、教えて頂けると幸いです。

> もう1点、追加しておきます。

> MRFSimpleFoam の計算は、定常計算です。
> 形式的に時間毎の出力がありますが、物理的な意味はありません。
> (そういう意味でも簡易計算です)

そうすると、50秒毎の計算結果で変化していき、途中から安定するのは、流れが定常状態に至るまでの物理的な過程を見ているのではなく、数値計算が収束
するまでの過程を見ている、ということでしょうか。

E.Mogura

unread,
Jul 28, 2010, 8:19:31 AM7/28/10
to open...@googlegroups.com
E.Mogura です
 
>もし実際に回転させながら解析する例題を御存知でしたら、教えて頂けると幸いです
 
OpenFOAM-1.5-dev に、
 
ソルバー:icoDyFoam
チュートリアルケース:mixed2D、mixerGgi

があります。
 
>そうすると、50秒毎の計算結果で変化していき、途中から安定するのは、流れが定常状態>に至るまでの物理的な過程を見ているのではなく、数値計算が収束
>するまでの過程を見ている、ということでしょうか。
御意
2010年7月28日12:00 Nagai Minoru <m-n...@komatsubara-iw.jp>:

--

Nagai Minoru

unread,
Jul 29, 2010, 5:50:02 AM7/29/10
to OpenFOAM
永井@和歌山県在住です。

E.Moguraさん、ご回答有り難うございます。

> >もし実際に回転させながら解析する例題を御存知でしたら、教えて頂けると幸いです
>
> OpenFOAM-1.5-dev に、
>
> ソルバー:icoDyFoam
> チュートリアルケース:mixed2D、mixerGgi
>
> があります。

頂いた情報を元に、以前見つけた資料をきちんと読んでみると、icoDyMFoamは非圧縮の層流、
turbDyMFoamは非圧縮の乱流のソルバだという記述がありました。
http://www.tfd.chalmers.se/~hani/kurser/OS_CFD_2007/OlivierPetit/rotatingTutorial.pdf

私の目標としている系だと、最終的にrotorは700rpmで回転し、パンチングの穴からは秒間420
回、吸ったり、吐き出したりする流れを計算することになるので、乱流の方だろうと、
turbDyMFoamを探してみましたが、計算例とかの報告書類は見つかったのですが、例題は見
つかりませんでした。

さらに、1.5~1.7.0までのユーザーガイドの標準ソルバを見返してみると、icoDyMFoamと
turbDyMFoamは1.5にはあるのですが、1.6からなくなり、代わりにpimpleDyMFoamがあり、
tutorialsには、1.5-devのicoDyMFoamのtutorialsの1つでもあったmovingConeがありました

ひょっとして、pimpleDyMFoamはicoDyMFoamとturbDyMFoamの両方をカバーする、ソルバな
のでしょうか。
Reply all
Reply to author
Forward
0 new messages