simpleFoamのconvergenceの設定

292 views
Skip to first unread message

Daiki Kono

unread,
May 23, 2015, 3:20:02 AM5/23/15
to open...@googlegroups.com
大学での研究において、OpenFOAMを使用しております。
2次元軸対称衝突噴流のよどみ流れにおいて壁面に働くせん断応力を算出するため、非常に簡単なモデルを作成し計算を行っています。

simpleFoamの収束判定値について、現在下記のように設定しているのですが、
SIMPLE
{
    nNonOrthogonalCorrectors 0;
    residualControl
    {
    p        1e-4;
    U   1e-4;
    }
}
Uzの収束性がわるく、計算がなかなか終わりません。(残差プロット:添付ファイル参照)

そこで、質問なのですが、速度の各成分ごとに残差許容値を設定することは可能なのでしょうか。
例えば、以下のように...
SIMPLE
{
    nNonOrthogonalCorrectors 0;
    residualControl
    {
    p        1e-4;
    Ux   1e-4;
    Uy   1e-4;
    Uz   1e-3;
    }
}

また、その他に解決策があれば教えていただけると幸いです。
よろしくお願いいたします。
CFDグループへの質問1.png

大渕真志

unread,
May 23, 2015, 3:52:24 AM5/23/15
to OpenFOAM
こんにちは。軸対称問題でUzとは周方向速度成分ですね。
旋回成分を考慮した計算でなければ、通常マシンゼロの値が入り続けますので
残差としては無視して良いと思いますが。


2015年5月23日 16:20 Daiki Kono <k.dai...@gmail.com>:

--
このメールは Google グループのグループ「OpenFOAM」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには openfoam+u...@googlegroups.com にメールを送信してください。
このグループに投稿するには open...@googlegroups.com にメールを送信してください。
http://groups.google.com/group/openfoam からこのグループにアクセスしてください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。

Daiki Kono

unread,
May 23, 2015, 7:11:55 AM5/23/15
to open...@googlegroups.com
ご回答ありがとうございます。
参考として、作成したくさび形モデルを添付いたしました。

周方向の境界条件はwedgeとしているので、ohbuchi様が仰っている通り、
Uzは計算を行わず0になると考えていたのですが、実際にはそのようにはならず、計算が行われてしまっています。
境界条件emptyでは指定した成分は計算もされず、残差プロットも表示されないと思いますが、
wedgeでは計算は行われてしまうのは仕方ないことなのでしょうか。
また、残差プロットを見て、他の成分(p,Ux,Uy)が残差許容値を下回ったのを確認して、計算を止めるしか方法はないのでしょうか。

なかなかうまく説明ができず申し訳ありませんが、ご返事いただけたら幸いです。

2015年5月23日土曜日 16時52分24秒 UTC+9 ohbuchi:

Daiki Kono

unread,
May 23, 2015, 7:12:56 AM5/23/15
to open...@googlegroups.com
添付ファイルを忘れておりました。

2015年5月23日土曜日 20時11分55秒 UTC+9 Daiki Kono:
CFDグループへの質問2.png

ohbuchi

unread,
May 23, 2015, 7:43:35 AM5/23/15
to open...@googlegroups.com, k.dai...@gmail.com
平面2次元のケースではemptyパッチの存在があるとUzが解かれない様に切り替わりますが、軸対称2次元の
場合はUzを計算しない様にすることはできなさそうです。
U線形ソルバの設定も成分ごとに変えることはできず、residualControlもU全体で共通なので、Uzの収束判定
だけを甘くすることは出来ないみたいです。
強引ですが、ソルバのSIMPLEループの末尾でUzを0に強制してしまえば、残差は0になるので解決できる
だろうと思います。
ご参考まで。

2015年5月23日土曜日 20時12分56秒 UTC+9 Daiki Kono:

Daiki Kono

unread,
May 24, 2015, 2:36:48 AM5/24/15
to open...@googlegroups.com, k.dai...@gmail.com
ご返事ありがとうございます。
「ソルバのSIMPLEループの末尾でUzを0に強制してしまえば、残差は0になるので解決できるだろう」とのことですが、
ソルバのSIMPLEループとは、applications/solvers/simpleFoamのwhile文のことでよろしいですよね。
カスタマイズを行ってみました。(添付ファイル参照:ただ単に Uz=0; を入れただけなのですが...)
しかし、計算を行ったところ、結果は以前とあまり変わりませんでした。
ソルバのsimpleループの改良の仕方がよろしくないのでしょうか。

お手数をおかけして大変申し訳ありませんが、アドバイス宜しくお願いいたします。

2015年5月23日土曜日 20時43分35秒 UTC+9 ohbuchi:
my_simpleFoam.C

ohbuchi

unread,
May 24, 2015, 4:31:48 AM5/24/15
to open...@googlegroups.com, k.dai...@gmail.com
これではコンパイルが通らない筈です。Uzが定義されていません。

SIMPLEループの末尾でUzに0にするコードを書いてみましたが、
UEqnをソルバで計算する際にUzの初期残差が0にならないため、問題は
解決できませんでした。
simpleFoamの収束判定に頼らず、目視でUzの残差を無視するのが
良さそうです。


2015年5月24日日曜日 15時36分48秒 UTC+9 Daiki Kono:
Reply all
Reply to author
Forward
0 new messages