Re: 時間刻み幅Timestepについて

2,571 views
Skip to first unread message
Message has been deleted

Giro

unread,
Dec 18, 2009, 10:21:16 AM12/18/09
to OpenFOAM
Giroです。

Timestepが1.0e-05と異常に小さな とありますので、
計算条件から、ご検討された事とはお見受けしますが、あえて確認として
メッシュはフリーのテトラではないですよね?
非常に特性の悪いメッシュが混じりこんでいたりすると
その手の事がおきる事があります。
似たような質問を過去に受けた際、フリーのテトラで計算しているとの事でしたので
polyDualMesh に切り替えてみては? と提案した所
満足する方向にシフトした との返事を受けた事がありました。
参考まで。

On 12月18日, 午後6:23, handboys <f2370...@iizuka.isc.kyutech.ac.jp> wrote:
> いつも拝見させていただいております.
> OpenFOAM初心者です.大学でOpenFOAMをもちいて低レイノルズ数領域でのヒービング運動する剛体翼の流れ場解析を行っております.
> 現在,乱流モデルはk-ω,k-ωSSTを用いており,計算を行うことはできております.
> それなりの結果がでており,後一歩のところで満足できる結果が得られそうなとこまできました.
> しかし,以前から時間刻み幅Timestepが1.0e-05と異常に小さな値でしか解析ができず,解析時間が2日もかかってしまうという問題がありま
> す.この値以上を用いて解析した場合,一瞬で発散してしまいます.
> startTime 0でendTime 5で目標としているtimestepは0.01秒です.
> 様々な方法を考えて試しておりますが改善が見られません.
> このTimestepでしか計算できないのでしょうか.
> 何が問題なのかどのように改善すればよいのか,手がかりになりそうなことを教えていただけないでしょうか?
> 宜しくお願いします.

handboys

unread,
Dec 20, 2009, 2:19:06 AM12/20/09
to OpenFOAM
返答していただきありがとうございます。

deltaTが1e-05ということです。すみません。
メッシュはgambitで作成しており、ヘキサメッシュを用いております。

polyDualMeshというのはメッシュを作成するユーティリティなのでしょうか?

Giro

unread,
Dec 20, 2009, 4:22:49 AM12/20/09
to OpenFOAM
> deltaTが1e-05ということです。すみません。

私の日本語が不適切でした。

> Timestepが1.0e-05と異常に小さな とありますので、
> 計算条件から、ご検討された事とはお見受けしますが

dT=1.0e-5が異常に小さい と 判断されている という事は
ご利用になられているメッシュサイズ/計算条件(境界条件、CFL)から
妥当なdTについて ご検討されている。
即ち、計算格子が適切であるか確認されている。

という事ですね?

と 言ったつもりでした。

言葉がたりず、申し訳ありません。

handboys

unread,
Dec 20, 2009, 4:49:11 AM12/20/09
to OpenFOAM
そういうことですか。
CFDを始めて4ヶ月ほどでほとんど知識がなく、理解できていませんでした。すみません。
おそらく計算格子に問題はないと思っています。といっても、同じ解析をANSYSを用いて計算した際には、
deltaT=0.01で計算できているからとしか言えないんですけど…。


IMANO Masashi

unread,
Dec 21, 2009, 6:20:57 AM12/21/09
to open...@googlegroups.com

handboysさん

今野です。

> おそらく計算格子に問題はないと思っています。といっても、同じ解析をANSYSを用いて計算した際には、
> deltaT=0.01で計算できているからとしか言えないんですけど…。

checkMesh で格子のチェックをしたらどうなりますか?

handboys

unread,
Dec 21, 2009, 7:00:34 AM12/21/09
to OpenFOAM
返信ありがとうございます.
早速checkMeshを行いました.
結果はこのようになりました.

SigFpe : Enabling floating point exception trapping (FOAM_SIGFPE).

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * //
Create time

Create polyMesh for time = 0

Time = 0

Mesh stats
points:     177890
internal points     0
  faces 353545
internal faces:    175655
cells:      88200
boundary patches:  9
point zones: 0
face zones: 0
cell zones: 0

Overall number of cells of each type:
hexahedra: 88200
prisms: 0
wedges: 0
pyramids: 0
tet wedges: 0
tetrahedra: 0
polyhedra: 0

Checking topology...
Boundary definition OK.
Point usage OK.
Upper triangular ordering OK.
Face vertices OK.
Number of regions: 1 (OK).

Checking patch topology for multiply connected surfaces ...
Patch Faces Points Surface
topology
Outlet_domain 180 362 ok (non-closed singly
connected)
domain_sym2 75600 76330 ok (non-closed singly
connected)
Outlet 30 64 ok (non-closed
singly connected)
domain_sym1 75600 76330 ok (non-closed singly
connected)
Sym2 12600 13456 ok (non-closed singly
connected)
Sym1 12600 13456 ok (non-closed singly
connected)
Wall 400 804 ok (non-closed
singly connected)
default_wall 440 880 ok (non-closed
singly connected)
Inlet 440 882 ok (non-closed
singly connected)

