buoyantBoussinesqSimpleFoamに関する質問

920 views
Skip to first unread message

iwadera

unread,
Jun 5, 2013, 5:58:29 AM6/5/13
to open...@googlegroups.com
初めまして,お世話になります.
iwaderaと申します.

私は,大学の研究で2ケ月前からOpenFOAM v2.1.1を用いて数値解析を行っています.
私は,加熱している板に風を当てて冷却したときの板の表面温度がどのように変化するのか
数値解析で解析を行いたいと考えています.
そのため,buoyantBoussinesqSimpleFoamを用いて数値解析を行っているのですが,
解析の途中で圧力や速度が異常な値になって,最終的に発散してしまい困っています.
この問題に対処する方法を教えて頂けないでしょうか.

私が0フォルダで作成した境界条件の一部は次のようになります.
0/U
    heater 
        type            zeroGradient;
    wall
        type            zeroGradient;
    outlet
        type            zeroGradient;
    inlet
        type            fixedValue;
        value           uniform (0 0 1);
0/p
    heater
        type            calculated;
        value           $internalField;
    wall
        type            calculated;
        value           $internalField;
    outlet
        type            fixedValue;
        value           uniform 1.013e5;
    inlet
        type            zeroGradient;
0/p_rgh
    heater
        type            buoyantPressure;
        rho             rhok;
        value           uniform 1.013e5;
    wall
        type            buoyantPressure;
        rho             rhok;
        value           uniform 1.013e5;
    outlet
        type            fixedValue;
        value           uniform 1.013e5;
    inlet
        type            zeroGradient;
0/T
    heater
        type            fixedGradient;
        gradient        uniform 2000;
    wall
        type            zeroGradient;
    outlet
        type            zeroGradient;
    inlet
        type            fixedValue;
        value           uniform 300;
0/k
    heater
        type            kqRWallFunction;
        value           uniform 0.00375;
    wall
        type            kqRWallFunction;
        value           uniform 0.00375;
    outlet
        type            zeroGradient;
    inlet
        type            fixedValue;
        value           uniform 0.00375;
その他のファイルや解析モデルの概略図,解析時に発生したエラーなどについてはこちらのURLからダウンロードしてください.


宜しくお願いいたします

ONO Hiroki

unread,
Jun 5, 2013, 10:42:06 AM6/5/13
to open...@googlegroups.com
boussiesnq近似は一般的に数十度の温度差の範囲で用いられるもので、今回のような1000Kを超える差があるケースには不適と思います。

また、強力な浮力流れが発生し、常に非定常的な渦放出を伴う不安定な流れ場になっており、定常計算(SIMPLE法)の適用にも
もしかしたら問題があるかもしれません。

いま手元に環境がなくメッシュ等を確認していませんので発散の原因は断定できませんが、1万ステップ以上廻っているようなので、上記の不安定性が原因かもしれません。


あと、PDFをみるとwallやheaterはそれぞれ壁・板のようですが、速度の境界条件はzeroGradientでいいのでしょうか?
これだと全く摩擦のない表面相当になってしまいます。



2013年6月5日水曜日 18時58分29秒 UTC+9 iwadera:

E.Mogura

unread,
Jun 5, 2013, 7:50:58 PM6/5/13
to open...@googlegroups.com
E.Mogura です

0/U
    heater 
        type            zeroGradient;
    wall
        type            zeroGradient;

部分を、

    heater-4
    {
        type        fixedValue;
        value       uniform (0 0 0);
    }
    wing-5
    {
        type        fixedValue;
        value       uniform (0 0 0);
    }
    wall-6
    {
        type        fixedValue;
        value       uniform (0 0 0);
    }

 とし、

0/p

    outlet
        type            fixedValue;
        value           uniform 1.013e5;

を、

        type            calculated;
        value           $internalField;


と変更して、収束傾向にあることは確認しました。(添付の残渣グラフ Gnuplot_168.png参照)

温度の、
0/T
    heater
        type            fixedGradient;
        gradient        uniform 2000;

の部分は、勾配を規定しているだけなので、温度上昇としては、ごくわずか(1K程度)にしかならないようです。(T_169.png 参照)

ただ、、、、
問題の性質の割に、メッシュ数が異常に多く、計算時間もかかりました。
添付の残渣グラフの状態までなるのに4並列の計算で、3.5時間。その後CPUの熱暴走(?)でクラッシュしました。
オールテトラというのにも無理があって、せめてレイヤーを入れるとか工夫が欲しいですね。

