cavitatingFoam で、抗力は求められますか。

306 views
Skip to first unread message

kafu

unread,
Jun 11, 2008, 9:28:03 PM6/11/08
to OpenFOAM
simpleFoam では、simpleFunctionObjects を用いたら抗力が算出出来ることを、お教えいただき、無事に算出できるよう
になりました。
しかし、あるケースの場合、物体の後面でキャビテーションが発生すていると推定されるため、cavitatingFoamを使ってみました。
とりあえず、キャビテーションの計算は出来ているのですが、simpleFoam の時と同じ設定をしてみたのですが、全く計算出来なくなります。
cavitatingFoam で、抗力の計算はまだ無理なのでしょうか。

E.Mogura

unread,
Jun 16, 2008, 4:36:18 PM6/16/08
to OpenFOAM
Mogura です。

抗力は計算したことないので、外しているかもしれませんが、、、

cavitatingFoam + simpleFunctionObjects は、使えています。

といっても、形状も比較的簡単なもので、
使っている機能も、simpleFunctionObjects中の、patchMassFlow の機能だけですが。。。
入り口と出口で、流量変化をモニターしながら、計算の定常安定性を判断するのに役立ってくれています。

kafu

unread,
Jun 16, 2008, 10:44:23 PM6/16/08
to OpenFOAM
Mogura さん。初めまして、kafu と申します。

私の現状は、

1.simpleFunctionObjects を使用しない設定でまず、cavitatingFoam を実行させ、そこそこの結果がでることを確
認しました。

2.そこで、simpleFoam の時と同様にsimpleFunctionObjects を使い、patchForce を指定するのですが

3.次のようなエラーが出ます。

FAOM FATAL ERROR
request for volScalarField mu objectRegistry
region0 failed available objects of type
volScalarField are
8
(
p
p_0
gamma_0
psi
gamma
psi_0
rho_0
rho
)

E.Mogura

unread,
Jun 17, 2008, 4:03:35 PM6/17/08
to OpenFOAM
Mogura です。

kafuさんの書かれた状況は再現できました。
確かに、同じエラーとなって、
patchMassFlowは使えるけれど、patchForce は使えないということのようです。

多分、二相流関係のコードの中で粘性係数は、mu でなく、muf
surfaceScalarField muf("muf", gammaf*muv + (1.0 - gammaf)*mul);

として定義されていることが原因かと考えられますが、

で、どうしたらよいかとなると、、、???です

kafu

unread,
Jun 17, 2008, 7:37:33 PM6/17/08
to OpenFOAM
Mogura さん。色々ありがとうございました。

OpenFOAM-1.5で出来るようになることを祈りながら待っています。

IMANO Masashi

unread,
Jun 17, 2008, 10:06:58 PM6/17/08
to open...@googlegroups.com

今野です.

以下のようにして cavitatingFoam 内で mu を計算するように改造すれば良い
のではないでしょうか?

$(FOAM_SOLVERS)/multiphase/cavitatingFoam/createFields.H:
末尾等(gammaの定義後ならどこでも良いと思います)に以下を加える.

volScalarField mu
(
IOobject
(
"mu",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE
),
gamma*muv + (1.0 - gamma)*mul
);

$(FOAM_SOLVERS)/multiphase/cavitatingFoam/gammaPsi.H:
gammaを計算している行の後に以下を加える.

mu = gamma*muv + (1.0 - gamma)*mul;

これでとりあえず値は出ると思います.
ただし,これで正しい抗力が計算できるかはわかりません;;

kafu

unread,
Jun 17, 2008, 10:23:34 PM6/17/08
to OpenFOAM
今野様

ご指摘、ありがとうございます。

ハードルは高そうですが、一度、チャレンジしてみます。

E.Mogura

unread,
Jun 18, 2008, 5:19:53 PM6/18/08
to OpenFOAM
今野先生

Moguraです。

とりあえず、ご指摘の方法で、動くようになって、
正しい抗力かどうかは定かでありませんが、
結果が出力されることも確認できました。

それにしても、
$(FOAM_SOLVERS)/multiphase/cavitatingFoam/createFields.H:
に"mu"の定義を追加するあたりまでは、自分でもやってみたんですが、、、

gamma*muv + (1.0 - gamma)*mul

をどこへ書いたらよいのかという点と、
同じ式を別の場所
$(FOAM_SOLVERS)/multiphase/cavitatingFoam/gammaPsi.H:
に、今度は、 mu = ..
の形にして記述する作法というのが、C++なのかもしれませんが、
FORTRANでやってきた人間には、なかなか馴染めませんです。

IMANO Masashi

unread,
Jun 19, 2008, 6:17:02 AM6/19/08
to open...@googlegroups.com

今野です.

私もOpenFOAMを触るまではC++はほとんどやったことがなかったので,未だに
OpenFOAMのアプリケーションを作成する際は手探り状態です^^;.

でも,念のため今回のカスタマイズの思考手順を書いておきます.
少しでも参考になれば幸いです.

1. simpleFunctionObjectsのソースでpatchForceに関するソースを探す.

→ patch/patchForceFunctionObject/patchForceFunctionObject.C

2. muの値を参照している部分を見る.

→const volScalarField &mu=obr_.lookupObject<volScalarField>("mu");
→muはvolScalarFieldのClassであり,"mu"という名前のObjectとして定義さ
れていなければならない.

3. cavitatingFoam/UEqn.H内でmufを計算している部分を見る.

→surfaceScalarField muf("muf", gammaf*muv + (1.0 - gammaf)*mul);
→mufはsurfaceScalarField であり,gammaf,muv,mulより算出される.
→muv,mulはreadTransportProperties.Hで読まれるdimensionedScalar.

4. gammafの計算はどこ?

→UEqn.H: surfaceScalarField gammaf = fvc::interpolate(gamma);
→gammafはgammaを界面で補間したもの.

5. gammaの計算はどこ?

→gammaPsi.H: gamma = max(min((rho - rholSat)/(rhovSat - rholSat),scalar(1)), scalar(0));
→gammaが更新されるのはここだけなので,これ以降にmuを更新すれば良い.

6. gammaの定義はどこ?

→createFields.H: volScalarField gamma
→これ以降にmuの定義をすれば良い.

7. muの定義

→ファイルから読む必要はないので,IOobject::NO_READ
→結果を書き出す必要はないので,IOobject::NO_WRITE

8. muの初期値

→ファイルから読まないので,次元込みの初期値を与えないといけない.
→mufがgammaf*muv + (1.0 - gammaf)*mulだから,
 とりあえずgamma*muv + (1.0 - gamma)*mulが妥当.

9. muの更新

→5.で見たようにgammaPsi.Hにおけるgammaの更新後に,muを更新すれば良い.
→初期値の与え方と同様に,以下の式で更新すれば良い.
→mu=gamma*muv + (1.0 - gamma)*mul;

野村悦治

unread,
Jun 19, 2008, 4:22:33 PM6/19/08
to open...@googlegroups.com
Mogura です。
 
今野先生、たいへん参考になります。
ありがとうございました。

Reply all
Reply to author
Forward
0 new messages