Checking geometry...
Overall domain bounding box (-0.3 -0.36 -0.005) (0.36 0.36 0)
Mesh (non-empty, non-wedge) directions (1 1 1)
Mesh (non-empty) directions (1 1 1)
Boundary openness (-2.95256e-19 1.13414e-18 4.12801e-15) OK.
Max cell openness = 3.85778e-16 OK.
Max aspect ratio = 872.884 OK.
Minumum face area = 2.49267e-10. Maximum face area = 0.000151113.
Face area
magnitudes OK.
Min volume = 1.24634e-12. Max volume = 7.15158e-07. Total volume
= 0.002096
58. Cell volumes OK.
Mesh non-orthogonality Max: 25.8837 average: 4.47246
Non-orthogonality check OK.
Face pyramids OK.
Max skewness = 0.407503 OK.

Mesh OK.

宜しくお願いします.

IMANO Masashi

unread,
Dec 21, 2009, 7:20:59 AM12/21/09
to open...@googlegroups.com

今野です。

> Min volume = 1.24634e-12. Max volume = 7.15158e-07. Total volume
> = 0.002096

格子の体積の平均は、

(Total volume) / (number of cells)
=0.002096/88200
= 2.376e-8

ですから、それに比べると、Min volume = 1.24634e-12 は結構小さいですね。

時間刻みが 1e-5の時の、ソルバーの出力における Courant Number の mean
と max は幾ら位になってますか?

あと、ソルバーの種類と system/{fvSchemes,fvSolution} も見せてください。

At Mon, 21 Dec 2009 04:00:34 -0800 (PST),

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

handboys

unread,
Dec 21, 2009, 8:07:29 AM12/21/09
to OpenFOAM
詳しい説明ありがとうございます.
ソルバはpimpleDyMFoamです.
Courant Number mean: 0.00122005 max: 0.111621
Time = 1e-05  です.

system/{fvSchemes,fvSolution}は
fvSolution
solvers
{
pcorr
{
solver GAMG;
tolerance 1e-06;
relTol 0.1;
smoother GaussSeidel;
cacheAgglomeration true;
nCellsInCoarsestLevel 10;
agglomerator faceAreaPair;
mergeLevels 1;
}
p
{
solver GAMG;
tolerance 1e-06;
relTol 0.1;
smoother GaussSeidel;
cacheAgglomeration true;
nCellsInCoarsestLevel 10;
agglomerator faceAreaPair;
mergeLevels 1;
}
pFinal
{
solver GAMG;
tolerance 1e-06;
relTol 0.1;
smoother GaussSeidel;
cacheAgglomeration true;
nCellsInCoarsestLevel 10;
agglomerator faceAreaPair;
mergeLevels 1;
}
U
{
solver GAMG;
tolerance 1e-06;
relTol 0.1;
smoother GaussSeidel;
cacheAgglomeration true;
nCellsInCoarsestLevel 10;
agglomerator faceAreaPair;
mergeLevels 1;
}
cellMotionU
{
solver GAMG;
tolerance 1e-06;
relTol 0.1;
smoother GaussSeidel;
cacheAgglomeration true;
nCellsInCoarsestLevel 10;
agglomerator faceAreaPair;
mergeLevels 1;
}
k
{
solver GAMG;
tolerance 1e-06;
relTol 0.1;
smoother GaussSeidel;
cacheAgglomeration true;
nCellsInCoarsestLevel 10;
agglomerator faceAreaPair;
mergeLevels 1;
}
omega
{
solver GAMG;
tolerance 1e-06;
relTol 0.1;
smoother GaussSeidel;
cacheAgglomeration true;
nCellsInCoarsestLevel 10;
agglomerator faceAreaPair;
mergeLevels 1;
}
}

relaxationFactors
{
default 0;
p 0.7;
U 0.7;
nuTilda 0.7;
omega 0.7;
k 0.7;

}

PIMPLE
{
nOuterCorrectors 2;
nCorrectors 1;
nNonOrthogonalCorrectors 0;
pRefCell 0;
pRefValue 0;
}

fvSchemes
ddtSchemes
{
default backward;
}
gradSchemes
{
default Gauss linear;
}

divSchemes
{
default Gauss linear;
}
laplacianSchemes
{
default Gauss linear corrected;
}

interpolationSchemes
{
default linear corrected;
}

snGradSchemes
{
default uncorrected;
}

fluxRequired
{
p;
U;
k;
omega;
}

このようになっており,何かのtutorialからそのまま引用したような状態です.

IMANO Masashi

unread,
Dec 24, 2009, 4:49:13 AM12/24/09
to open...@googlegroups.com

今野です.

PIMPLE法で時間項スキーム(ddtSchemes)がbackwardで陰解法ですね.
それなら,時間刻みがもう少し大きくても大丈夫かもしれません.

