LESモデルの初期設定について

2,417 views
Skip to first unread message

samesun

unread,
Aug 19, 2009, 11:04:42 PM8/19/09
to OpenFOAM
初めまして、最近DEXCS2009でOpenFOAMを使い始めた初心者です。
複雑な形状の管内流れを対象に計算していますが、RANSモデル(simpleFoam, turbFoam)でdelta TをCourant数
1e-2程度になるようにcontrolDictを設定しても発散していまうのでLESモデル(channelOodles)で計算してみようとしてい
るのですが、~/exe/0/ の中のnuSGS、nuTilda, kの初期設定の仕方が判りません。対象としているケースは静止状態の管内の液相に
流入口より定常流(液相)が入るもので、実測からRe~1000程度が想定されるものです。

Giro

unread,
Aug 20, 2009, 10:02:40 AM8/20/09
to OpenFOAM
Giro@この1.5年ほど全然OpenFOAMで遊べてません です。

LESに移行する前に、RANSで計算できるようにしておくべきだと思います。
さらには、まずは、非粘性で解けるようになるべきかと。
より簡単な手法で計算できない場合には、往々にして複雑な計算は より 困難となります。

さて、「管内流れ」 で 「発散してしまう」との事ですが
 初期条件の設定
が得てして重要かと思います。
私は、potentialFoamで初期条件を作成する事があります(場合によりますが)。

昔 作ってみたサンプルを公開してみました。
(OF1.5対応用を用意しました)
以下のURLをご覧ください。
http://giropenfoam.web.fc2.com/sample/simpleFoam/index.html

ご参考となれば良いのですが。


以上、失礼します。

samesun

unread,
Aug 20, 2009, 10:23:29 PM8/20/09
to OpenFOAM
Giro様御教示、資料ありがとうございます。

前回書き漏らしましたが、私もRANSを走らせる前にpotentialFoamを実行しておいたのですが発散してしまいました。
途中まで順調に残差が減少していくのですが、平均Courant数が低い状態にもかかわらず突然最大Courant数が跳ね上がり、発散してしまいま
す。内部形状がかなり複雑なので、安定解に至る初期条件はかなりシビアにしないといけないのかも知れません。
素人考えですがLESの方が空間フィルター操作が入るので複雑形状に対する安定性が高いのかと思いましたがどうなのでしょうか?

Giro

unread,
Aug 21, 2009, 11:36:44 AM8/21/09
to OpenFOAM
突然Courant数が跳ね上がり とありますが
速度が理解しがたい値を示す → 圧力がきちんと解けていない。
という事でしょうが、
その手の事が起こる理由の一つに、メッシュの性能があると考えます。

どのようなメッシュ作成方法をとられたでしょうか?
単に、フリーのテトラメッシュを作成しただけの場合、
この手の状態に陥ることが、多々あるかと。

数ヶ月前にCFD online をご覧の方から質問をいただき
症状は類似の状態でした。
ヘキサメッシュをお勧めしたのですが、それが困難との事でしたので
polyDualMeshの利用を勧めました。
それだけで、うまく解けるようになったとの連絡を受けています。

polyDualMeshについては、↓を参照下さい。
http://giropenfoam.web.fc2.com/openfoam/polyDual/polyDual.html
(もっとも、どんなpolyメッシュが作成されているやら という問題もありますが。)


一般の市販CFDソフトでは、多少 いびつなテトラメッシュが存在していても
内部的になんらかの処理をして、それなりの結果を出しているものと推測します。
ですが、OpenFOAMでは 基本的にはそれほど手の込んだ事はやっていないと思いますので
メッシュ形状の影響は、比較的強く受けているかと思います。

なお、先日紹介したGiro作成サンプルはヘキサメッシュでのサンプルです。
同じものを、フリーのテトラで計算したら、同じく まともに計算できませんでした。
(当然ですが potentialFoamまでは、うまくいきます)
参考まで。


