圧力の出力

1,858 views
Skip to first unread message

afl1

unread,
Feb 14, 2011, 2:57:50 AM2/14/11
to OpenFOAM
こんにちは、OpenFOAM初心者のafl01です。

無事NACA翼型の揚力係数が一致し、実機での解析を行っています。
そこで機体の安定性を確認する為に翼に掛かる圧力分布を定量的に求める必要があるのですが、C言語が不得手で難航しております。
揚力を計算する過程で翼の上面・下面の圧力は計算しているものと考えていますが、上手く出力する方法を誰かご存じないでしょうか。

御助言お願い致します。

E.Mogura

unread,
Feb 14, 2011, 4:20:53 PM2/14/11
to open...@googlegroups.com
E.Mogura です

ParaView で、境界面だけを表示させる方法はどうでしょう?

2011年2月14日16:57 afl1 <200...@edu.gifu-nct.ac.jp>:

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


afl1

unread,
Feb 15, 2011, 3:58:15 AM2/15/11
to OpenFOAM
ParaViewでは圧力を視覚化して定性的に表示することができますが、それの値を数値として出力することは可能なのでしょうか?

On 2月15日, 午前6:20, "E.Mogura" <seikun...@gmail.com> wrote:
> E.Mogura です
>
> ParaView で、境界面だけを表示させる方法はどうでしょう?
>
> 2011年2月14日16:57 afl1 <2006...@edu.gifu-nct.ac.jp>:
>
>
>
> > こんにちは、OpenFOAM初心者のafl01です。
>
> > 無事NACA翼型の揚力係数が一致し、実機での解析を行っています。
> > そこで機体の安定性を確認する為に翼に掛かる圧力分布を定量的に求める必要があるのですが、C言語が不得手で難航しております。
> > 揚力を計算する過程で翼の上面・下面の圧力は計算しているものと考えていますが、上手く出力する方法を誰かご存じないでしょうか。
>
> > 御助言お願い致します。
>
> > --
> > このメールは Google グループのグループ「OpenFOAM」の登録者に送られています。
> > このグループに投稿するには、open...@googlegroups.com にメールを送信してください。
> > このグループから退会するには、openfoam+u...@googlegroups.com にメールを送信してください。
> > 詳細については、http://groups.google.com/group/openfoam?hl=jaからこのグループにアクセスしてください。- 引用テキストを表示しない -
>
> - 引用テキストを表示 -

ohbuchi

unread,
Feb 15, 2011, 5:37:21 AM2/15/11
to OpenFOAM
壁面の圧力値を出力したいのでしょうか?
sampleDictを下記の様に作成し、sampleユーティリティを使えば出来ます。


/*--------------------------------*- C++ -
*----------------------------------*\
| =========
| |
| \\ / F ield | OpenFOAM: The Open Source CFD
Toolbox |
| \\ / O peration | Version:
1.7.1 |
| \\ / A nd | Web: www.OpenFOAM.com
|
| \\/ M anipulation
| |
\*---------------------------------------------------------------------------
*/

