rhoSimpleFoamにおける境界条件について

729 views
Skip to first unread message

Giro

unread,
Apr 29, 2008, 1:48:20 AM4/29/08
to OpenFOAM
Giroです。

rhoSimpleFoam の境界条件について悩んでおります。
幾つかの設定で、物によっては計算できたものもあるのですが、
(→ http://giropenfoam.web.fc2.com/openfoam/solvers/solvers.html のU字型マニ
ホールド
 本グループの ファイルコーナー に rhoSimple_subsonic.zip として
 適用した設定ファイルを置いておきます。)
複雑な形状になると、とたんに四苦八苦となってしまっています。

例えば、車のマニホールド等です。
CFDの実例で良く紹介されているあれを、OpenFOAMで再現 と思ったのですが。
(上述のU字型マニホールドは、その前段階のテスト解析のつもりでした。)

例えば、以下の様な境界条件を指定しても
うまく流出境界から流出してくれなかったりします。
(ちなみに、ファイル置き場においてあるファイルは、この設定で計算できています。)

速度)
Inlet
{
type massFlowRateInletVelocity;
massFlowRate 0.1;
value uniform (0 0 0);
}
Outlet
{
type inletOutlet;
inletValue uniform (0 0 0);
value uniform (0 0 0);
}

圧力
Inlet
{
type zeroGradient;
}
Outlet
{
type fixedValue;
value uniform 0.02e6;
}

以下の項目は、一通り試してみました。
・relaxationFactors を修正して各種数値実験。
・massFlowRate を、より小さな値からスタートさせる。
・totalPressure境界も試しては見たのですが...。

どなたか、良いアドバイスをいただけないでしょうか。

なお、rhoSonicFoam等も考えてみてはいるのですが
定常解析で実施しておいて、非定常へ繋げる と行きたいので
なんとか rhoSimpleFOAM で と思っています。

E.Mogura

unread,
May 17, 2008, 2:25:53 AM5/17/08
to OpenFOAM
Moguraです。

亀レスですが、アドバイスというよりも便乗質問になってしまいますが、長文ご容赦のほど。

OpenFOAMでの圧縮性流れの計算ですが、以前に一度、市販ソフトで簡単に計算できていた問題を試した時に、なかなかうまく計算できないで諦めたと
いう経験があります。

その時は、rhoSimpleFoamがFoamXから使えないので、FoamX上でパラメタ変更できるソルバー(多分、rhoTurbFoam)を
使ったという記憶です。ディスカッションボードの記事を参考にしたりして、schemeやsolutionを変更したり、緩和係数を変更したらどうかな
ど、やりましたが、パラメタをあれこれ変更するのに、どういう組み合わせの中から選択したものやら判断するには、FoamXから使う方法しか考えられな
かったので。

さて最近、FoamXについては、だいぶわかるようになってきて、rhoSimpleFoamについても、少々古い記事です
が、rhoSimpleFoamのFoamXを作ったという投稿
http://openfoam.cfd-online.com/forum/messages/1/1191.html

を見つけて、最新ヴァージョンでは動きませんでしたが、少々変更して、動くようにして。。。というところまで、ようやくたどりつきました。

そこで早速、Giroさんの問題をロードして。。。とやってみたんですが、すんなりとは行ってくれません。たとえば、、、

--> FOAM FATAL IO ERROR : keyword pMin is undefined in dictionary "/
home/et/\u30c7\u30b9\u30af\u30c8\u30c3\u30d7/Giro/test1/system/
fvSolution::SIMPLE"

といった具合です。SIMPLE法のパラメタ中に、pMin があるけど、FoamX側のdictionaryがないよ! ということです。FoamX
を作り変えることは可能なんですが、これを解決して、また次のエラーが出て。。。というモグラ叩きになりそうな予感があって、いま一つ手を出しかねてお
ります。たとえば、境界条件の、

type massFlowRateInletVelocity;
massFlowRate 0.1;

といったあたりも、上述のFoamXでは使えないので、改造の必要があります。。

そこで私の質問は、Giroさんの設定ファイルの出どころというか、パラメタ変更の選択範囲は、何を出典に決めておられるんでしょうか?それがわかれ
ば、モグラ叩きのゴールも見えてくると思うので、質問させていただいた次第です。

とりあえずのところとして、Giroさんの問題のメッシュデータだけを上のFoamXにもってきて、類似の境界条件設定で動かせることは確認できたの
で、
その範囲であれこれ変更してみましたが。。。Giroさんの書かれている通り、収束性を改善するのは、なかなか容易でない。。。ということも確認できて
おります。こちらも、もうちょっと頑張ってみますが。。。
Message has been deleted

Giro

unread,
May 17, 2008, 4:53:24 AM5/17/08
to OpenFOAM
Giroです。
(すみません、まったく同じものの再送です
 一応、差出人を統一しておこうかと思いまして)

圧縮性を考慮した解析において、
基本的にSimple法は収束性が低下してしまう(と思っている)のですが
おそらくは、そのあたりの改善が必要なんだと思っていたりします。
(質問を投げてはみましたが、そのまま解決するとは思ってなかったりもします。
 無責任な発言ですが...。)

OpenFOAMの開発者は SimplecFoam を作成しているようです。
Simplec法は、Simple法から、収束性等を改善している手法なのです。

私の投げた例題も、主流速度を上げていくと、とたんに収束し難くなります。

 → http://giropenfoam.web.fc2.com/openfoam/solvers/solvers.html
