移動メッシュのエラーとパッチの結合について

687 views
Skip to first unread message

shiraki

unread,
Dec 6, 2010, 3:03:31 AM12/6/10
to OpenFOAM
こんにちは。
先日も質問させていただきました白木と申します。
Openfoamの扱いにかなり苦戦しております。
初心者の面倒な質問ですが、お時間ございましたらご教授願えれば幸いです。

トンネル状の(直方体状の)ケースでpimpleDyMFoamのチュートリアルmovingconeのような移動メッシュを作ってみました。
inletとoutletに周期境界条件を課しています。その状態で、cellMotionUxとpointMotionUxにおいて、inletと
outletにfixedValueのuniform0の条件を与えると以下のerrorが出て移動メッシュを描いてくれません。原因の分かる方いらっ
しゃいましたらご教授お願いいたします。

FOAM FATAL IO ERROR:
inconsistent patch and patchField types for
patch type cyclic and patchField type fixedValue

file: /opt/OpenFOAM/OpenFOAM-1.7.x/applications/solvers/incompressible/
icoFoam/regumesh/boad2/0/pointMotionUx::boundaryField::inout from line
31 to line 32.

From function PointPatchField<Type>const pointPatch&, const
Field<Type>&, const dictionary&)
In file /home/dexcs/OpenFOAM/OpenFOAM-1.7.x/src/OpenFOAM/lnInclude/
newPointPatchField.C at line 138.

FOAM exiting


また、入り口と出口がそれぞれ2つのパッチから構成されているトンネル状のケースの入り口と出口に周期境界条件を課したいと考えているのですが、設定の
仕方が分かりません。blockMeshDictの記述は以下のようなものなのですが、このようなときにinletとoutletに周期境界条件を課す
にはどのようにすればいいのでしょうか??patchの結合の方法などありましたら是非ご教授をお願いいたします。

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

convertToMeters 1;

vertices
(
(0 0 0)
(1 0 0)
(1 0.1 0)
(2 0.1 0)
(2 0 0)
(3 0 0)
(3 0.1 0)
(3 1 0)
(2 1 0)
(1 1 0)
(0 1 0)
(0 0.1 0)
(0 0 0.1)
(1 0 0.1)
(1 0.1 0.1)
(2 0.1 0.1)
(2 0 0.1)
(3 0 0.1)
(3 0.1 0.1)
(3 1 0.1)
(2 1 0.1)
(1 1 0.1)
(0 1 0.1)
(0 0.1 0.1)
);

blocks
(
hex (0 1 2 11 12 13 14 23) (20 2 1) simpleGrading (1 1 1)
hex (11 2 9 10 23 14 21 22) (20 18 1) simpleGrading (1 1 1)
hex (2 3 8 9 14 15 20 21) (20 18 1) simpleGrading (1 1 1)
hex (3 6 7 8 15 18 19 20) (20 18 1) simpleGrading (1 1 1)
hex (4 5 6 3 16 17 18 15) (20 2 1) simpleGrading (1 1 1)
);

edges
(
);

patches
(

patch inlet
(
(11 10 22 23)
(0 11 23 12)
)

patch outlet
(
(18 19 7 6)
(17 18 6 5)
)
wall nonslip
(
(1 0 12 13)
(13 14 2 1)
(3 2 14 15)
(4 3 15 16)
(5 4 16 17)
(21 22 10 9)
(20 21 9 8)
(19 20 8 7)
)

empty frontAndBack
(
(11 0 1 2)
(10 11 2 9)
(9 2 3 8)
(8 3 6 7)
(3 4 5 6)
(12 23 14 13)
(23 22 21 14)
(14 21 20 15)
(15 20 19 18)
(16 15 18 17)
)
);

mergePatchPairs
(
);

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




ohbuchi

unread,
Dec 7, 2010, 4:31:33 AM12/7/10
to OpenFOAM
こんばんは。

> FOAM FATAL IO ERROR:
> inconsistent patch and patchField types for
> patch type cyclic and patchField type fixedValue

これは、boundaryで定義したパッチタイプ(cyclic)と0ディレクトリ下のファイルの設定が
合っていないためにエラーになっています。fixedValueではなく、cyclicで良いのでは
ないでしょうか?

