FiFiWiki2

FiFiWikiの第2版

ユーザ用ツール

サイト用ツール


openfoam

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
openfoam [2018/03/08 13:04]
fifi
openfoam [2018/04/10 08:38] (現在)
fifi [TIPS]
ライン 1: ライン 1:
  
 +[[openfoam:​備忘録1]]
  
-# OpenFOAM+初めてのチュートリアルをまわしながらの作業メモ。
  
-- OpenFOAMでできること +[[openfoam:​備忘録2]]
-  - 非圧縮性流体の定常/​非定常解析 <= これしたい +
-  - 圧縮性流体の定常/​非定常解析 +
-  - 流体・個体伝熱解析 +
-  - 混相流(VOF)+
  
-- 非圧縮性流体定常/​非定常解析目指+pimpleFoamでRAS計算まわためのテンプレート作成備忘録.
  
-## 乱モデル+stlを読み込む外部れのテンプレート
  
-定常(simpleFoam)と非定常(pimpleFoam)でも同じ 
  
-constant/​turbulencePropertiesにて、laminarかRASかLESかを選ぶ.その下に書く設定を追記する。 +# TIPS 
- +(増えきたら備忘録にまとめる)
- +
- - simulationType +
-  - "​laminar"​ +
-  - "​RAS"​ +
-  - kEpsilon +
-  - RNGkEpsilon +
-  - realizableKE +
-  - kOmega +
-  - kOmegaSST +
-  - LRR (RSTM レイノルズ応力輸送モデル) +
-  - "​LES"​ +
-  - Smagorinsky +
-  - homogeneousDynSmagorinsky +
-  - oneEqEddy +
-  - dynOneEqEddy +
- +
- - 乱流モデルの選択 +
-  - RASはレイノルズ平均をベースにしいるので、詳細な非定常現象の再現は向かない +
-  - kEpsilonは単純で計算しやすいので、おおかな流れのパターンを見ような用途に向いている +
-  - kEpsilon系統モデル(渦粘性モデル)は、等方性を仮定しているので、曲がりや旋回、剥離には向かない. RNG kEpsilon, Realizable kEpsilonはいくらか改善版 +
-  - RSTMは乱れの非等方性を考慮できる。しかし方程式がふえ、計算時間が3倍. +
-  - RSTMよりも制度が必要な場合はLES +
- +
- +
-チュートリアル/​incompressible/​pimpleFoam/​参照 +
- +
- +
-## 境界条件 +
- +
- - 境界タイプ +
-  - patch +
-  - wall +
-  - symmetryPlane +
-  - cyclic 周期境界 +
-  - cyclicAMI 不整合周期境界 +
-  - wedge 2次元軸対象境界 +
-  - empty 2次元 +
- - ソルバーが必要とするフィールドファイル +
-  - simpleFoam +
-  - U, p, k, epsilon, nut +
-  - buoyantBoussinesqSimpleFoam +
-  - U,​p,​p_rgh,​T,​k,​epsilon,​nut,​alphat +
-  - buoyantSimpleFoam +
-  - U,​p,​p_rgh,​T,​k,​epsilon,​nut,​alphat+
  
 +- スケールの変換
 +  - STL ファイルのスケール (単位) の変換を行うには、OpenFOAM のユーティリティ surfaceConvert を使う。たとえば mm から m に変換する場合は次のようにする。
  
 ``` ```
-// +$ surfaceConvert ​-scale 0.001 MC_T0_A_ASSY_AllCATPart.stl MC_T0_A_ASSY_AllCATPart_mm.stl
-// U +
-// +
-FoamFile +
-+
- version 2.0; +
- format ascii; +
- class volVectorField; ​ // volScalarField ​volVectorField - volSymmTensorField +
- object U; +
-+
- +
-// 単位 [kg m s K mol A Cd] +
-dimensions [1 -1 0 0 0 0] +
- +
-// フィールド内部の値。0の場合は初期値 +
-internalField uniform(0 0 0) +
- +
-// 境界値 +
-boundaryField +
-+
- BoudaryName //​ メッシュ生成時につけた名前 +
-+
- type fixedValue;​ +
- value uniform (1 0 0); +
- +
- or  +
- +
- type zeroGradient;​ // 値指定の必要はない +
-+
- +
- +
- ".*" +
-+
- type zeroGradient;​ // 値指定の必要はない +
-+
- +
- "​(inlet-1|inlet-2)"​ // outlet-1 or outlet-2 +
-+
- type fixedValue;​ +
- value uniform (1 0 0); +
-+
- +
- "​outlet.*" ​ // outlet-1, outlet-2, outletA, ... +
-+
- type zeroGradient;​ +
-+
- +
- "​nonSlipWall.*"​ +
-+
- type fixedValue;​ +
- value uniform (0 0 0); +
-+
- +
- "​slipWall.*" +
-+
- // 壁面スリップ条件 +
- type slip; +
-+
-+
- +
 ``` ```