マニホールドの計算も、チョーク箇所があると(流出条件が音速になると)、
とたんに?な結果がでてきたりもします。
そのあたりは、実は 初期条件の与え方をうまくやると
回避できると見ているのですが、
圧縮性流体で "複雑形状" の場合に、どうやってGoodな初期条件を与えるのか?
が次の問題として浮上します。
(ラバルノズルなんかだと、簡単で良いのですが)

圧縮性流体用のポテンシャル流でも解いて、
その結果を初期条件とすれば良いのかもしれませんが
それをOpenFOAMで という所に 残念ながらたどり着いていません。

OpenFOAMのメッセージボードでは、圧縮性流体用のポテンシャル流用のコードが
ユーザーからUpされていましたが、
ちょっと使ってみたのですが、期待した結果は得られませんでした。
(初期条件として適用するには、非現実的な結果が得られ
 私が試したケースにおいては、残念ながらそのままでは使えない と判断しました。)
→ もし、うまく処理できている方がいらしたら ご教授ください。


> たとえば、境界条件の、
> type massFlowRateInletVelocity;
> massFlowRate 0.1;
> といったあたりも、上述のFoamXでは使えないので、改造の必要があります。。
> そこで私の質問は、Giroさんの設定ファイルの出どころというか、
> パラメタ変更の選択範囲は、何を出典に決めておられるんでしょうか?



紹介されていた、rhoSimpleFOAM用のFoamXファイルは
過去に試して見た事はありますが、 ちと駄目だな とすぐに忘れてしまいました。
また、公開されていたrhoSimpleFOAM用のFoamXファイルは 1.3ベースだったと思います。
私の設定した境界条件は、1.3にはあったのかどうか?


私の方で設定した境界条件は、かなり四苦八苦した結果
U字マニホールドの初歩的なケースが何とか解ける設定を見つけた結果です。
 → http://giropenfoam.web.fc2.com/openfoam/solvers/solvers.html

参考文書は 以下となります(読み込みに時間がかかります)。
 → http://www.dansis.dk/Filarkiv/pdf-filer/2007/3/olesen.pdf


以前に、イギリスの学生さんとメールでやりとりしたのですが
その方も、やはり超音速流がでてくると、rhoSimpleFOAMはとたんに...
とコメントしてましたね。
(超音速飛行体の計算をされていたようなのです。)



簡単にはできそうもないかなぁ、と 行き詰ってしまい、
誰か真面目にやられている方がいないかな? と思い
質問を投げてみた次第です。
自分でやるには、実力不足 & 時間が...(7月末までとんでもない業務負荷が続き...)。

次のOpenFOAM で SimplecFOAMが公開されると良いのですけどね。

E.Mogura

unread,
May 17, 2008, 8:29:09 PM5/17/08
to OpenFOAM
moguraです。

>
> 紹介されていた、rhoSimpleFOAM用のFoamXファイルは
> 過去に試して見た事はありますが、 ちと駄目だな とすぐに忘れてしまいました。
> また、公開されていたrhoSimpleFOAM用のFoamXファイルは 1.3ベースだったと思います。
> 私の設定した境界条件は、1.3にはあったのかどうか?
>

ご指摘の通りです。
ただ1箇所のみの変更
     FoamX/defaults/system/fvSchems 中、
     laplacian((rho|A(U)),p) を laplacian((rho*(1|A(U))),p)
で、1.4.1で動かすのに支障のないようにはできました。


しかし、
system/fvSolution中、SIMPLEセクションの、
> pMin pMin [1 -1 -2 0 0 0 0] 100

といったあたりが、FoamX上では、エラーになってしまいます。

また、
> type massFlowRateInletVelocity;
> massFlowRate 0.1;

こういう境界条件を、FoamX上から付与できないので、
そもそもこれらが、どこから出てきたのかと、
(プログラムのソースコードをきちんと理解しているか、
どこかの例題で使っているのを流用でもしない限り、
ポッと出てくるものでないだろうから)
質問させていただいた次第です。

> 私の方で設定した境界条件は、かなり四苦八苦した結果
> U字マニホールドの初歩的なケースが何とか解ける設定を見つけた結果です。
>  → http://giropenfoam.web.fc2.com/openfoam/solvers/solvers.html
>
> 参考文書は 以下となります(読み込みに時間がかかります)。
>  → http://www.dansis.dk/Filarkiv/pdf-filer/2007/3/olesen.pdf
>

ありがとうございます。
これはこれで、参考になりましたけど、
やっぱり、わたしの知りたかった事にはたどりつけません。
とくに、SIMPLEセクション、pMinの件。
この値は指定しなくとも動いてくれます。
また、
# include "readSIMPLEControls.H"
からも、pMinを要求している気配がなさそうです。

これを指定することの意味がわかりません。

Giro

unread,
May 18, 2008, 6:45:35 AM5/18/08
to OpenFOAM
> とくに、SIMPLEセクション、pMinの件。
> この値は指定しなくとも動いてくれます。
> また、
> # include "readSIMPLEControls.H"
> からも、pMinを要求している気配がなさそうです。
>
> これを指定することの意味がわかりません。

一般的な話?として)
圧力項に関するマトリクスを解いた時に、
圧力が 期待しない 値をとる事があります。
自分で組んだプログラムでは、そういう時には 周辺の圧力から平均化した値を適用する
とか、一つ前のStepでの圧力を適用する とかして
その場を凌ぎ、全体の流れ場が安定化するまでは じっとがまんします。
全体が安定化したら、そういう処置は不要となります。

pMinは、そのための設定だろう と頭から思い込んでいました。
ソースコードから裏を取ってないので、非常に無責任な発言ですが。
(7月までは、ちょっと手がだせそうもないので 当分は無責任なままですが)

そのうち、ちゃんと調べてみたいとは思うのですが...。
Reply all
Reply to author
Forward
0 new messages