並列化メッシュについて

1,401 views
Skip to first unread message

Sakuma

unread,
Jan 25, 2010, 6:33:20 AM1/25/10
to OpenFOAM
色々とこの会にお世話となっていますOpenFOAMの超初心者です。OpenFOAMは,mpirunコマンドを利用して並列化計算が出来るようです
が,snappyHexMeshなどのメッシャー機能は,並列化処理することが出来るのでしょうか。よろしくご教授をお願いいたします。

E.Mogura

unread,
Jan 25, 2010, 3:11:59 PM1/25/10
to OpenFOAM
もちろん可能です。
snappyHexMeshは結構メモリを必要としますので、
実用的な計算(実際の製品など複雑な形状を対象とした計算)
をやろうとすると、並列計算は必須条件となります。

方法は、通常の計算の並列化方法とほとんど同じです。
(並列数を指定すれば自動分割してくれます)

Masashi Imano

unread,
Jan 25, 2010, 3:21:12 PM1/25/10
to open...@googlegroups.com
今野です。

"snappyHexMesh 並列" でググれば、以下のような参考になるサイトが出てくると思います。

http://idoreno.blogspot.com/2009/11/snappyhexmesh.html

CHARADE

unread,
Jan 25, 2010, 8:59:06 PM1/25/10
to open...@googlegroups.com
CHARADEです。

欧州の自動車会社が、空力の問題で、snappyHexを使い192並列で1時間以下で3000万メッシュを作成した……という話を聞いたことがあります。(解析自体は30時間くらいだったかな)

ふだんsnappyを使っているとさほど不思議な気はしないのですが、著名な汎用のメッシャー、たとえばGridGenなどはそもそも並列処理の機能がないので、考えてみればかなりすごいことなんじゃないかと思います。

Ryoichi Shibata

unread,
Jan 25, 2010, 9:38:18 PM1/25/10
to open...@googlegroups.com
柴田@岐阜高専です。すみません。宣伝です。

> snappyHexMeshは結構メモリを必要としますので、
> 実用的な計算(実際の製品など複雑な形状を対象とした計算)
> をやろうとすると、並列計算は必須条件となります。
> 方法は、通常の計算の並列化方法とほとんど同じです。
> (並列数を指定すれば自動分割してくれます)

現在ベータテストに入ったDEXCS+FLUSH-OpenFOAMでは、メッシャーもソルバーも、ランチャーから(若干手作業がありますが)並列処理が可能です。並列処理では、複数コアで計算を分割して、メモリを統合できるので、大きな解析も可能になりますね。

--
■/\■ 岐阜工業高等専門学校
/■■\ 建築学科 柴田良一
\■■/ ry...@gifu-nct.ac.jp
■\/■ http://dalab.gifu-nct.ac.jp

Sakuma

unread,
Jan 26, 2010, 9:17:40 AM1/26/10
to OpenFOAM
 お返事を寄せて頂いた皆様ありがとうごさいました。ver1.6.xのチュートリアルの
simpleFoam/motor bikeの事例を使いsnappyHexMeshの並列メッシュ,mpirun
による並列計算を何とか実施できました。ただ,実際のモデルでは計算をした事
がないため,今後トライしたいと思っています。

 さて,この並列メッシュ,並列計算ですが,どの程度のメッシュ数というか節点数
というか上手く表現できませんが,1CUP当たりに担当させる適切な量はどのように
考えれば良いのでしょうか。

 また,DEXCS+FLUSH-OpenFOAMはいつごろリリースされるのでしょうか。
非常に興味がございますし,早く使ってみたいと思っています。ただ,FLUSH
には全く知識がないため素人でも使えるかどうか心配です。以前岐阜高専
で開催されましたような講習会は行われるのでしょうか。もし,あるようであれ
ば是非参加させて頂きたいと思っています。

On 1月26日, 午前11:38, Ryoichi Shibata <ryo...@gmail.com> wrote:
> 柴田@岐阜高専です。すみません。宣伝です。
>
> > snappyHexMeshは結構メモリを必要としますので、
> > 実用的な計算(実際の製品など複雑な形状を対象とした計算)
> > をやろうとすると、並列計算は必須条件となります。
> > 方法は、通常の計算の並列化方法とほとんど同じです。
> > (並列数を指定すれば自動分割してくれます)
>

> 現在ベータテストに入ったDEXCS+FLUSH-OpenFOAMでは、メッシャーもソルバーも、ランチャーから(若干手作業がありますが)並列処理が可能で-す。並列処理では、複数コアで計算を分割して、メモリを統合できるので、大きな解析も可能になりますね。
>
> --
> ■/\■ 岐阜工業高等専門学校
> /■■\ 建築学科 柴田良一
> \■■/ r...@gifu-nct.ac.jp
> ■\/■http://dalab.gifu-nct.ac.jp

Ryoichi Shibata

unread,
Jan 26, 2010, 9:48:55 AM1/26/10
to open...@googlegroups.com
柴田@岐阜高専です。

> また,DEXCS+FLUSH-OpenFOAMはいつごろリリースされるのでしょうか。
> 非常に興味がございますし,早く使ってみたいと思っています。ただ,FLUSH
> には全く知識がないため素人でも使えるかどうか心配です。以前岐阜高専
> で開催されましたような講習会は行われるのでしょうか。もし,あるようであれ
> ば是非参加させて頂きたいと思っています。

本日から、DEXCS+FLUSH-OpenFOAMのベータリリースを開始しました。まだ不具合の可能性があることを、ご承知頂ければ、公開を制限するつもりはありませんので、今すぐでも使うことが出来ます。