- 
-その他便利な境界 
- 
-``` 
-boundaryField 
-{ 
- "​inlet.*"​ 
- { 
- // 表面法線方向速度 (※ 法線ベクトルが外側を向いていることがあるので注意) 
- type surfaceNormalFixedValue;​ 
- refValue uniform 10; // [m/s] 
- } 
- 
- "​volInlet.*"​ 
- { 
- // 体積流量 
- type flowRateInletVelocity;​ 
- volumetricFlowRate constant 2.5e-4; // [m3/s] 
- value uniform (0 0 0); 
- } 
- 
- "​flowRateInlet.*"​ 
- { 
- // 質量流量 
- type flowRateInletVelocity;​ 
- massFlowRate constant 2.5e-4; // [kg/s] 
- rhoInlet 1; / [kg/m3] 
- value uniform (0 0 0); 
- } 
- 
- "​turbulenceInlet.*"​ 
- { 
- // 乱れ付き速度境界 
- type turbulentInlet;​ 
- referenceField uniform (10 0 0); // 流速[m/s] 
- fluctuationScale (0.02 0.01 0.01); // 変動スケール 
- } 
-} 
- 
-``` 
- 
-## OpenFOAMにおける計算手順 (重要) 
- 
-- ヴァージョン 
- - v5.0 (2018-02-28 時点) 
- 
-- メッシング (商用メッシャーある?​ YES?NO?) 
- - (YES) 
- - fluentMeshToFoam 
- - ideasUnvToFoam... 
- - あったらやってない 
- - (NO)  <= これ 
- - blockMesh 
- - CAD + snappyHexMesh <= おそらくこれしたい 
- - SALOME 
- 
-- ソルバーの選択 
- - 非圧縮性ソルバー 
- - 定常 : simpleFoam <= これしかない 
- - 非定常 : pimpleFoam <= これしかない 
- 
- 
- 
- 
- 
- 
-こんだけ。非圧縮性ソルバー はそんなにない 
- 
- 
-- ケースの設定 
- - 0 <= フィールド変数 
- - U 
- - epsilon 
- - k 
- - nuTilda 
- - nut 
- - p 
- - constant 
- - polyMesh 
- - blockMeshDict 
- - turbulenceProperties <= 定常/​乱流モデルの設定 
- - (RASProperties) <= 非定常/​乱流モデルの設定 RANS 
- - (LESProperties) <= 非定常/​乱流モデルの設定 LES 
- 
- - system 
- - controlDict <= 計算の制御の設定 (時間幅、終了時刻等..) 
- - fvSchemes <​= 離散化スキームの設定 
- - fvSolutions <​= 代数方程式ソルバーの設定、SIMPLE(PISO)等の設定を含むファイル 
- 
-## まずは2つのチュートリアルで概要を把握する 
- 
-### バックステップ流れ pitzDaily [simpleFoam:​非圧縮製定常乱流ソルバー] 
- 
-- [説明資料 - スライド](http://​www.mech.iwate-u.ac.jp/​~hirose/​ockitatohoku/​ref/​wakashimasensei-text-3-1.pdf) 
- 
-``` 
-mkdir -p $FOAM_RUN // runディレクトリを作っておく。(もしないなら) 
-run // = cd $FOAM_RUN (便利) 
-cp -r $FOAM_TUTORIAL/​incompressible/​simpleFoam/​pitzDaily . 
-cd PitzDaily 
-blockMesh 
-simpleFoam 
-paraFoam 
-``` 
- 
-- 気づき 
- - コピーした時点ではconstantディレクトリにはメッシュ情報はなにもない. 
- blockMesh実行後に、constant/​polyMeshディレクトリが作成され、配下に、boundary,​faces,​neighbour,​ owner, pointsが生成されている. 
- 
- 
-### ミキシングエルボー その1 (定常計算) 
- 
-- [ミキシングエルボーの熱流動解析チュートリアルのケースファイル ダウンロード | 森北出版株式会社](http://​www.morikita.co.jp/​exclusive/​download/​1522) 
- 
-``` 
-cd steadyIsoThermal 
-blockMesh 
-surfaceFeaturExtract 
-snappyHexMesh -overwrite 
-createPatch -overwrite (v.4以降は不要) 
-paraFoam (メッシュの確認) 
- 
-foamJob simpleFoam (バックグラウンド実行) 
-tail -f log (ログ確認. "​End"​が計算終了合図) 
- 
-``` 
- 
-ログの確認 
- 
-``` 
-foamLog log  //​logsディレクトリができる 
- 
-gnuplot residual.gp 
-evince residual.eps 
-``` 
- 
-- triSurface/​mixing_elbow.stlが設置されている 
-- blockMeshを実行すると、メッシュが切られた直方体が作られた。 
-- surfaceFeatureExtractで特徴線を抽出 
- - つまり、stlの外形線をパスとしてだしている。constant/​extendedFeatureEdgeMeshの下に保存されている 
-- snappyHexMeshを実行すると、polyMeshの中身も増えた。また、triSurface/​mixing_elbow.eMeshができた! 
-- snappyHexMeshを実行すると、ミキシングエルボ内部のメッシュが切れた。外側はどうするのか?設定?​ 
-- foamLog logでlogsディレクトリに計算ログが出力 
-- 残差logのグラフを見たいがアプリが無く失敗。epsもイラレでみたが白紙. 
- 
-### ミキシングエルボー その2 (非定常熱計算) 
- 
-``` 
-cd constant 
-rm -rf polyMesh 
-ln -s ../​../​steadyIsothermal/​constant/​polyMesh 
-``` 
- 
-- メッシュは重たいので、steadyIsoThermalのconstat/​polyMeshにリンクを張ることで再利用 
- - (分かったこと) : constant/​triSurfaceは中間データだった.計算に利用しているのはpolyMeshの可能性がある 
- 
-``` 
-foamJob buoyantPimpleFoam 
- 
-// 並列の場合 
-decomposePar // 並列用に領域分割する 
-foamJob -p buoyantPimpleFoam // -pで並列実行 
-reconstructPar // 領域結合 
- 
-tail -f log //​途中経過確認 
- 
-paraFoam 
-``` 
- 
- 
- 
-## メッシュ生成 
- 
-- ツール 
--- 形状生成 : FreeCAD 
--- メッシング : snappyHexMesh,​ blockMesh, Netgen 
--- 形状生成 + メッシング : salome 
- 
- 
-## SnappyHexMesh 
- 
-``` 
-// どこのメッシュを残すかの場所を指定する 
-locationInMesh (0 0 0); 
- 
-``` 
- 
-``` 
-// メッシュの初期化 
-foamCleanPolyMesh 
-``` 
- 
-メッシュはきれいになる 
-``` 
-// 不要な境界の除去 
-createPatch -overwrite 
-``` 
- 
- 
-## OpenFOAMによる熱流体解析 
- 
- 
-## Q&A 
- 
-- Q: チュートリアルからコピーするだけでいいの?設定はどこまで変えていいの? 
-- Q: FoamFileのヘッダのヴァージョンは適当?​ 
- 
- 
-## 参考 
- 
-- [OpenFOAM® - Official ](https://​www.openfoam.com/​) 
-- [penguinFoam - GUIツール](http://​www.geocities.jp/​penguinitis2002/​study/​OpenFOAM/​penguinFoam/​penguinFoam-20170909.pdf) 
- 
-- [OpenFOAMによる熱移動と流れの数値解析 | 森北出版株式会社](http://​www.morikita.co.jp/​books/​book/​2779) 
-- [正誤表 | 森北出版株式会社](http://​www.morikita.co.jp/​exclusive/​download/​1601) 
- 
- 
- 
-## ParaViewで格子の表示 
- 
-``` 
-# vtk DataFile Version 2.0 
-grid.vtk 
-ASCII 
-DATASET POLYDATA 
-POINTS 8 float 
-                 ​3.2 ​                 1.5                  1.2 
-                 ​3.7 ​                 1.5                  1.2 
-                 ​3.7 ​                 1.5                  1.2 
-                 ​3.2 ​                 1.5                  1.2 
-                 ​3.2 ​                 2.1                  1.2 
-                 ​3.7 ​                 2.1                  1.2 
-                 ​3.7 ​                 2.1                  1.2 
-                 ​3.2 ​                 2.1                  1.2 
-POLYGONS 2 10 
-4 0 1 2 3  
-4 4 5 6 7  
-``` 
- 
- 
- 
- 
- 
- 
-## paraFoamでblockMeshの確認 
- 
- 
-``` 
-blockMesh 
-paraFoam -block 
-``` 
- 
-``` 
-FoamFile 
-{ 
-    version ​    2.0; 
-    format ​     ascii; 
-    class       ​dictionary;​ 
-    object ​     blockMeshDict;​ 
-} 
- 
-// x3^ 
-//   ​| ​ 
-//   |__ x1 
-//  / 
-// x2 
- 
-//  3____ 2 
-//  /|   /| 
-// /_0__/ |1 
-//7|    |6/ 
-// |____|/ 
-// 4    5 
- 
-//  __ 1 
-//    /| 
-// _2/ |0  ==> 外向きに右ねじの法則 
-// __|/ 
-//   3 
-// 
- 
-convertToMeters 1;​ //[m] 
- 
-vertices 
-( 
- (0 0 0) //0 
- (1 0 0) //1 
- (1 1 0) //2 
- (0 1 0) //3 
- (0 0 0.1) //4 
- (1 0 0.1) //5 
- (1 1 0.1) //6 
- (0 1 0.1) //7 
-); 
- 
-blocks 
-( 
- 
- hex (0 1 2 3 4 5 6 7) (40 40 10) simpleGrading (8 5 2) 
-  
- // 
- // simpleGrading (x1s x2s x3s) 
- // x*s : 分割幅の比率 (最後の分割幅)/​(最初の分割幅) 
- // edgeGrading(g0 g1 g2 g3 g4 g5 g6 g7 g8 g9 g10 g11) 
- // g* : 全ての辺に対する分割幅の比率 
- // 
-); 
- 
-edges 
-( 
-); 
- 
-// -*- Boundary Type -*- 
-// patch パッチ (入/​出境界) 
-// wall 壁 
-// symmetryPlane 対称面 
-// cyclic 周期境界 
-// cyclicAMI 不適合境界 
-// wedge 2次元軸対象 
-// empty 2次元問題 
- 
-boundary 
-( 
- top 
- { 
- type wall; 
- faces 
- ( 
- (3 7 6 2) 
- ); // カンマ必須 
- } 
- bottom 
- { 
- type wall; 
- faces 
- ( 
- (1 5 4 0) 
- ); 
- } 
- left 
- { 
- type wall; 
- faces 
- ( 
-            (0 4 7 3) 
- ); 
- } 
- right 
- { 
- type wall; 
- faces 
- ( 
- (2 6 5 1) 
- ); 
- } 
- frontAndBack 
- { 
- type empty; // 2次元問題 
- faces 
- ( 
-            (4 5 6 7) 
-            (0 3 2 1) 
- ); 
- 
- } 
-); 
- 
- 
-// mergePatchPairs 
-// {}; 
- 
- 
-``` 
- 
-変数宣言 
- 
-``` 
- 
-minx -0.00101; 
-maxx  0.05101; 
-miny -0.00601; 
-maxy  0.05601; 
-minz -0.01001; 
-maxz  0.05601; 
- 
-nx 52; 
-ny 32; 
-nz 56; 
- 
-vertices 
-( 
-    ($minx $miny $minz) 
-    ($maxx $miny $minz) 
-    ($maxx $maxy $minz) 
-    ($minx $maxy $minz) 
-    ($minx $miny $maxz) 
-    ($maxx $miny $maxz) 
-    ($maxx $maxy $maxz) 
-    ($minx $maxy $maxz) 
-); 
- 
-blocks 
-( 
-    hex (0 1 2 3 4 5 6 7) ($nx $ny $nz) simpleGrading (1 1 1) 
-); 
- 
- 
-``` 
- 
- 
- 
openfoam.1520514282.txt.gz · 最終更新: 2018/03/08 13:04 by fifi