いつも本グループで大変お世話になっています.kogawaと申します.
今回下記のURLで議論されているDynamic 乱流モデルの一種のVreman modelの実装を図ろうとしています.
(
http://www.cfd-online.com/Forums/openfoam-programming-development/122711-implement-les-turbulence-model.html)
上記URLでは nuSgsの右辺 a(gradU)の項が0になってしまい計算が発散するという問題について議論がなされています.
この問題を解決するために,max演算子を用いてaが0にならないようにする方法が提案されています.
ためしにこの方法で自分のケースについて計算をおこなったところ,Pimpleの二回めの圧力計算時に計算の発散がおこってしまいました.
おそらく上記で述べた方法では問題が解決されていないように思えます.
Vremanモデルを用いた数値解析の論文を検索してみたとろ,
nuSgsの分子の項であるBbeta(gradU)が1E-8以下になるような場合にはnuSgs=0となるような処理が提案されていました.
そこで今回このようなBbeta(gradU)のスカラー値を参照してこの値が1E-8の場合にはnuSgs=0となるようなプログラムの作成を試みようと思っております.
ためしにプログラムを変更し,添付したファイルのVreman.CでscalarFieldの値を参照してscalar値に代入しようとしてみたのですが,下記のようなエラーがででしまいます.
エラーメッセージ
cannot convert ‘Foam::tmp<Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> >’ to ‘Foam::scalar’ in initialization
これはScalarFieldからScalarへの変換うまくができていないのが原因なのですが,Openfoamにはこのような変換ができるような演算子が含まれているのでしょうか.
もし知っている方がいましたらご助言いただけないでしょうか.
以上よろしくお願い致します.
kogawa