rhoSonicFoam における phi の指定

374 views
Skip to first unread message

陽炎

unread,
Sep 20, 2009, 11:30:59 PM9/20/09
to OpenFOAM
はじめまして.
rhoSonicFoam についてアドバイスをいただきたく投稿しました.

rhoSonicFoam で,totalPressure や fluxCorrectedVelocity のような
phi の指定が必要となる境界条件を使おうとすると,
以下のようなエラーを吐いて止まってしまいます.


request for surfaceScalarField phi from objectRegistry region0
failed
available objects of type surfaceScalarField are

3
(
phiv
differenceFactors_
weightingFactors
)


境界条件のほうで phi を "phiv" に指定すればいいのかと思い,
試してみたのですが,同じ結果になってしまいます.

どうやら,ユーザが phi を "phiv" に指定しても,
デフォルトの "phi" が使われてしまっているようです.

これは applications/solvers/compressible/rhoSonicFoam/createFields.H の中の
p.boundaryField().types(),
U.boundaryField().types(),
あるいは
T.boundaryField().types()
のところで境界条件のコンストラクタが呼ばれてしまっているのが
原因のようだということまでは突き止めたのですが,
これ以上追いかける技量がなくて困っています.

密度ベースで圧縮性問題を扱っている方がおられましたら,
アドバイスいただけないでしょうか.

この現象は,たとえば rhoSonicFoam のチュートリアルの
shockTube などをコピーしてきて,
U の sides における境界条件を,zeroGradient から
fluxCorrectedVelocity に変更してみれば再現すると思います.

Takuya OSHIMA

unread,
Sep 24, 2009, 7:12:25 AM9/24/09
to OpenFOAM
大嶋です。

本家Forumにも、同じような質問は幾つか上がっていますが、明確な回答は無いようです。
圧縮生のフィジックスの方は浅学にして無知なもので、
コードを読んだだけで判るプログラミング的な面のみの話ですが。

rhoSonicFoamのソースを少し見てみた限りでは、
おっしゃる通り、恐らくはcreateFields.H中のrhoUの宣言時に
fluxCorrectedVelocityのディクショナリから値を読まないコンストラクタが
呼ばれてしまっているようですね。

ソースコードから読み取った限りでは、
rhoUのコンストラクタにU.boundaryField().types()を与え、
rhoUを解いてUは単にrhoU/rhoで計算することで、
実質的にUのディクショナリで与えた境界条件はrhoUに適用されるようになっているようですが、
totalPressureやfluxCorrectedVelocityはrhoUに対して適切なのでしょうか?

・Yes→ソルバを改造して、phivを認識させられるようにする
・No→rhoUに対して適切な条件を何かしら与える
という感じになるのだろうと思います。

コードをざっと読んだだけなので、大はずれでしたらご容赦を。

大嶋

Giro

unread,
Sep 24, 2009, 9:27:44 AM9/24/09
to OpenFOAM
phiの利用との事ですが、
rhoSonicFoam の createFields.H を見ると、
phiの利用は宣言されていませんが
rhopSonicFoam においては、以下の様に宣言されています。

# include "compressibleCreatePhi.H"

さらにそのすぐ下の行で
surfaceScalarField phiv
として、phivも宣言されています。

注)すみません、OpenFOAM1.5でチェックしてます。1.6は未インストールのため...

rhoSonicFoamにこだわる理由がないのであれば
rhopSonicFoam をご利用になっては如何でしょうか。


参考1)
rhopSonicFoamのtutorialケースに
wedge15Ma5 がありますが、こちらを実行されると
phiについてoutputされる事を確認できるかと思います。


参考2)
wedge15Ma5については rhoCentralFoam にも
同じtutorialケースが存在しており、
そちらの方が、解が改善されています。
ご利用になる解析の種類によっては、
rhoCentralFoam も検討されては如何でしょうか。

陽炎

unread,
Sep 25, 2009, 10:51:25 AM9/25/09
to OpenFOAM
お返事ありがとうございます.

> 大嶋様
> rhoUのコンストラクタにU.boundaryField().types()を与え、
> rhoUを解いてUは単にrhoU/rhoで計算することで、
なるほど,そういうことでしたか.
それなら totalPressure などを改造してみればなんとかなりそうですね.
さっそく試してみたいと思います.


> Giro様
実際には「phi を使いたい」というわけではなく,
「密度ベースソルバで totalPressure,totalTemperature,
および pressureDirectedInletVelocity を使いたい」というのが目的なので,
rhoSonicFoam を考えています.
とはいえ,圧縮性流体に関して未熟なもので,
rhopSonicFoam や rhoCentralFoam ではできない解析だと
はっきり判断できているわけでもないのですが…….
いろいろ試してみたいと思います.

ところで別件になってしまいますが,
Giroさんのサイトの例題のサンプルファイルのいくつかが
リンク切れになっていますが,再公開の予定はないでしょうか.
ぜひ参考にさせていただきたいのですが…….

Giro

unread,
Sep 25, 2009, 11:16:17 AM9/25/09
to OpenFOAM

> Giroさんのサイトの例題のサンプルファイルのいくつかが
> リンク切れになっていますが,再公開の予定はないでしょうか.

それは失礼しました。
と言いつつ、大抵のものは 以下のページで 整理しているつもりです。

http://giropenfoam.web.fc2.com/sample/index_sample.html

漏れがありましたら、ご指摘いただければ 再公開します。
(自分のページであるのに、チェックが行き届いておらず
 大変申し訳ありません。)

陽炎

unread,
Sep 30, 2009, 8:49:24 AM9/30/09
to OpenFOAM
お返事が遅れて申し訳ありません.

なんと,こんなページがあったんですね.
今まで発見できていませんでした.

ありがとうございます.

Giro

unread,
Sep 30, 2009, 9:00:58 AM9/30/09
to OpenFOAM
AeroFOAMをぜひご覧ください。
使用している境界条件は、ご希望に沿いませんか?
Reply all
Reply to author
Forward
0 new messages