続_1方向流入/流出の境界条件について

676 views
Skip to first unread message

M. K.

unread,
Oct 28, 2020, 4:01:44 AM10/28/20
to OpenFOAM
お世話になります。
以前下記の相談をさせていただいたものになります。
https://groups.google.com/g/openfoam/c/uoiiu8CZhNM

その後、PENGUINITIS様のホームページなどを参考にモデルをいろいろ
修正しているのですが、計算が途中でエラーになるなどして思ったような結果を得られず苦戦しております。

■試した変更
ソルバーをGAMGからPCGに
PIMPLEのnCorrectorsの回数を増やす
などなど…

さらに計算できた範囲でparaViewで結果を確認すると本来内圧が上昇すべき圧縮時に低下し、膨張時に増加する結果が得られるなど、奇妙な結果となっております。

お手数おかけして誠に恐縮ですが、どなたかモデルデータのどこがおかしいか
ご指南いただけないでしょうか・・。

  DL pass:test

メッシュはsalomeで作成したunvファイルを変換して使用しております。

また、追加の質問になるのですがPIMPLE FOAMでは空気の圧縮時の温度は計算していないという認識でよろしいでしょうか?
断熱圧縮で温度変化を伴う場合は別のソルバー(buoyantBoussinesqPimpleFoam?)を使うべきでしょうか?

以上長々と質問ばかりして恐縮ではありますが何卒よろしくお願い申し上げます。

M. K.

unread,
Nov 3, 2020, 7:09:17 PM11/3/20
to OpenFOAM
すみません、ファイルのアップロード期間を一週間にしていたので
改めてこちらにも添付しておきます。m(_ _)m

2020年10月28日水曜日 17:01:44 UTC+9 M. K.:
testModel.zip

penguinitis

unread,
Nov 9, 2020, 5:21:00 AM11/9/20
to OpenFOAM
こんにちは。

ちょこっと見ただけですが、
圧力 p の境界条件で、

  inlet の inletValue > outlet の outletValue

となるような数値を設定するのではないでしょうか。

ためしに inlet の inletValue = 100、outlet の outletValue = 0 としたら、違和感はなさそうです。
(value のほうの値はこの場合関係ないです。)

また、圧縮による温度計算が必要であれば、rhoPimpleFoam を使ったほうがよいかもしれません。
(buoyantPimpleFoam は、浮力が問題になるときに使います。)

2020年11月4日水曜日 9:09:17 UTC+9 M. K.:

M. K.

unread,
Nov 13, 2020, 12:03:36 AM11/13/20
to OpenFOAM
お世話になっております。

ご回答ありがとうございます。
まとめると以下のようにするべき、ということでしょうか。

・入口
速度u
type            outletInlet;
outletValue     uniform (0 0 0);

圧力p
type inletOutlet;
inletValue uniform 100;
value           uniform 0;

・出口
速度u
type            inletOutlet;
inletValue      uniform (0 0 0);

圧力p
type outletInlet;
outletValue uniform 0;
value uniform 0;

何点か質問があります。
①なぜ圧力と速度でinletoutlet/outletinletを逆に設定するのでしょうか?
入口において圧力に関してはあくまでinletoutletの「逆流で」流入する際の圧力条件を与えているということでしょうか?

②仮に上の通りだとするとなぜ 
       入口のinletValue > 出口のoutletValue
とすべきなのでしょうか・・・。
入口側を大気開放(0kPa)に、出口側を負荷圧(+20kPa程度)を想定しているのですが、

③これはopenFOAMの仕様に関する質問ですが、
InletOutletについて流出時はゼロ勾配、流入時はfixedValueとマニュアルにあったのですが、
それではこのvalueは何をするための数値なのでしょうか?
逆流で流入する際のfixedValueにinletValueが使われるんですよね・・・?

④これも些細な質問ですが・・・圧力は相対圧でいいのでしょうか?それとも絶対圧・・?
意外と調べてみたけれど見当たらなかったので。


>また、圧縮による温度計算が必要であれば、rhoPimpleFoam を使ったほうがよいかもしれません。  

ありがとうございます。rhoPimpleFoamを用いたモデルも作成してみようと思います。
引き続きよろしくお願い申し上げます。 m(_ _)m

2020年11月9日月曜日 19:21:00 UTC+9 penguinitis:

penguinitis

unread,
Nov 13, 2020, 3:06:52 AM11/13/20
to OpenFOAM
勘違いしていましたが、入口 p0、出口 p1 は p1 > p0 なのですね。

1) 底が上昇時
入口 (閉) u = 0、p 勾配 = 0
出口 (出る) u 勾配 = 0、p = p1
2) 底が下降時
入口 (入る) u 勾配 = 0、p = p0
出口 (閉) u = 0、p 勾配 = 0

したがって、

入口の速度は、出るとき (閉) に値指定するので outletInlet
入口の圧力は、入るときに値指定をするので inletOutlet
出口の速度は、入るとき (閉) に値指定するので inletOutlet
出口の圧力は、出るときに値指定するので outletInlet

>①なぜ圧力と速度でinletoutlet/outletinletを逆に設定するのでしょうか?
>入口において圧力に関してはあくまでinletoutletの「逆流で」流入する際の圧力条件を与えているということでしょうか?

上のとおりで、ご理解の通りと思います。

>②仮に上の通りだとするとなぜ 
 >      入口のinletValue > 出口のoutletValue