講習会については、岐阜高専を会場として、2月6日(土)、午後1時から3時間で行うことが可能です。計算ノードなどをこちらで用意する都合で、先着4名(組)程度とします。柴田までメールでお申し込みください。

Sakuma

unread,
Jan 27, 2010, 8:19:51 AM1/27/10
to OpenFOAM
snappyHexMeshを並列で実施し,次にreconstructParMeshを実施すると
次のようなエラーが出ます。

Merge tolerance : 1e-07
Write tolerance : 1e-06
--> FOAM FATAL ERROR:
Your current settings specify ASCII writing with 6 digits precision.
Your merging tolerance (1e-07) is finer than this.
Please change your writeFormat to binary or increase the
writePrecision
or adjust the merge tolerance (-mergeTol).
From function reconstructParMesh
in file reconstructParMesh.C at line 327.
FOAM exiting

色々とファイルを触り、/system/controlDictのwritePrecisionを
7にするとエラーは無くなりますが,Merge tolerance はどこで設定
されているのでしょうか。

どなたか良くご存じの方がおられましたらお教え頂きたく思います。
よろしくお願いいたします。

On 1月26日, 午後11:48, Ryoichi Shibata <ryo...@gmail.com> wrote:
> 柴田@岐阜高専です。
>
> > また,DEXCS+FLUSH-OpenFOAMはいつごろリリースされるのでしょうか。
> > 非常に興味がございますし,早く使ってみたいと思っています。ただ,FLUSH
> > には全く知識がないため素人でも使えるかどうか心配です。以前岐阜高専
> > で開催されましたような講習会は行われるのでしょうか。もし,あるようであれ
> > ば是非参加させて頂きたいと思っています。
>

> 本日から、DEXCS+FLUSH-OpenFOAMのベータリリースを開始しました。まだ不具合の可能性があることを、ご承知頂ければ、公開を制限するつもり-はありませんので、今すぐでも使うことが出来ます。
>
> 講習会については、岐阜高専を会場として、2月6日(土)、午後1時から3時間で行うことが可能です。計算ノードなどをこちらで用意する都合で、先着4名(組)-程度とします。柴田までメールでお申し込みください。
>
> --
> ■/\■ 岐阜工業高等専門学校
> /■■\ 建築学科 柴田良一
> \■■/ r...@gifu-nct.ac.jp
> ■\/■http://dalab.gifu-nct.ac.jp

IMANO Masashi

unread,
Jan 27, 2010, 9:08:33 AM1/27/10
to open...@googlegroups.com

今野です.

system/snappyHexMeshDict

// Merge tolerance. Is fraction of overall bounding box of initial mesh.
// Note: the write tolerance needs to be higher than this.
mergeTolerance 1E-6;

です.

どこに書いてあるかわからない場合には,計算ディレクトリ以下の全ファイル
から,merge を含んでいるファイルを検索してください.

Linuxのシェル(コマンドライン)では,例えば以下のようにして検索できます.

find . | xargs grep merge

At Wed, 27 Jan 2010 05:19:51 -0800 (PST),

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

Sakuma

unread,
Jan 31, 2010, 9:10:28 AM1/31/10
to OpenFOAM
今野さんアドバイスありがとうごさいました。

Merge tolerance とWrite toleranceですが,いまいち設定で良くわからな事があります。
1.6.xのチュートリアルにあるsimpleFoam/motorBikeのファイルを使って並列化メッシュ
を勉強しています。

/system/controlDictの writePrecisionを6に設定し,
/system/snappyHexMeshDictのmergeToleranceを1E-6
に設定して,runApplication mpirun -np 2 snappyHexMesh -overwrite -parallel
で並列化でメッシュをして,runApplication reconstructParMesh -time 0でメッシュ
の再構築をしようとすると前に書かせて頂いた同じエラーが出ます。

Merge tolerance : 1e-07
Write tolerance : 1e-06

前の投稿と同じように
/system/controlDictの writePrecisionを7に設定して,runApplication
reconstructParMesh -time 0
を実施すると

Merge tolerance : 1e-07
Write tolerance : 1e-07

となって上手く行きます。
なぜ/system/controlDictの writePrecisionを6に設定し,
/system/snappyHexMeshDictのmergeToleranceを1E-6
してもreconstructParMeshでエラーとなってしまうのでしょうか。

また,Merge toleranceとWrite toleranceの設定の関係は
どのように考えたらよいのでしょうか。

どなたか良くご存じの方がおられましたらお教え頂きたく思います。
よろしくお願いいたします。

> > > 本日から、DEXCS+FLUSH-OpenFOAMのベータリリースを開始しました。まだ不具合の可能性があることを、ご承知頂ければ、公開を制限するつもり--はありませんので、今すぐでも使うことが出来ます。
>
> > > 講習会については、岐阜高専を会場として、2月6日(土)、午後1時から3時間で行うことが可能です。計算ノードなどをこちらで用意する都合で、先着4名(組)--程度とします。柴田までメールでお申し込みください。


>
> > > --
> > > ■/\■ 岐阜工業高等専門学校
> > > /■■\ 建築学科 柴田良一
> > > \■■/ r...@gifu-nct.ac.jp
> > > ■\/■http://dalab.gifu-nct.ac.jp
>
> > --
> > このメールは Google グループのグループ「OpenFOAM」の登録者に送られています。
> > このグループに投稿するには、open...@googlegroups.com にメールを送信してください。
> > このグループから退会するには、openfoam+u...@googlegroups.com にメールを送信してください。

> > 詳細については、http://groups.google.com/group/openfoam?hl=jaからこのグループにアクセスしてください。- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

Reply all
Reply to author
Forward
0 new messages