FoamFile
{
version 2.0;
format ascii;
class dictionary;
location system;
object sampleDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * //
setFormat raw;
surfaceFormat raw;
interpolationScheme cellPoint;

fields
(
p    ←出力したいフィールド名
);

sets
(
);

surfaces
(
airfoilWall
{
type patch;
patchName airfoil;   ←出力したいパッチ名
}
);

//
*********************************************************************** //

sampleを実行すると、surfaceディレクトリが作成され、各タイムディレクトリ中に
p_airfoilWall.raw
というファイルが作成され、パッチ上の座標x,y,zと圧力値pがスペース区切りで
記録されます。

以上、ご参考まで。

afl1

unread,
Feb 15, 2011, 9:10:37 AM2/15/11
to OpenFOAM
皆様迅速な対応、ありがとうございます!
非常に参考になりました。

SampleDictはてっきり1軸方向にしか出力できないものと勘違いしておりました・・・恥ずかしい。

On 2月15日, 午後7:37, ohbuchi <ohbu...@amber.plala.or.jp> wrote:
> 壁面の圧力値を出力したいのでしょうか?
> sampleDictを下記の様に作成し、sampleユーティリティを使えば出来ます。
>
> /*--------------------------------*- C++ -
> *----------------------------------*\
> | =========
> | |
> | \\ / F ield | OpenFOAM: The Open Source CFD
> Toolbox |
> | \\ / O peration | Version:
> 1.7.1 |
> | \\ / A nd | Web: www.OpenFOAM.com
> |
> | \\/ M anipulation
> | |
> \*----------------------------------------------------------------------------

afl1

unread,
Feb 15, 2011, 10:29:55 PM2/15/11
to OpenFOAM
ohbuchiさんの意見を参考に、


FoamFile
{
version 2.0;
format ascii;
class dictionary;
location system;
object sampleDict;
}


setFormat raw;


surfaceFormat raw;


interpolationScheme cellPoint;


fields
(
p

);


sets
( );



surfaces
(
airfoilwall
{
type patch;
patchName airfoil;
}

);

をsampleDictに入力してsample実行を行った所、surfacesディレクトリが生成されたものの、
Create time

Create mesh for time = 0

Time = 0

End

sh: line 0: cd: sets: No such file or directory

## EXEC ... . /home/afl001/OpenFOAM/OpenFOAM-1.7.x/etc/bashrc;rm -rf
sets; sample -latestTime; cd sets; rm -f latestTime; ln -s `ls -d
[0-9]* |sort -n | tail -n 1` latestTime ... Completed.

というエラーが出てTime0までのファイルしか出力されません。
setsの中で内容が必要なのでしょうか?

ohbuchi

unread,
Feb 16, 2011, 1:28:32 AM2/16/11
to OpenFOAM
変ですね。
patchNameで指定している名前は、polyMesh/boundaryに定義されているものと
同じになっているでしょうか?
また、sampleDictは正しくsystemディレクトリにありますか?

afl1

unread,
Feb 16, 2011, 1:48:02 AM2/16/11
to OpenFOAM
はい、boundaryの物と名前は一致していますし、sampleDictもsystemディレクトリに収納されています。

しかしboundaryの名前はairfoilなのですが、Typeがwallとなっています。
状況としては風洞実験で翼両端を壁面に固定するような形となっていますが、これが問題なのでしょうか。

Masashi Imano

unread,
Feb 16, 2011, 2:02:32 AM2/16/11
to open...@googlegroups.com
今野です。

> sh: line 0: cd: sets: No such file or directory
>
> ## EXEC ... . /home/afl001/OpenFOAM/OpenFOAM-1.7.x/etc/bashrc;rm -rf
> sets; sample -latestTime; cd sets; rm -f latestTime; ln -s `ls -d
> [0-9]* |sort -n | tail -n 1` latestTime ... Completed.
>
> というエラーが出てTime0までのファイルしか出力されません。

これらのコマンドは私が作ったMakefileに書いてあったものですが、sampleを実行するのに

sample -latestTime

ではなく、make、もしくは、これらのコマンドが書いてあるスクリプトを使ってますか?

もしそうでしたら、エラーの原因はsampleDictにsetsのエントリーが無く、
sampleを実行してもsetsディレクトリが出来ないのに、setsディレクトリにcdしようとしているため
ですので、Makefileもしくはスクリプト中の

rm -rf sets; sample -latestTime; cd sets; rm -f latestTime; ln -s `ls
-d [0-9]* |sort -n | tail -n 1` latestTime

の行を

sample -latestTime

と書きかえてください。

もしくは、

sample -latestTime

と直接打ってsampleを実行してください。


surfaceの下に0しか出来無いということは、計算結果のディレクトリが0しかないか、
最終時刻ディレクトリにsampleする場のpが無いかのどちらかだと思います。

もし並列計算されたのであれば、

reconstructPar -latestTime

を実行して計算結果を再構築してからsampleしてください。

2011/2/16 afl1 <200...@edu.gifu-nct.ac.jp>:

afl1

unread,
Feb 16, 2011, 2:36:17 AM2/16/11
to OpenFOAM
すみません、申し送れましたがこちらDEXCSー2010を使って並列計算で解析を行っております。

> sample -latestTime
>
> ではなく、make、もしくは、これらのコマンドが書いてあるスクリプトを使ってますか?

DEXCS使用の為、sampleはDEXCSのGUIでsample実行しております。

> もしそうでしたら、エラーの原因はsampleDictにsetsのエントリーが無く、
> sampleを実行してもsetsディレクトリが出来ないのに、setsディレクトリにcdしようとしているため
> ですので、Makefileもしくはスクリプト中の
>
> rm -rf sets; sample -latestTime; cd sets; rm -f latestTime; ln -s `ls
> -d [0-9]* |sort -n | tail -n 1` latestTime
>
> の行を
>
> sample -latestTime
>
> と書きかえてください。

つまり/home/afl001/OpenFOAM/OpenFOAM-1.7.x/src/sampling/Make/fileを変更すれば良いの
でしょうか?
しかしこのファイルを開いた所上記の行が見つからず、何が何やら・・・
DEXCS2010の場合どのスクリプトを変更するのか、ご存知でしょうか。

Masashi Imano

unread,
Feb 16, 2011, 3:00:23 AM2/16/11
to open...@googlegroups.com
今野です。

> DEXCS2010の場合どのスクリプトを変更するのか、ご存知でしょうか。

DEXCSのスクリプトはDesktop/DEXCSの下にありますので、端末で以下のようにしてgrepを使って
当該のコマンドを実行しているファイルを探してください。

cd ~/Desktop/DEXCS
grep -r "cd sets" *

すると、以下のような出力が得られてと思います。

launcherOpen/launcherSimpleFoam.py~: MyDialog1.cmd =
self.setEnvDefault + ";rm -rf sets; sample -latestTime; cd sets; rm -f


latestTime; ln -s `ls -d [0-9]* |sort -n | tail -n 1` latestTime "

launcherOpen/dexcs.py~: MyDialog1.cmd = self.setEnvDefault + ";rm


-rf sets; sample -latestTime; cd sets; rm -f latestTime; ln -s `ls -d
[0-9]* |sort -n | tail -n 1` latestTime "

launcherOpen/dexcs.py: MyDialog1.cmd = self.setEnvDefault + ";rm


-rf sets; sample -latestTime; cd sets; rm -f latestTime; ln -s `ls -d
[0-9]* |sort -n | tail -n 1` latestTime "

temp: MyDialog1.cmd = self.setEnvDefault + ";rm -rf sets; sample


-latestTime; cd sets; rm -f latestTime; ln -s `ls -d [0-9]* |sort -n |
tail -n 1` latestTime "

行の最初から:までがファイル名ですが、末尾に~に付いているのはバックアップファイルなので関係が無く、
tempも名称から一時ファイルでしょうから、launcherOpen/dexcs.py がスクリプト本体だと思われます。

ですので、このファイルの以下の行を修正すれば、おそらくエラーは出なくなります。

MyDialog1.cmd = self.setEnvDefault + ";rm -rf sets; sample


-latestTime; cd sets; rm -f latestTime; ln -s `ls -d [0-9]* |sort -n |
tail -n 1` latestTime "

MyDialog1.cmd = self.setEnvDefault + ";sample -latestTime"

ただ、surfacesに0しか出来ないのは、以前も書きました別な理由だと思います。

> すみません、申し送れましたがこちらDEXCSー2010を使って並列計算で解析を行っております。

並列計算されているそうですが、sampleの前にreconstructは実行していますか?

2011/2/16 afl1 <200...@edu.gifu-nct.ac.jp>:

afl1

unread,
Feb 16, 2011, 3:21:38 AM2/16/11
to OpenFOAM
afl1です。
reconstructの実行を見落としておりまして、実行した所無事latestTimeのデータが出力されました。
並列計算の後にはreconstructが必要なのですね・・・

出力されるディレクトリは0、latestTimeの二つのみですが、今回使用するのは後者ですのでこれで無事研究が進められます。

答えてくださった皆様方、本当にありがとうございました。
> 2011/2/16 afl1 <2006...@edu.gifu-nct.ac.jp>:
Reply all
Reply to author
Forward
0 new messages