計算後の平均処理に関して

3,100 views
Skip to first unread message

siba

unread,
Jan 5, 2011, 6:59:52 AM1/5/11
to OpenFOAM
 OpenFOAM初心者の柴田です。大変お世話になっております。
計算後の平均処理に関して、御教授いただきたく質問いたしました。

 あるモデル(3次元)のpassive scalar粒子の濃度分布を計算した後、
計算領域中の対象領域A(矩形)の平均濃度、すなわち、

 Aの総セル数
 ∑     {(セルiの体積)*(セルiの濃度)} / (Aの体積)
 i=1

を計算したいと思っております。

sampleでA内の全メッシュの濃度を取り出し、
平均値を計算するプログラムを作って計算するという、
力技を思いついたのですが、もっとシンプルにやる方法があるような
気がします。うまい方法があれば教えていただけないでしょうか。
どうぞよろしくお願いいたします。

柴田貴裕

ohbuchi

unread,
Jan 5, 2011, 3:10:35 PM1/5/11
to OpenFOAM
こんにちは。
私なら、ParaviewのClip機能とIntegrageVariableフィルターを使って平均を求めます。
しかし、頻繁に行う作業であれば、DictionaryでBounding BoxとField名を定義して
Cell中心がBounding Box内にある場合に積分平均を求めるカスタムユーティリティを
作るとよいと思います。
また、OF-1.7であればswak4Foamというユーティリティがあり、functionObjectを定義
することでcellZoneのフィールド平均を求められる様です(再計算が必要ですが)。
http://www.cfd-online.com/Forums/openfoam-post-processing/80362-how-calculate-zone-average.html
以上、ご参考まで。

Takahiro Shibata

unread,
Jan 5, 2011, 7:10:19 PM1/5/11
to open...@googlegroups.com
初心者の柴田です。
いつも御親切にありがとうございます。
大変参考になりました。
何ケースもやらなくてはならないので、
swak4Foamを使う方法にトライしてみようと思います。

どうもありがとうございました。

柴田貴裕

2011年1月6日5:10 ohbuchi <ohb...@amber.plala.or.jp>:

> --
> このメールは Google グループのグループ「OpenFOAM」の登録者に送られています。
> このグループに投稿するには、open...@googlegroups.com にメールを送信してください。
> このグループから退会するには、openfoam+u...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/openfoam?hl=ja からこのグループにアクセスしてください。
>
>

IMANO Masashi

unread,
Jan 5, 2011, 7:23:49 PM1/5/11
to open...@googlegroups.com

今野です。

> しかし、頻繁に行う作業であれば、DictionaryでBounding BoxとField名を定義して
> Cell中心がBounding Box内にある場合に積分平均を求めるカスタムユーティリティを
> 作るとよいと思います。

cell set内の各種統計値(最小値、最大値、平均値、標準偏差)を計算するカス
タム・ユーティリティを参考までに添付します。
統計値を算出したいfiled名(スカラのみ)とcell set名を引数に指定してください。
なお、-dumpオプションを付けるとcell set内のFiled値をcsv形式でダンプします。

> また、OF-1.7であればswak4Foamというユーティリティがあり、functionObjectを定義
> することでcellZoneのフィールド平均を求められる様です(再計算が必要ですが)。

OF-1.6からは、以下のようなfunctionsをcontrolDictを書くことで、cell
zoneの平均値を求めることができます。

functions
(
cellObj1
{
type cellSource;
functionObjectLibs ("libfieldFunctionObjects.so");
enabled true;
// outputControl outputTime;
outputControl timeStep;
outputInterval 100;
log true;
valueOutput true;
source cellZone;
sourceName c0;
operation volAverage;
fields
(
p
U
);
}
);

${FOAM_SRC}/postProcessing/functionObjects/field/fieldValues/controlDict
に上記以外の例がありますが、patchやface zoneでの演算値も出力できます。

なお、cell zoneを作成するには、cellSetユーティリティでcell setを作成し
てから、setsToZonesユーティリティでcell zoneに変換します。

ちなみに、ソルバーを再計算しなくても、execFlowFunctionObjects ユーティ
リティでfunctionsの中身のみ実行してくれるのですが、このユーティリティ
で計算されるのは、p,U,phiの流れ場と乱流モデルで扱われる乱流量のみです
ので、もし濃度場等の別なFieldにも対応させるのであればソースを修正する
必要がありますね。

${FOAM_APP}/utilities/postProcessing/miscellaneous/execFlowFunctionObjects

At Wed, 5 Jan 2011 12:10:35 -0800 (PST),

StatisCellSet-20100106.tar.gz

Takahiro Shibata

unread,
Jan 5, 2011, 8:29:00 PM1/5/11
to open...@googlegroups.com
今野先生

 初心者の柴田です。いつも大変お世話になっております。
非常に参考になりました。早速トライしてみます。
カスタムユーティリティもありがとうございました。
いろいろと応用が利きそうなので、様々なケースで活用していきたいと
思います。

 本当にありがとうございました。

柴田貴裕

2011年1月6日9:23 IMANO Masashi <masash...@gmail.com>:

Reply all
Reply to author
Forward
0 new messages