もし、美しくヘキサメッシュで計算実行をトライされているようであれば
上述は大変失礼しました。
先に、無礼をお詫びしておきます。

E.Mogura

unread,
Aug 21, 2009, 5:09:24 PM8/21/09
to OpenFOAM
DEXCS2009でOpenFOAMを使っている、、、とのことですと、
メッシュはsnappyHexMeshでしょうか?

だとしたら、いくつかの経験則を記しておきます。

1.potentialfoamができたとあったのですが、これはいつも有効とは限りません。
場合によっては、これをやらない方がよい場合もあります。

2.まずは乱流モデルをオフにして計算してみる。
 これで計算できないようなら、メッシュ方案をやり直したほうがよい。

3.乱流モデルをオンにして発散するというなら、発散の起点を確認する。
通常は、複雑部位の剥離点の近いところで
あるいは、出口で逆流が強くなりすぎて、、、となっているはず。

4.後者の場合は、出口条件を inletOutlet にすることで解決する場合が多い。

5.前者の場合、イプシロンの初期値や流入条件を変更することで解決されることもある。

6.乱流モデルは通常 k-ε を使っていると思いますが、これを k-omega に変更することによってうまくいく場合が多々ある。

以上、ご参考まで。
> > 素人考えですがLESの方が空間フィルター操作が入るので複雑形状に対する安定性が高いのかと思いましたがどうなのでしょうか?- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

samesun

unread,
Aug 21, 2009, 7:03:42 PM8/21/09
to OpenFOAM
Giro様、E.Mogura様、

御教示ありがとうございます。
Mesh作成はsnappyHexmesh、RANSモデルはk-εを使っています。

異常な速度値が出る周辺のmesh形状をもう一度確認してみるとともに、境界条件・モデル定数を変えて試してみます。

IMANO Masashi

unread,
Aug 22, 2009, 3:19:20 AM8/22/09
to open...@googlegroups.com

samesunさん

今野です。

自分もまずはRASモデルで計算できるのを確かた後に、LESモデルに移行したほ
うが良いも思います。

また、以下の初期値ファイル(potentialFoam実行前のサイズが小さいもの)や
設定ファイルを添付して送ってもらうと、他の皆さんもさらに具体的なアドバ
イスがしやすいと思いますよ。

0/{U,p,k,epsilon}
constant/{RASProperties,transportProperties}
system/{controlDict,fvSchemes,fvSolution}

もし、constant/polyMesh以下のメッシュも圧縮すればサイズが小さいのであ
れば、上記をまとめて圧縮して送ってもらえれば、他の人が追試できます。

メッシュ・サイズが大きいのであれば、ParaViewで見たメッシュ図(パッチ名
を表示していると尚良い)のスクリーン・ショットを添付する等をしたほうが
他の人が状況を飲み込みやすいと思います。

samesun

unread,
Sep 2, 2009, 2:51:29 AM9/2/09
to OpenFOAM
返事が遅くなる申し訳ありません。

御助言頂いたことを幾つか試みてみました。
1. Meshの切り直し(snappyHexMeshをヴァージョンアップ)
2. RANSモデルをk-omegaに
3. 差分を中心差分から風上差分に

以上で何とか解く事ができました。
発散した途中のデータと比較してみると、私のモデルは思いの外kが大きかったようで、初期値kが初期値から平衡に達するまでの間でp,uの残差が大きく
変動しているようでした。
kの初期値は単に小さくすればいいわけではなく、何度か試行してみて比較的近い値から始めるのが良いのかと思いました。

Giro様、E.Mogura様、今野様、御教示ありがとうございました。

IMANO Masashi

unread,
Sep 6, 2009, 1:16:06 AM9/6/09
to open...@googlegroups.com

samesunさん

今野です。

> 2. RANSモデルをk-omegaに

RANSモデルがk-epsilon系だと解けないのは、kの初期値が低すぎるか、
k,epsilonおよびU,pの緩和係数が大きいためだと思われます。

