(2017. 1. 28) - mech.iwate-u.ac.jphirose/ockitatohoku/ref/fukue-OClecture... ·...
Transcript of (2017. 1. 28) - mech.iwate-u.ac.jphirose/ockitatohoku/ref/fukue-OClecture... ·...
オープンCAE講習会@秋田(2017. 1. 28)
* 福江 高志 岩手大学
1
バックステップフローの強制対流
空気:25 oC
発熱部品125 oC
空気による冷却 125 oC の発熱部品が
バックステップ後ろに設置される.
この冷却性能をOpenFOAMで予測したい!
解きたい項目(仮定)
強制対流 層流 熱伝達
今回はBuoyantBoussnesqPimpleFoamを用いる。
2
CFD : Computational Fluid Dynamics
質量保存 : 連続の式
運動量保存 : Navier-Stokes方程式
エネルギ保存 : エネルギ方程式
:数値(熱)流体力学
を,コンピュータ上にて数値計算で解くことで,流体の運動や伝熱現象をSimulate.
OpenFOAM :オープンソースCFDツールボックス
GNU General Public Licenseの範囲内でライセンスフリーで使用可能.プログラム(C++)が完全公開, 改造可能
様々な事例・解析対象に応じた,多数の解析プログラムの集合体(マニュアルなど参照)
laplacianFoam:固体内の熱伝導などのLaplace方程式用コード icoFoam : ニュートン流体の非圧縮・層流の非定常流れ pimpleFoam:非圧縮・乱流の大きな時間ステップの非定常流れ pimpleDyMFoam:ファン・水車など回転体の非圧縮・乱流・非定常流れ interFoam:二相流・不混和流体の非圧縮・等温流れ buoyantBoussinesqPimpleFoam:浮力を伴う非圧縮・乱流・非定常流れ
ソルバの例:
3
今回使用のソルバ:
buoyantBoussinesqPimpleFoam
浮力を伴う非圧縮性乱流用非定常ソルバ 層流解析も可能 ブジネスク近似を使用
→ 熱膨張による密度変化に比べて膨張圧縮による密度変化が無視できると仮定
チュートリアル:hotRoom
4
パイプライン・ブラウザ
プロパティ
可視化ツールボックス
ParaViewが立ちあがりましたか?
5
① 下にスクロール
② Tにチェック
③「Apply」を押す.
ParaViewが立ちあがりましたか?
6
いろいろ見てみましょう.
U(空気の速度)
T(空気の温度)
解析モデル
7
断面の可視化:
sliceボタンをクリック
切る断面を変えられる
8
ベクトル(流れ)をみる
② Glyphボタン
①「slice2」がアクティブになっていることを確認して
③ ベクトルの大きさなど変更
Color map editor
9
天井:310K
床:300K
加熱時間が過ぎるにつれ流れが不安定になる様子が確認できる
4面断熱
10
手順:
後処理
前処理
解析
1. OpenFOAMのケースファイル構造を確認する.2. backstepフォルダを作成する.3. hotRoomのプロジェクトファイルから,
必要なファイルをコピーする.4. BlockMeshDictを編集する.5. 「BlockMesh」でメッシュを生成する.6. 境界条件ファイルを編集する.7. 計算条件を決定する.
8. ターミナルで「buoyantBoussinesqPimpleFoam」を実施する.
9. ParaViewで結果を確認する.
10. 奥行き方向にも格子を切って,3次元解析にトライしてみる.おまけ
※おまけチュートリアルのファイルをうまく使うことはOF上達の第一歩!
11
ホームフォルダの “OpenFOAM/user-4.1/run/hotRoom/” をあらためて開いてください.
Home
OpenFOAM
User-4.1 $WMPROJECTUSERDIR
run
hotRoom
$FOAMRUN ユーザのプロジェクト・ディレクトリ
プロジェクトフォルダ
12
$FOAM_RUN/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/hotroom を開く.
0
constant
system
p : 圧力の設定 (※密度で割ったもの) p_rgh : p と ghの差 (※密度で割ったもの) U : 速度の設定 T : 温度の設定 alphat : 熱拡散率
g : 重力の情報 turbulenceProperties : 乱流解析情報 transportProperties : 物性値情報
blockMeshDict : メッシュ情報 controlDict : 時間刻み,計算設定 fvSchemes : 離散化スキームの設定 fvSolution : 代数方程式を解く設定 setFieldsDict : 場の設定
k : 乱流強度 epsilon : エネルギ散逸率 nut : 乱流動粘度
hotRoom
13
端末で,
cd $FOAM_RUN/
の後,
mkdir backstep
で,フォルダ生成.
14
hotRoomから,下記ファイルをbackstepにコピーする.
backstep ※ 今回は層流解析,作動流体空気
0
constant
system
p : 全圧の設定 (※密度で割ったもの) p_rgh : 静圧の設定 (※密度で割ったもの) U : 速度の設定 T : 温度の設定 alphat : 熱拡散率
g : 重力の情報 turbulenceProperties : 乱流解析情報 transportProperties : 物性値情報
blockMeshDict : メッシュ情報 controlDict : 時間刻み,計算設定 fvSchemes : 離散化スキームの設定 fvSolution : 代数方程式を解く設定 setFieldsDict : 場の設定
hotRoom
15
Inlet Outlet
50
100
30 150
16
(原点 0,0,0)
0 (0, 0.05, 0)
1 (0, 0.10, 0)
3 (0.03, 0.05, 0)
4 (0.03, 0.10, 0)
2 (0.03, 0.0, 0)
6 (0.38, 0.05, 0)
7 (0.38, 0.10, 0)
5 (0.38, 0.0, 0)
Inlet Outlet
50
10
0
30 350
17
(原点 0,0,0)
10 (0, 0.05, 0.01)
11 (0, 0.10, 0.01)
50
100
30 150
14 (0.03, 0.10, 0.01)
12 (0.03, 0.0, 0.01)
16 (0.38, 0.05, 0.01)
17 (0.38, 0.10, 0.01)
15 (0.38, 0.0, 0.01)
13 (0.03, 0.05, 0.01)
18
adiabaticoutlet
inlet
heater
inlet: U – uniform (1,0,0) (x 方向に0.5m/sの一定流速流入)p – zeroGradient , p_rgh – zerogradientT – uniform (298.15) (25 oC の空気が流入)
outlet:U –zeroGradient (自由流出)p – uniform 0.0 (静圧 = 0 Pa), p_rgh – 0.0 PaT – zeroGradient (自由流出)
sidewalls (empty)
19
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
convertToMeters 1;
vertices(
(0 0.05 0) //0(0 0.10 0) //1(0.03 0.0 0) //2(0.03 0.05 0) //3(0.03 0.10 0) //4(0.38 0.00 0) //5(0.38 0.05 0) //6(0.38 0.10 0) //7(0 0 0) //8(dummy)(0 0 0) //9(dummy)(0 0.05 0.01) //10(0 0.10 0.01) //11(0.03 0.0 0.01) //12(0.03 0.05 0.01) //13(0.03 0.10 0.01) //14(0.38 0.00 0.01) //15(0.38 0.05 0.01) //16(0.38 0.10 0.01) //17
);
blocks(
hex (0 3 4 1 10 13 14 11) (10 10 1) simpleGrading (1 1 1)hex (2 5 6 3 12 15 16 13) (100 10 1) simpleGrading (1 1 1)hex (3 6 7 4 13 16 17 14) (100 10 1) simpleGrading (1 1 1)
);
edges();
boundary(
heater{
type wall;faces(
(2 5 15 12));
}adiabatic{
type wall;faces(
(1 4 14 11)(4 7 17 14)(10 13 3 0)(2 3 13 12)
);}
20
sidewalls{
type empty;faces(
(0 1 3 4)(2 5 6 3)(3 4 7 6)(10 11 13 14)(12 15 16 13)(13 14 17 16)
);}inlet{
type patch;faces(
(0 1 11 10));
}outlet{
type patch;faces(
(5 6 16 15)(6 7 17 16)
);}
);
mergePatchPairs();// ************************************************** //
21
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -2 0 0 0 0];
internalField uniform 0;
boundaryField
{
inlet
{
type zeroGradient;
}
outlet
{
type fixedValue;
value uniform 0.0;
}
adiabatic
{
type zeroGradient;
}
heater
{
type zeroGradient;
}
sidewalls
{
type empty;
}
}
// ************************************************************************* //
22
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -2 0 0 0 0];
internalField uniform 0;
boundaryField
{
inlet
{
type zeroGradient;
}
outlet
{
type fixedValue;
value uniform 0.0;
}
adiabatic
{
type zeroGradient;
}
heater
{
type zeroGradient;
}
sidewalls
{
type empty;
}
}
// ************************************************************************* //
23
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
inlet
{
type fixedValue ;
value uniform (0.5 0 0);
}
outlet
{
type zeroGradient;
}
adiabatic
{
type noSlip;
}
heater
{
type noSlip;
}
sidewalls
{
type empty;
}
}
// ************************************************************************* //
24
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 1 0 0 0];
internalField uniform 298.15;
boundaryField
{
inlet
{
type fixedValue ;
value uniform 298.15;
}
outlet
{
type zeroGradient;
}
adiabatic
{
type zeroGradient;
}
heater
{
type fixedValue ;
value uniform 299.15;
}
sidewalls
{
type empty;
}
}
// ************************************************************************* //
25
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -1 0 0 0 0];
internalField uniform 1.94e-05;
boundaryField
{
inlet
{
type fixedValue ;
value uniform 1.94e-05;
}
outlet
{
type zeroGradient;
}
adiabatic
{
type zeroGradient;
}
heater
{
type zeroGradient;
}
sidewalls
{
type empty;
}
}
// ************************************************************************* //
26
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 1 0 0 0];
internalField uniform 0;
boundaryField{
inlet {
type fixedValue;value uniform 298.15;
}
outlet {
type zeroGradient;}
adiabatic{
type zeroGradient;}
heater {
type fixedGradient;gradient uniform 16305.3;
}
frontAndBack{
type empty;}
}
// ************************************************************************* //
0
0
( )
( )
x
x
Tq t
x
T q t
x
熱流束境界条件(第2種境界)
27
おわったら,ターミナルを開いて,次のように打ってみてください
cd $FOAM_RUN/backstepblockMeshbuoyantBoussinesqPimpleFoamparaFoam
注:アルファベットは大文字と小文字を区別します.