以上、ご参考まで。

2013年6月5日 23:42 ONO Hiroki <h_...@meiji.ac.jp>:
--
このメールは Google グループのグループ「OpenFOAM」の登録者に送られています。
このグループから退会し、メールの受信を停止するには、openfoam+u...@googlegroups.com にメールを送信します。
このグループに投稿するには、open...@googlegroups.com にメールを送信してください。
http://groups.google.com/group/openfoam?hl=ja からこのグループにアクセスしてください。
その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。
 
 

Gnuplot_168.png
T_169.png

iwadera

unread,
Jun 5, 2013, 9:15:51 PM6/5/13
to open...@googlegroups.com
ONO Hiroki様,E.Mogura様
返信ありがとうございます.

iwaderaです.
数多くのご指摘をしてくださり,ありがとうございます.
私は数値解析に対する知識が乏しく,メッシュの作成の仕方や境界条件の設定が不適切でした.

E.Mogura様
私は,この数値解析で,heaterに熱流束一定の条件を与えて計算を行いたいと考えています.
そのため,fixedGradientで勾配を固定しています.
しかし,自分は勾配の設定の仕方も正しく理解していないため,解析結果で温度上昇が不適切になったと思います.
heater (面積:0.05[m^2]) に投入する熱量を1000[W]と仮定した場合,heaterに与える条件はどのように設定すれば
良いでしょうか?

解答を宜しくお願い致します.



2013年6月6日木曜日 8時50分58秒 UTC+9 E.Mogura:

以上、ご参考まで。

このグループから退会し、メールの受信を停止するには、openfoam+unsubscribe@googlegroups.com にメールを送信します。

Youhei Takagi

unread,
Jun 5, 2013, 9:59:54 PM6/5/13
to open...@googlegroups.com
iwadera様

高木と申します。横から失礼します。

ヒーター内で定常熱伝導を仮定するならば、フーリエの法則
Q/A = - k*grad(T) (kは温度伝導率)
より温度勾配が求まります。

大学の研究室で研究されているようなので、こちらに
質問される前に、指導教官の先生とよくご相談される
ことをおすすめします。

iwadera

unread,
Jun 6, 2013, 1:36:06 AM6/6/13
to open...@googlegroups.com
高木様

返信ありがとうございます.
iwaderaです.

おっしゃられるように,大学の先生と相談してみます.
ありがとうございました.



2013年6月6日木曜日 10時59分54秒 UTC+9 yotakagi:

ONO Hiroki

unread,
Jun 6, 2013, 9:08:07 AM6/6/13
to open...@googlegroups.com
あら、fixedValueでvalue = 2000と読み違えていました…失礼いたしました。

温度の境界条件として熱流束で与えたい場合、
層流の場合であれば温度の勾配を直接規定する方式でも可能ですが、
乱流の場合は各表面要素ごとにkappatを取得して勾配を計算しなければなりません。

通常はわざわざそんなことはせず、
turbulentHeatFluxTemperature
という境界条件を用いて与えます。
     {
         type            turbulentHeatFluxTemperature;
         heatSource      flux;  // ここがfluxの場合はqを[W/m2]で、powerにすれば[W]で与えることも可能
         q               uniform 10; //与えたい熱流を密度で割った値
         alphaEff        kappaEff;
         value           uniform 300; // 初期温度
     }

ついついqに与えたい熱流をそのまま書いてしまいがちですが、非圧縮性ソルバを用いる場合は
密度で割らなければならないことに注意が必要です。

1気圧付近の空気だと密度は1.2程度なので、忘れてしまっても計算結果が大幅(10倍とか100倍とか)に変わるわけでは
ないのがいやらしいですね(ミスに気付きにくい)。

2013年6月5日水曜日 18時58分29秒 UTC+9 iwadera:

iwadera

unread,
Jun 6, 2013, 8:14:52 PM6/6/13
to open...@googlegroups.com
ONO Hiroki 様
返信ありがとうございます.

iwaderaです.
ご指摘して頂いた方法で,数値解析を試してみたいと思います.
ありがとうございました.


2013年6月6日木曜日 22時08分07秒 UTC+9 ONO Hiroki:
Reply all
Reply to author
Forward
0 new messages