>とすべきなのでしょうか・・・。

私の勘違いです。p1 > p0 としてよいと思います。

>③これはopenFOAMの仕様に関する質問ですが、
>InletOutletについて流出時はゼロ勾配、流入時はfixedValueとマニュアルにあったのですが、
>それではこのvalueは何をするための数値なのでしょうか?
>逆流で流入する際のfixedValueにinletValueが使われるんですよね・・・?

・OpenFOAM の境界条件は、とりあえず type と value は指定するようになっている。
・value の目的は type によってさまざまで、値の指定だったり、初期値にすぎなかったり、使ってなかったりします。
計算結果を設定するために使われたりもします。
・inletOutlet/outletInlet の場合は、初期値? とりあえず inletValue/outletValue だけ気にしておけばよいはずです。
詳しくはソースコードを読んでみてください。outletInletFvPatchField.H などの上のコメントだけでも。

>④これも些細な質問ですが・・・圧力は相対圧でいいのでしょうか?それとも絶対圧・・?

標準ソルバーについては、基本的に非圧縮性流体ソルバーは相対圧、圧縮性流体ソルバーは絶対圧。
相対圧とはいっても、simpleFoam/pimpleFoam の場合は、密度で割られた圧力です。
フィールドファイル p の dimensions を見ると単位がパスカルになっていないと思います。


2020年11月13日金曜日 14:03:36 UTC+9 M. K.:

M. K.

unread,
Nov 18, 2020, 3:29:39 AM11/18/20
to OpenFOAM
毎回ご丁寧に回答いただきまして誠にありがとうございます。

すみません、P0とP1の大小関係について付記しておりませんでしたね。。

しかしP1 > P0 として

・入口
圧力p
type  inletOutlet;
inletValue uniform 0;
value           uniform 0;

・出口
圧力p
type outletInlet;
outletValue uniform 100;
value uniform 0;

とするとinternalFieldをuniform 0 としているにも関わらず
時刻t=0の段階で内部の圧力が100を超える値となるのですが、何故でしょう・・。
勘違いかもしれませんが、できることならモデルの領域の外側がP0,P1の値で固定し、
流出/流入の際の計算を行いたいのですが、どうやら境界面の内側がP0やP1に固定されて
付近のメッシュにも影響を与えているのだろうか、と考えております。

いっそのことcodedFixedValueなどでuやpに関して簡単なコードを書いて実現できないかとも考えているのですが
ネット上を見てもさらに情報が少なくて困っております。
速度uに関してメッシュ自身の圧力を取得→P0やP1と比較→通す時はゼロ勾配、通さない時はu=0で実現できるのかな、
など考えているのですが・・。

>・OpenFOAM の境界条件は、とりあえず type と value は指定するようになっている。
>・value の目的は type によってさまざまで、値の指定だったり、初期値にすぎなかったり、使ってなかったりします。
>計算結果を設定するために使われたりもします。
>・inletOutlet/outletInlet の場合は、初期値? とりあえず inletValue/outletValue だけ気にしておけばよいはずです。
>詳しくはソースコードを読んでみてください。outletInletFvPatchField.H などの上のコメントだけでも。

承知しました、ありがとうございます。
またソースコードも参照してみようと思います。

>標準ソルバーについては、基本的に非圧縮性流体ソルバーは相対圧、圧縮性流体ソルバーは絶対圧。
>相対圧とはいっても、simpleFoam/pimpleFoam の場合は、密度で割られた圧力です。
>フィールドファイル p の dimensions を見ると単位がパスカルになっていないと思います。

こちらもご回答ありがとうございます。
助かりました。


ところで本モデルのソルバーをpimpleFoamからrhoPimpleFoamへと変更する場合、
rhoPimpleFoamのチュートリアルのfvSolutionやfvSchemeを適切にコピーして
0フォルダにalphatやtなどの物性値を改めて作成し、あとはconstantにthermophysicalPropertiesファイルを作成すれば良いのでしょうか?

pimpleFoamとrhoPimpleFoamで全く別のもの、というよりはsvSolutionのPIMPLEに書かれているオプションの違いだけかな、と思ったので・・。
(そもそも空気の圧縮工程が含まれるのにpimpleFoamで温度を計算せずにどうやって計算を行っているかも不思議だったり・・・)

毎度毎度頼り切りのくせに長々と書き込んで申し訳ありません。
何卒よろしくお願い申し上げます。



2020年11月13日金曜日 17:06:52 UTC+9 penguinitis:

penguinitis

unread,
Nov 19, 2020, 5:16:51 AM11/19/20
to OpenFOAM
>時刻t=0の段階で内部の圧力が100を超える値となるのですが、何故でしょう・・。

ParaView で見た時の 1 ステップ目の表示は、デフォルトだと t = 0 はスキップしているはずなので、
流れが出ているときの話ではないでしょうか。それであれば変ではないと思います。
(ベクトルを描かせてみるとよいです。)

>ところで本モデルのソルバーをpimpleFoamからrhoPimpleFoamへと変更する場合、
>rhoPimpleFoamのチュートリアルのfvSolutionやfvSchemeを適切にコピーして
>0フォルダにalphatやtなどの物性値を改めて作成し、あとはconstantにthermophysicalPropertiesファイルを作成すれば良いのでしょうか?

それでよいと思います。

2020年11月18日水曜日 17:29:39 UTC+9 M. K.:
Reply all
Reply to author
Forward
0 new messages