FiFiWiki2

FiFiWikiの第2版

ユーザ用ツール

サイト用ツール


openfoam

差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
openfoam [2018/03/17 05:11]
fifi
openfoam [2018/04/10 08:38] (現在)
fifi [TIPS]
ライン 1: ライン 1:
  
 [[openfoam:​備忘録1]] [[openfoam:​備忘録1]]
 +
 +初めてのチュートリアルをまわしながらの作業メモ。
  
 [[openfoam:​備忘録2]] [[openfoam:​備忘録2]]
  
 +pimpleFoamでRASの計算をまわすためのテンプレート作成備忘録.
  
-# OpenFOAM+stlを読み込む外部流れのテンプレート
  
-- OpenFOAMでできること 
-  - 非圧縮性流体の定常/​非定常解析 <= これしたい 
-  - 圧縮性流体の定常/​非定常解析 
-  - 流体・個体伝熱解析 
-  - 混相流(VOF) 
  
-- 非圧縮性流体の定常/​非定常解析を目指す +TIPS 
- +(増えきたら備忘録にまとめる)
-## 乱流モデル +
- +
-定常(simpleFoam)と非定常(pimpleFoam)でも同じ +
- +
-constant/​turbulencePropertiesに、laminarかRASかLESかを選ぶ.その下書く設定を追記する。 +
- +
- +
- - 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 <= これしかない 
- 
-s 
- 
-こんだけ。非圧縮性ソルバーはそんなにない 
- 
- 
-- ケースの設定 
- - 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 
- 
-サンプルコード : OpenFOAM-5.x\applications\utilities\mesh\generation\snappyHexMesh 
- 
-- 以下のファイルが必要 
-  - system/​snappyHexMeshDict 
-  - system/​meshQualityDict 
- 
-``` 
-// どこのメッシュを残すかの場所を指定する 
-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 
-``` 
- 
-``` 
-/​*--------------------------------*- C++ -*----------------------------------*\ 
-| ========= ​                ​| ​                                                | 
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox ​          | 
-|  \\    /   O peration ​    | Version: ​ 5                                     | 
-|   ​\\ ​ /    A nd           | Web:      www.OpenFOAM.org ​                     | 
-|    \\/     M anipulation ​ |                                                 | 
-\*---------------------------------------------------------------------------*/​ 
-FoamFile 
-{ 
-    version ​    2.0; 
-    format ​     ascii; 
-    class       ​dictionary;​ 
-    object ​     blockMeshDict;​ 
-} 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 
- 
-convertToMeters 1; 
- 
-// 二次元はXY平面(X1,​X2) 
-//   ^ x2(y) 
-//   | 
-//   |__ x1(x) 
-//  / 
-// x3(z) 
- 
-//  4____ 5 
-//  /|   /| 
-// /_0__/ |1 
-//7|    |6/ 
-// |____|/ 
-// 3    2 
- 
-//  __ 1 
-//    /| 
-// _2/ |0  ==> 外向きに右ねじの法則 
-// __|/ 
-//   3 
-// 
- 
- 
-minx -0.15; 
-maxx  0.50; 
-miny -0.05; //​高さ方向 
-maxy  0.20; //​高さ方向 
-minz -0.15; 
-maxz  0.15; 
- 
-nx 60; 
-ny 30; 
-nz 30; 
- 
-vertices 
-( 
-    ($minx $miny $minz) // 0 
-    ($maxx $miny $minz) // 1 
-    ($maxx $maxy $minz) // 2 
-    ($minx $maxy $minz) // 3 
-    ($minx $miny $maxz) // 4 
-    ($maxx $miny $maxz) // 5 
-    ($maxx $maxy $maxz) // 6 
-    ($minx $maxy $maxz) // 7 
-); 
- 
-blocks 
-( 
-    hex (0 1 2 3 4 5 6 7) ($nx $ny $nz) simpleGrading (1 1 1) 
-); 
- 
-edges 
-( 
-); 
- 
-// -*- Boundary Type -*- 
-// patch パッチ (入/​出境界) 
-// wall 壁 
-// symmetryPlane 対称面 
-// cyclic 周期境界 
-// cyclicAMI 不適合境界 
-// wedge 2次元軸対象 
-// empty 2次元問題 
- 
-boundary 
-( 
- 
- upperWall 
- { 
- type wall; 
- faces 
- ( 
- (3 7 6 2) 
- ); // カンマ必須 
- } 
- lowerWall 
- { 
- type wall; 
- faces 
- ( 
- (1 5 4 0) 
- ); 
- } 
- inlet 
- { 
- type patch; 
- faces 
- ( 
-    (0 4 7 3) 
- ); 
- } 
- outlet 
- { 
- type patch; 
- faces 
- ( 
- (2 6 5 1) 
- ); 
- } 
- 
- frontAndBack 
- { 
- type wall; 
- 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) 
-); 
- 
- 
-``` 
- 
- 
- 
-# snappyHexMeshDict 
- 
-``` 
-/​*--------------------------------*- C++ -*----------------------------------*\ 
-| ========= ​                ​| ​                                                | 
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox ​          | 
-|  \\    /   O peration ​    | Version: ​ 5                                     | 
-|   ​\\ ​ /    A nd           | Web:      www.OpenFOAM.org ​                     | 
-|    \\/     M anipulation ​ |                                                 | 
-\*---------------------------------------------------------------------------*/​ 
-FoamFile 
-{ 
-    version ​    2.0; 
-    format ​     ascii; 
-    class       ​dictionary;​ 
-    object ​     snappyHexMeshDict;​ 
-} 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 
- 
-// Which of the steps to run 
-castellatedMesh true; 
-snap            true; 
-addLayers ​      ​false;​ 
- 
- 
-//Optional: single region surfaces get patch names according to 
-//          surface only. Multi-region surfaces get patch name 
-//          surface "_ "​region. Default is true 
-//​singleRegionName false; 
- 
- 
-//Optional: preserve all generated patches. Default is to remove 
-//          zero-sized patches. 
-//​keepPatches true; 
- 
- 
-// Geometry. Definition of all surfaces. All surfaces are of class 
-// searchableSurface. 
-// Surfaces are used 
-// - to specify refinement for any mesh cell intersecting it 
-// - to specify refinement for any mesh cell inside/​outside/​near 
-// - to '​snap'​ the mesh boundary to the surface 
-geometry 
-{ 
-    box1x1x1 
-    { 
-        type searchableBox;​ 
-        min (1.5 1 -0.5); 
-        max (3.5 2 0.5); 
-    } 
- 
-    sphere 
-    { 
-        type triSurfaceMesh;​ 
-        file "​sphere.stl"​ 
- 
-        //​tolerance ​  ​1E-5; ​  // optional:​non-default tolerance on intersections 
-        //​maxTreeDepth 10;    // optional:​depth of octree. Decrease only in case 
-                              // of memory limitations. 
- 
-        // Per region the patchname. If not provided will be <​surface>​_<​region>​. 
-        // Note: this name cannot be used to identity this region in any 
-        //       other part of this dictionary; it is only a name 
-        //       for the combination of surface+region (which is only used 
-        //       when creating patches) 
-        regions 
-        { 
-            secondSolid 
-            { 
-                name mySecondPatch;​ 
-            } 
-        } 
-    } 
- 
-    sphere2 
-    { 
-        type searchableSphere;​ 
-        centre ​ (1.5 1.5 1.5); 
-        radius ​ 1.03; 
-    } 
-}; 
- 
-// Settings for the castellatedMesh generation. 
-castellatedMeshControls 
-{ 
- 
-    // Refinement parameters 
-    // ~~~~~~~~~~~~~~~~~~~~~ 
- 
-    // If local number of cells is >= maxLocalCells on any processor 
-    // switches from from refinement followed by balancing 
-    // (current method) to (weighted) balancing before refinement. 
-    maxLocalCells 100000; 
- 
-    // Overall cell limit (approximately). Refinement will stop immediately 
-    // upon reaching this number so a refinement level might not complete. 
-    // Note that this is the number of cells before removing the part which 
-    // is not '​visible'​ from the keepPoint. The final number of cells might 
-    // actually be a lot less. 
-    maxGlobalCells 2000000; 
- 
-    // The surface refinement loop might spend lots of iterations refining just a 
-    // few cells. This setting will cause refinement to stop if <= minimumRefine 
-    // are selected for refinement. Note: it will at least do one iteration 
-    // (unless the number of cells to refine is 0) 
-    minRefinementCells 0; 
- 
-    // Allow a certain level of imbalance during refining 
-    // (since balancing is quite expensive) 
-    // Expressed as fraction of perfect balance (= overall number of cells / 
-    // nProcs). 0=balance always. 
-    maxLoadUnbalance 0.10; 
- 
-    // Number of buffer layers between different levels. 
-    // 1 means normal 2:1 refinement restriction,​ larger means slower 
-    // refinement. 
-    nCellsBetweenLevels 1; 
- 
- 
-    // Explicit feature edge refinement 
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
- 
-    // Specifies a level for any cell intersected by explicitly provided 
-    // edges. 
-    // This is a featureEdgeMesh,​ read from constant/​triSurface for now. 
-    // Specify '​levels'​ in the same way as the '​distance'​ mode in the 
-    // refinementRegions (see below). The old specification 
-    //      level   2; 
-    // is equivalent to 
-    //      levels ​ ((0 2)); 
- 
-    features 
-    ( 
-        //{ 
-        //    file "​someLine.eMesh";​ 
-        //    //level 2; 
-        //    levels ((0.0 2) (1.0 3)); 
-        //} 
-    ); 
- 
- 
-    // Surface based refinement 
-    // ~~~~~~~~~~~~~~~~~~~~~~~~ 
- 
-    // Specifies two levels for every surface. The first is the minimum level, 
-    // every cell intersecting a surface gets refined up to the minimum level. 
-    // The second level is the maximum level. Cells that '​see'​ multiple 
-    // intersections where the intersections make an 
-    // angle > resolveFeatureAngle get refined up to the maximum level. 
- 
-    refinementSurfaces 
-    { 
-        sphere 
-        { 
-            // Surface-wise min and max refinement level 
-            level (2 2); 
- 
-            // Optional region-wise level specification 
-            regions 
-            { 
-                secondSolid 
-                { 
-                    level (3 3); 
-                } 
-            } 
- 
-            // Optional specification of patch type (default is wall). No 
-            // constraint types (cyclic, symmetry) etc. are allowed. 
-            patchInfo 
-            { 
-                type patch; 
-                inGroups (meshedPatches);​ 
-            } 
- 
- 
-            //- Optional increment (on top of max level) in small gaps 
-            //​gapLevelIncrement 2; 
- 
-            //- Optional angle to detect small-large cell situation 
-            //  perpendicular to the surface. Is the angle of face w.r.t. 
-            //  the local surface normal. Use on flat(ish) surfaces only. 
-            //  Otherwise leave out or set to negative number. 
-            //​perpendicularAngle 10; 
- 
-            //- Optional faceZone and (for closed surface) cellZone with 
-            //  how to select the cells that are in the cellZone 
-            //  (inside / outside / specified insidePoint) 
-            //  The orientation of the faceZone is 
-            //  - if on cellZone(s) : point out of (maximum) cellZone 
-            //  - if freestanding ​  : oriented according to surface 
- 
-            //faceZone sphere; 
-            //cellZone sphere; 
-            //​cellZoneInside inside; ​ //​outside/​insidePoint 
- 
-            //- Optional specification of what to do with faceZone faces: 
-            //      internal : keep them as internal faces (default) 
-            //      baffle ​  : create baffles from them. This gives more 
-            //                 ​freedom in mesh motion 
-            //      boundary : create free-standing boundary faces (baffles 
-            //                 but without the shared points) 
-            //faceType baffle; 
-        } 
-    } 
- 
-    // Feature angle: 
-    // - used if min and max refinement level of a surface differ 
-    // - used if feature snapping (see snapControls below) is used 
-    resolveFeatureAngle 30; 
- 
-    //- Optional increment (on top of max level) in small gaps 
-    //​gapLevelIncrement 2; 
- 
- 
-    // Planar angle: 
-    // - used to determine if surface normals 
-    //   are roughly the same or opposite. Used 
-    //      - in proximity refinement 
-    //      - to decide when to merge free-standing baffles 
-    //        (if e.g. running in surfaceSimplify mode set this to 180 to 
-    //         merge all baffles) 
-    //      - in snapping to avoid snapping to nearest on '​wrong'​ side 
-    //        of thin gap 
-    // 
-    // If not specified same as resolveFeatureAngle 
-    planarAngle 30; 
- 
- 
-    // Region-wise refinement 
-    // ~~~~~~~~~~~~~~~~~~~~~~ 
- 
-    // Specifies refinement level for cells in relation to a surface. One of 
-    // three modes 
-    // - distance. '​levels'​ specifies per distance to the surface the 
-    //   ​wanted refinement level. The distances need to be specified in 
-    //   ​increasing order. 
-    // - inside. '​levels'​ is only one entry and only the level is used. All 
-    //   cells inside the surface get refined up to the level. The surface 
-    //   needs to be closed for this to be possible. 
-    // - outside. Same but cells outside. 
- 
-    refinementRegions 
-    { 
-        box1x1x1 
-        { 
-            mode inside; 
-            levels ((1.0 4)); 
-        } 
-        //sphere 
-        //{ 
-        //    mode distance; 
-        //    levels ((1.0 5) (2.0 3)); 
-        //} 
-    } 
- 
-    // Mesh selection 
-    // ~~~~~~~~~~~~~~ 
- 
-    // After refinement patches get added for all refinementSurfaces and 
-    // all cells intersecting the surfaces get put into these patches. The 
-    // section reachable from the locationInMesh is kept. 
-    // NOTE: This point should never be on a face, always inside a cell, even 
-    // after refinement. 
-    locationInMesh (5 0.28 0.43); 
- 
-    // Whether any faceZones (as specified in the refinementSurfaces) 
-    // are only on the boundary of corresponding cellZones or also allow 
-    // free-standing zone faces. Not used if there are no faceZones. 
-    allowFreeStandingZoneFaces true; 
- 
- 
-    // Optional: do not remove cells likely to give snapping problems 
-    // handleSnapProblems false; 
- 
-    // Optional: switch off topological test for cells to-be-squashed 
-    //           and use geometric test instead 
-    //​useTopologicalSnapDetection false; 
-} 
- 
-// Settings for the snapping. 
-snapControls 
-{ 
-    // Number of patch smoothing iterations before finding correspondence 
-    // to surface 
-    nSmoothPatch 3; 
- 
-    // Maximum relative distance for points to be attracted by surface. 
-    // True distance is this factor times local maximum edge length. 
-    // Note: changed(corrected) w.r.t 17x! (17x used 2* tolerance) 
-    tolerance 2.0; 
- 
-    // Number of mesh displacement relaxation iterations. 
-    nSolveIter 30; 
- 
-    // Maximum number of snapping relaxation iterations. Should stop 
-    // before upon reaching a correct mesh. 
-    nRelaxIter 5; 
- 
-    // Feature snapping 
- 
-        // Number of feature edge snapping iterations. 
-        // Leave out altogether to disable. 
-        nFeatureSnapIter 10; 
- 
-        // Detect (geometric only) features by sampling the surface 
-        // (default=false). 
-        implicitFeatureSnap false; 
- 
-        // Use castellatedMeshControls::​features (default = true) 
-        explicitFeatureSnap true; 
- 
-        // Detect features between multiple surfaces 
-        // (only for explicitFeatureSnap,​ default = false) 
-        multiRegionFeatureSnap false; 
- 
- 
-    // wip: disable snapping to opposite near surfaces (revert to 22x behaviour) 
-    // detectNearSurfacesSnap false; 
-} 
- 
-// Settings for the layer addition. 
-addLayersControls 
-{ 
-    // Are the thickness parameters below relative to the undistorted 
-    // size of the refined cell outside layer (true) or absolute sizes (false). 
-    relativeSizes true; 
- 
-    // Layer thickness specification. This can be specified in one of following 
-    // ways: 
-    // - expansionRatio and finalLayerThickness (cell nearest internal mesh) 
-    // - expansionRatio and firstLayerThickness (cell on surface) 
-    // - overall thickness and firstLayerThickness 
-    // - overall thickness and finalLayerThickness 
-    // - overall thickness and expansionRatio 
-    // 
-    // Note: the mode thus selected is global, i.e. one cannot override the 
-    //       mode on a per-patch basis (only the values can be overridden) 
- 
-        // Expansion factor for layer mesh 
-        expansionRatio 1.0; 
- 
-        // Wanted thickness of the layer furthest away from the wall. 
-        // If relativeSizes this is relative to undistorted size of cell 
-        // outside layer. 
-        finalLayerThickness 0.3; 
- 
-        // Wanted thickness of the layer next to the wall. 
-        // If relativeSizes this is relative to undistorted size of cell 
-        // outside layer. 
-        //​firstLayerThickness 0.3; 
- 
-        // Wanted overall thickness of layers. 
-        // If relativeSizes this is relative to undistorted size of cell 
-        // outside layer. 
-        //thickness 0.5 
- 
- 
-    // Minimum overall thickness of total layers. If for any reason layer 
-    // cannot be above minThickness do not add layer. 
-    // If relativeSizes this is relative to undistorted size of cell 
-    // outside layer.. 
-    minThickness 0.25; 
- 
- 
-    // Per final patch (so not geometry!) the layer information 
-    // Note: This behaviour changed after 21x. Any non-mentioned patches 
-    //       now slide unless: 
-    //          - nSurfaceLayers is explicitly mentioned to be 0. 
-    //          - angle to nearest surface < slipFeatureAngle (see below) 
-    layers 
-    { 
-        sphere_firstSolid 
-        { 
-            nSurfaceLayers 1; 
- 
-        } 
-        maxY 
-        { 
-            nSurfaceLayers 1; 
-            // Per patch layer data 
-            expansionRatio ​     1.3; 
-            finalLayerThickness 0.3; 
-            minThickness ​       0.1; 
-        } 
- 
-        // Disable any mesh shrinking and layer addition on any point of 
-        // a patch by setting nSurfaceLayers to 0 
-        frozenPatches 
-        { 
-            nSurfaceLayers 0; 
-        } 
-    } 
- 
-    // If points get not extruded do nGrow layers of connected faces that are 
-    // also not grown. This helps convergence of the layer addition process 
-    // close to features. 
-    // Note: changed(corrected) w.r.t 17x! (didn'​t do anything in 17x) 
-    nGrow 0; 
- 
-    // Advanced settings 
- 
- 
-    // Static analysis of starting mesh 
- 
-        // When not to extrude surface. 0 is flat surface, 90 is when two faces 
-        // are perpendicular 
-        featureAngle 130; 
- 
-        // Stop layer growth on highly warped cells 
-        maxFaceThicknessRatio 0.5; 
- 
- 
-    // Patch displacement 
- 
-        // Number of smoothing iterations of surface normals 
-        nSmoothSurfaceNormals 1; 
- 
-        // Smooth layer thickness over surface patches 
-        nSmoothThickness 10; 
- 
- 
- 
-    // Medial axis analysis 
- 
-        // Angle used to pick up medial axis points 
-        // Note: changed(corrected) w.r.t 17x! 90 degrees corresponds to 130 
-        // in 17x. 
-        minMedialAxisAngle 90; 
- 
-        // Reduce layer growth where ratio thickness to medial 
-        // distance is large 
-        maxThicknessToMedialRatio 0.3; 
- 
-        // Number of smoothing iterations of interior mesh movement direction 
-        nSmoothNormals 3; 
- 
-        // Optional: limit the number of steps walking away from the surface. 
-        // Default is unlimited. 
-        //​nMedialAxisIter 10; 
- 
-        // Optional: smooth displacement after medial axis determination. 
-        // default is 0. 
-        //​nSmoothDisplacement 90; 
- 
-        // (wip)Optional:​ do not extrude a point if none of the surrounding points is 
-        // not extruded. Default is false. 
-        //​detectExtrusionIsland true; 
- 
- 
-    // Mesh shrinking 
- 
-        // Optional: at non-patched sides allow mesh to slip if extrusion 
-        // direction makes angle larger than slipFeatureAngle. Default is 
-        // 0.5*featureAngle. 
-        slipFeatureAngle 30; 
- 
-        // Maximum number of snapping relaxation iterations. Should stop 
-        // before upon reaching a correct mesh. 
-        nRelaxIter 5; 
- 
-        // Create buffer region for new layer terminations 
-        nBufferCellsNoExtrude 0; 
- 
-        // Overall max number of layer addition iterations. The mesher will 
-        // exit if it reaches this number of iterations; possibly with an 
-        // illegal mesh. 
-        nLayerIter 50; 
- 
-        // Max number of iterations after which relaxed meshQuality controls 
-        // get used. Up to nRelaxedIter it uses the settings in 
-        // meshQualityControls,​ 
-        // after nRelaxedIter it uses the values in 
-        // meshQualityControls::​relaxed. 
-        nRelaxedIter 20; 
- 
-        // Additional reporting: if there are just a few faces where there 
-        // are mesh errors (after adding the layers) print their face centres. 
-        // This helps in tracking down problematic mesh areas. 
-        //​additionalReporting true; 
-} 
- 
-// Generic mesh quality settings. At any undoable phase these determine 
-// where to undo. 
-meshQualityControls 
-{ 
-    // Specify mesh quality constraints in separate dictionary so can 
-    // be reused (e.g. checkMesh -meshQuality) 
-    #include "​meshQualityDict"​ 
- 
- 
-    // Optional : some meshing phases allow usage of relaxed rules. 
-    // See e.g. addLayersControls::​nRelaxedIter. 
-    relaxed 
-    { 
-        // Maximum non-orthogonality allowed. Set to 180 to disable. 
-        maxNonOrtho 75; 
-    } 
- 
- 
-    // Advanced 
- 
-        // Number of error distribution iterations 
-        nSmoothScale 4; 
-        // amount to scale back displacement at error points 
-        errorReduction 0.75; 
-} 
- 
-// Advanced 
- 
-//// Debug flags 
-//​debugFlags 
-//( 
-//    mesh            // write intermediate meshes 
-//    intersections ​  // write current mesh intersections as .obj files 
-//    featureSeeds ​   // write information about explicit feature edge 
-//                    // refinement 
-//    attraction ​     // write attraction as .obj files 
-//    layerInfo ​      // write information about layers 
-//); 
-// 
-//// Write flags 
-//​writeFlags 
-//( 
-//    scalarLevels ​   // write volScalarField with cellLevel for postprocessing 
-//    layerSets ​      // write cellSets, faceSets of faces in layer 
-//    layerFields ​    // write volScalarField for layer coverage 
-//); 
- 
-// Merge tolerance. Is fraction of overall bounding box of initial mesh. 
-// Note: the write tolerance needs to be higher than this. 
-mergeTolerance 1e-6; 
- 
-// ************************************************************************* // 
- 
-``` 
- 
- 
-# meshQualityDict 
- 
-``` 
- 
-/​*--------------------------------*- C++ -*----------------------------------*\ 
-| ========= ​                ​| ​                                                | 
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox ​          | 
-|  \\    /   O peration ​    | Version: ​ 5                                     | 
-|   ​\\ ​ /    A nd           | Web:      www.OpenFOAM.org ​                     | 
-|    \\/     M anipulation ​ |                                                 | 
-\*---------------------------------------------------------------------------*/​ 
-FoamFile 
-{ 
-    version ​    2.0; 
-    format ​     ascii; 
-    class       ​dictionary;​ 
-    object ​     meshQualityDict;​ 
-} 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 
- 
-// Include defaults parameters from master dictionary 
-#include "​$WM_PROJECT_DIR/​etc/​caseDicts/​meshQualityDict"​ 
- 
- 
-// ************************************************************************* // 
- 
-``` 
- 
openfoam.1521263474.txt.gz · 最終更新: 2018/03/17 05:11 by fifi