ANSYSではdt=0.01で同じ解析が出来たとのことでしたが,そもそもOpenFOAMで
の離散スキームやdynamic Mesh関係の計算条件はANSYSのものと近いのでしょ
うか?

特に移流項の離散スキーム(fvSchemesでのdivSchemes)が中心差分(Gauss
linear)ですが,ANSYSでも中心差分なのでしょうか?

あと,fvSolutionで各種フィールドのrelTolが0.1となっていますが,非定常
解法だと各時間ステップ毎に残差をtolerance以下まで落としますので,通常0
にします.問題によっては*Correctorsも増やさないといけないかもしれませ
ん.

> このようになっており,何かのtutorialからそのまま引用したような状態です.

ちなみにそのtutorialはどこにありますか?

At Mon, 21 Dec 2009 05:07:29 -0800 (PST),

handboys

unread,
Jan 6, 2010, 8:37:14 PM1/6/10
to OpenFOAM
返信ありがとうございます.
いろいろと忙しくてなかなか返信できませんでした.

おっしゃられたようにrelTolとCorrectorsを変更したところ,時間刻み幅を1e-4にできました.
場合によっては1e-3にもできましたが思うような解析結果が得られませんでした.

PIMPLE
{
nOuterCorrectors 2;
nCorrectors 1;
nNonOrthogonalCorrectors 0;
pRefCell 0;
pRefValue 0;
}

この部分の意味がわからずいつも適当に決めているのですが,もしよろしかったら教えてください.

また計算条件はほとんど同じにするようにしていますが,OpenFOAMにおいてわからないことが多く,
同じようにできていないと思います.

あと参考にしたtutorialもどこにあったかわかりません.
ネット上にあったものを参考にしているかもしれません.

分からないことばかりで申し訳ありません.

基本的にこのユーザー会とOpenFOAMのユーザーガイドを参考に進めており,
英語が苦手なので,たまにCFD-Onlineを参考に進めているといった状況なのですが,
分からない部分はどのように解決しているのでしょうか?


宜しくお願いします.

IMANO Masashi

unread,
Jan 8, 2010, 5:21:59 AM1/8/10
to open...@googlegroups.com

今野です。

> PIMPLE
> {
> nOuterCorrectors 2;
> nCorrectors 1;
> nNonOrthogonalCorrectors 0;
> pRefCell 0;
> pRefValue 0;
> }
>
> この部分の意味がわからずいつも適当に決めているのですが,もしよろしかったら教えてください.

nCorrectors, nNonOrthogonalCorrectors, pRefCell, pRefValue については
以下の「ユーザーガイド 1.5系 - 4.5 解法とアルゴリズム制御」を見てください。

http://www.ofwikija.org/index.php/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%AC%E3%82%A4%E3%83%89_1.5%E7%B3%BB_-_4.5_%E8%A7%A3%E6%B3%95%E3%81%A8%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E5%88%B6%E5%BE%A1

nOuterCorrectors については、残念ながらググってもこれを解説しているWeb
ページは出てきませんでした。
こういう時は、自分ならアプリケーションのソースコードを見ます。

使用されているアプリケーション・ソルバーは pimpleDyMFoam ということで
したから、アプリケーションのソースは

applications/solvers/incompressible/pimpleDyMFoam

にあります。また、メインのソースコードは慣例的に「アプリケーション名.C」
なので、 pimpleDyMFoam.C です。これのループ制御部を抜きとると以下のようになります。

Info<< "\nStarting time loop\n" << endl;

while (runTime.run())
{
// --- PIMPLE loop
for (int ocorr=0; ocorr<nOuterCorr; ocorr++)
{
// --- PISO loop
for (int corr=0; corr<nCorr; corr++)
{
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
{
}
}
}
}

よって、nOuterCorr はPISOループの外側のPIMPLEループの反復数というとに
なります。

PISOループでは、圧力のPoisson方程式を解いて、それを元に速度を更新しま
すが、*本来は*ここでp方程式の初期残差を閾値以下まで落さねばなりません。
初期残差が閾値を超えることが多いようであれば、PISOループの最大反復数
Corrを上げてください。

> 基本的にこのユーザー会とOpenFOAMのユーザーガイドを参考に進めており,
> 英語が苦手なので,たまにCFD-Onlineを参考に進めているといった状況なのですが,
> 分からない部分はどのように解決しているのでしょうか?

自分は、ググるか、ソースコードを見る。
それでも分らなければ CFD-Online で聞くという感じです。

handboys

unread,
Jan 13, 2010, 3:56:36 AM1/13/10
to OpenFOAM
返信ありがとうございます.

今野様の貴重なアドバイス大変参考になりました.

OpenFOAMは分からないことばかりですが,これからも日々精進していこうと思います.

長い間お付き合いいただきありがとうございました.

また質問した際には宜しくお願い致します.

失礼致します.

Reply all
Reply to author
Forward
0 new messages