> また、入り口と出口がそれぞれ2つのパッチから構成されているトンネル状のケースの入り口と出口に周期境界条件を課したいと考えているのですが、設定の
> 仕方が分かりません。blockMeshDictの記述は以下のようなものなのですが、このようなときにinletとoutletに周期境界条件を課す
> にはどのようにすればいいのでしょうか??patchの結合の方法などありましたら是非ご教授をお願いいたします。
> patch inlet
> (
> (11 10 22 23)
> (0 11 23 12)
> )
>
> patch outlet
> (
> (18 19 7 6)
> (17 18 6 5)
> )

以下の様に定義すれば良いと思います。

cyclic inout
(
(11 10 22 23)
(0 11 23 12)

shiraki

unread,
Dec 7, 2010, 5:10:20 AM12/7/10
to OpenFOAM
ohbuchi様

ご返信ありがとうございます。
後半の問題はおっしゃる通りに書くことで無事に解決いたしました。ありがとうございます。
前半の問題なのですが、cellMotionUxとpointMotionUxで、inletとoutletをcyclicのタイプの設定にすると、指
定した部分だけでなくメッシュ全体がx軸方向へ動いてしまいます。具体的な設定は以下の通りになるのですが、どこか設定がおかしいのでしょうか?
重ねての質問申し訳ございませんが、何卒よろしくお願いいたします。

blockMeshDict


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

convertToMeters 1;

vertices
(
(0 0 0)
(1 0 0)
(1.5 0.3 0)
(2 0 0)
(3 0 0)
(3 1 0)
(2 1 0)
(1.5 1 0)
(1 1 0)
(0 1 0)
(0 0 0.1)
(1 0 0.1)
(1.5 0.3 0.1)
(2 0 0.1)
(3 0 0.1)
(3 1 0.1)
(2 1 0.1)
(1.5 1 0.1)
(1 1 0.1)
(0 1 0.1)
);

blocks
(
hex (0 1 8 9 10 11 18 19) (200 10 1) simpleGrading (1 1 1)
hex (1 2 7 8 11 12 17 18) (10 10 1) simpleGrading (1 1 1)
hex (2 3 6 7 12 13 16 17) (10 10 1) simpleGrading (1 1 1)
hex (3 4 5 6 13 14 15 16) (200 10 1) simpleGrading (1 1 1)
);

edges
(
);

patches
(
wall movingwall
(
(11 12 2 1)
(3 2 12 13)
)
cyclic inout
(
(0 9 19 10)
(14 15 5 4)
)

wall slip
(
(4 3 13 14)
(17 18 8 7)
(16 17 7 6)
(15 16 6 5)
(1 0 10 11)
(18 19 9 8)
)

empty frontAndBack
(
(0 1 8 9)
(8 1 2 7)
(7 2 3 6)
(6 3 4 5)
(10 19 18 11)
(11 18 17 12)
(12 17 16 13)
(13 16 15 14)
)
);

mergePatchPairs
(
);

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


cellMotionUx, pointMotionUx
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * //

dimensions [0 1 -1 0 0 0 0];

internalField uniform 0;

boundaryField
{
movingwall
{
type fixedValue;
value uniform 0.1;
}

inout
{
type cyclic;
}

slip
{
type slip;
}

frontAndBack
{
type empty;
}
}

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

ohbuchi

unread,
Dec 7, 2010, 5:56:39 AM12/7/10
to OpenFOAM
問題はboundaryで定義したパッチ型と0ディレクトリ下のファイルの
パッチフィールド型が整合していることです。
cyclicパッチとしてinoutを設定したならメッシュが全体的に移動する
のは指定通りの動作だと思います。
inoutを固定したいのならblockMeshDictでcyclicでないパッチとして
メッシュを作成し、boundaryでもpatchにしておく必要があると思います。

shiraki

unread,
Dec 7, 2010, 6:20:03 AM12/7/10
to OpenFOAM
ohbuchi様

ご返信ありがとうございます。
するとこの問題の場合、周期境界条件を課しながら指定した部分のみを動かすのは難しい、ということでしょうか??

Reply all
Reply to author
Forward
0 new messages