場合によっては、kやepsilonの下限値を設定してリミッタを掛けないと、安定
に計算できない時もあります(本当はやりたくありませんが、、)。

なお、potentialFoamでU,pの初期値を作成した場合、特に計算初期では緩和係
数を小さくしないと、衝突領域等でk,epsilonが不安定になり発散することが
多いです。緩和係数が大きいと、U,pとk,epsilonの不整合による振動が激しく、
安定しないからです。

> 3. 差分を中心差分から風上差分に

system/fvSchemesを見せて頂ければすぐに指摘したのですが、乱流をRANSモデ
ルで解く場合、U,k,epsilonの輸送方程式の移流項の差分スキームが中心差分
だと大抵安定しません。何らかの風上系のスキームを使う必要があります。


といったわけで、計算が発散する場合には、とりあえず以下のような安定より
の条件で計算してみて、境界条件が間違っていないかを確かめることをお勧め
致します。

*移流項の差分スキームを全てupwindにする。
*U,p,k,epsilonの緩和係数を、0.1程度に小さくしてみる。
*k,epsilonの初期値を大きめにする。

その後、スキームをより高精度な風上系に戻す、緩和係数を大きめに戻す、
といったように高精度化、高速化を図っていくのが近道かと思います。


事情により公開できないデータ(メッシュや境界条件の一部)もあるかと思
いますが、以下の計算条件設定ファイルの内、公開しても良い部分も多々ある
かと思います。

0/{U,p,k,epsilon}
constant/{RASProperties,transportProperties}
system/{controlDict,fvSchemes,fvSolution}

今後は、公開できるファイルは条件設定はなるべく具体的に提示しながらご質
問されたほうが、的確なアドバイスを得やすいと思います。

samesun

unread,
Sep 6, 2009, 11:29:14 PM9/6/09
to OpenFOAM
今野様、御返事ありがとうございます。

>system/fvSchemesを見せて頂ければすぐに指摘したのですが、乱流をRANSモデ
>ルで解く場合、U,k,epsilonの輸送方程式の移流項の差分スキームが中心差分
>だと大抵安定しません。何らかの風上系のスキームを使う必要があります。

漠然と中心差分の方が誤差の拡散が少なく高精度と思い使っていました。(turbFOAMのtutrialも中心差分で書かれていましたし。)

>といったわけで、計算が発散する場合には、とりあえず以下のような安定より
>の条件で計算してみて、境界条件が間違っていないかを確かめることをお勧め
>致します。
>
> *移流項の差分スキームを全てupwindにする。
> *U,p,k,epsilonの緩和係数を、0.1程度に小さくしてみる。
> *k,epsilonの初期値を大きめにする。
>
>その後、スキームをより高精度な風上系に戻す、緩和係数を大きめに戻す、
>といったように高精度化、高速化を図っていくのが近道かと思います。

実際的なテクニックで大変参考になります。

> 今後は、公開できるファイルは条件設定はなるべく具体的に提示しながらご質
> 問されたほうが、的確なアドバイスを得やすいと思います。

次回からは可能な限り条件を具体的に提示するように致します。

スレッドタイトルとは違った方向になりましたが、差し当たり、私の取り扱う範囲の問題はRANSでカヴァーできるようですので、LESについては今後ま
た勉強してみることにします。(OpenFOAM 1.6は一つのsolverでRANS/LESを扱えるそうですね。DEXCSがOpenFOAM
1.6仕様になってからしてみます。)

私事ですが、
OpenFOAMというよりCFDソフトを使われている多くの方は工学、理学系の方だと思いますが、当方医学系で素人の上、周りにCFDをやっている研
究者も居らず苦労しており、この様な的確な御助言頂ける場を大変ありがたく思っております。(教科書、参考書には記載されていないことまで助言頂けるの
で。)

グループの皆様、今後ともよろしくお願いします。

Reply all
Reply to author
Forward
0 new messages