Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OpenFOAM_ミキシングエルボー

 OpenFOAM_ミキシングエルボー

kamakiri1225

August 29, 2020
Tweet

More Decks by kamakiri1225

Other Decks in Technology

Transcript

  1. 目次 1. 概要 2. ミキシングエルボー 3. メッシュデータ作成 • モデル形状作成 •

    メッシュ作成 4. 解析設定(bouyantPimpleFoam) • 計算実行 • 結果処理 5. メッシュ依存性検証 6. まとめ
  2. 概要 スタート 単相流? 温度計算? 温度計算大? 定常? 定常? 定常? buoyantSimpleFoam buoyantPimpleFoam

    simpleFoam pimpleFoam buoyantBoussinesqSimpleFoam buoyantBoussinesqPimpleFoam interFoam yes yes yes yes no no no no yes no yes no 本資料は以下の のソルバーを用いて計算する。 非圧縮流体 非圧縮流体 圧縮流体 圧縮流体
  3. Bodyを面に分割(下矢 印2回押す) この面はまとめたいので 上矢印でまとめる(名前 をside1) in1 out side2 in2 名前をつける

    必要な面のみマクロでstlファ イルを出力する(※不必要な body、軸などはエラーになる ため非表示にする) 不必要 必要 正しくstlファイルが出 力されれば中身はこの ように記述される
  4. /*--------------------------------*- C++ -*----------------------------------*¥ | ========= | | | ¥¥ /

    F ield | cfMesh: A library for mesh generation | | ¥¥ / O peration | | | ¥¥ / A nd | Author: Franjo Juretic | | ¥¥/ M anipulation | E-mail: [email protected] | ¥*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; location "system"; object meshDict; } cfMesh /system/meshDict 続く・・・
  5. /system/meshDict cfMesh surfaceFile "mixing_elbow.stl"; maxCellSize 1.0; localRefinement { side2 //hosoi

    { cellSize 0.5; } } boundaryLayers { patchBoundaryLayers { side1 //hutoi { maxFirstLayerThickness 1.0; nLayers 3; thicknessRatio 1.2; allowDiscontinuity 0; } side2 //hosoi { maxFirstLayerThickness 0.5; nLayers 3; thicknessRatio 1.2; allowDiscontinuity 0; } } 続く・・・ 形状データ「mixing_elbow.stl 最大セルサイズ 局所的なセルサイズ 「side2」のみセルサイズを0.5 にする。 境界のレイヤー層の指定 メッシュサイズ レイヤー層 厚みの成長率
  6. cfMesh renameBoundary { defaultName side; defaultType wall; /system/meshDict newPatchNames {

    in1 { newName in1; type patch; } in2 { newName in2; type patch; } out { newName out; type patch; } } } デフォルトの境界の名前とタイプを指定 Newパッチ名とタイプを指定 optimiseLayer 1; optimisationParameters { nSmoothNormals 5; maxNumIterations 5; featureSizeFactor 0.3; reCalculateNormals 1; relThicknessTol 0.1; } }
  7. OpenFOAM ソルバー 分類 ソルバー 非圧縮流体 icoFoam 非定常層流解析ソルバー simpleFoam 定常乱流解析ソルバー pisoFoam

    非定常乱流解析ソルバー pimpleFoam 非定常乱流解析ソルバー (simple法+piso法) 圧縮流体 buoyantBoussinesqPimpleFoam 非定常熱流動解析ソルバー Boussinesq近似 buoyantPimpleFoam 非定常熱流動解析ソルバー 温度変化大きい 流体を数学的に取り扱う場合,密度変化の小さな流体を非圧縮性流体 (incompressible fluid) として扱う.一方,密度変化を無視できない場合は圧縮性流体 (compressible fluid) とする. 一般的に,速度がマッハ数 0.3 以下 (密度変化が 5 %以下) であれば非 圧縮性流体とみなされ る. OpenFOAM では,温度を扱う場合は一般に圧縮性流体として扱われる.熱物性 (thermophysical properties) を扱えるのは圧縮性流体ソルバーだけである。
  8. 概要 スタート 単相流? 温度計算? 温度計算大? 定常? 定常? 定常? buoyantSimpleFoam buoyantPimpleFoam

    simpleFoam pimpleFoam buoyantBoussinesqSimpleFoam buoyantBoussinesqPimpleFoam interFoam yes yes yes yes no no no no yes no yes no 本資料は以下の のソルバーを用いて計算する。 非圧縮流体 非圧縮流体 圧縮流体 圧縮流体
  9. buoyantPimpleFoam Allrun スクリプトを確認 •blocMeshの実行 •Tファイルをコピー作成 •setFieldで特定領域に物理量を設定している ※setFields の設定は system/ setFieldsDict

    ファイルに記述 setFieldsディクショナリによって,選択され たセル・パッチのセット 上に値を設定する。 cd ${0%/*} || exit 1 ※変数は参照する時に${変数名} ※||はひとつめのコマンドが実行できなかった 場合に実行する。 exit 1:エラー終了 •application:system/cotrolDictに変数定義 参考 http://eddy.pu- toyama.ac.jp/%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3CAE%E5%8B%89%E5%BC% B7%E4%BC%9A- %E5%AF%8C%E5%B1%B1/?action=cabinet_action_main_download&block_id=99&room_id=1&cab inet_id=1&file_id=154&upload_id=288 カレントディレクトリに $WM_PROJECT_DIR/bin/tools/Run Functionsを読み込む 関数runApplication, getApplication を使用するため
  10. buoyantPimpleFoam ファイル構成 速度 温度 乱流エネルギー消散率 乱流エネルギー 乱流粘性係数 圧力 静水圧を引いた圧力 時刻によって不変な設定ディレクトリ

    メッシュ情報のディレクトリ 重力加速度 輸送方程式 乱流モデルの設定 blockMeshでメッシュ作成の際に使う 実行制御の設定 離散化スキームの設定 解放の設定 特定領域に物理量を設定 乱流拡散率 初期状態の設定ディレクトリ
  11. buoyantPimpleFoam 解析条件 in1 side in2 out ➢side: •壁面(non-slip) •温度勾配0 ➢In1:

    •0.2m/s、20℃ •大気圧101.325kPa ➢In2: •1.0m/s、40℃ •大気圧101.325kPa ⚫流体:空気 ⚫モル質量:28.9kg ⚫定圧比熱:1000 ⚫粘性係数μ:1.8e-5 ⚫プラントル数:0.7 ➢out: •大気圧101.325kPa •速度勾配0 •温度勾配0
  12. buoyantPimpleFoam FoamFile { version 2.0; format ascii; class uniformDimensionedVectorField; location

    "constant"; object g; } dimensions [0 1 -2 0 0 0 0]; value (0 0 -9.81); Constant/g [kg m s K mol A cd] 一様ベクトル 定数 z方向-9.81m/s2 重力加速度 完全気体(理想気体)の状態方程式を用いるため、温度変化により密度が 変化し、浮力が効く。
  13. buoyantPimpleFoam FoamFile { version 2.0; format ascii; class dictionary; location

    "constant"; object thermophysicalProperties; } thermoType { type heRhoThermo; mixture pureMixture; transport const; thermo hConst; equationOfState perfectGas; specie specie; energy sensibleEnthalpy; } constant/thermophysicalProperties 物性の種類 物性値の設定 熱物理モデル 化学種の扱い 完全気体 化学種 pRef 101325; mixture { specie { nMoles 1; molWeight 28.9; } thermodynamics { Cp 1000; Hf 0; } transport { mu 1.8e-05; Pr 0.7; } } 1mol mol質量 定圧比熱 ※混合ガスなので、P=ρRTのRは分子量 で割られた気体定数 参照圧力 粘性係数μ[Pa-s(m/s2)] 粘性係数は単位速度勾配あたりに 生じるせん断応力の大きさを示し たもの。 動粘性係数の単位[m2/s]面積速度 プラントル数 標準生成エンタルピー [kg/J]
  14. buoyantPimpleFoam FoamFile { version 2.0; format ascii; class dictionary; location

    "constant"; object turbulenceProperties; } simulationType RAS; RAS { RASModel kEpsilon; turbulence on; printCoeffs on; } constant/ turbulenceProperties 乱流のタイプ:RANS 乱流モデルの設定 laminar 層流 kEpsilon 標準k-εモデル RNGkEpsilon RNG k-εモデル realizableKE Realizable k-εモデル kOmega 標準 k-ωモデル kOmegaSST SST k-εモデル LRR Launder-Reece-Robi RSTM (レイノルズ応力輸送モデル) OpenFOAM RANSモデル RANSのモデルの中の解き方 2方程式(k-εモデル) ※RANSモデルはレイノルズ平均をベースにしているので、詳 細な非定常流れの再現には向かない。 ※標準k-εモデルは、単純で計算しやすいので大まかな流れの 再現には向いている。 ※ k-ε系統(渦粘性モデル)は乱れの等方性を仮定しているた、 非等方性には向かない(曲がりや旋回、剥離など)。 →RSTMは乱れの非等方性を考慮できるが、方程式の数が増え るので計算時間がk-εモデルの約3倍かかる。 →もっと精度を考慮したい場合は、LESモデルが良いが、さら に計算時間がかかることに注意。 ※k-εモデルは十分発達した乱流を想定しているため、局所的 に低レイノルズ数流れの場合には向かない。→低レイノルズ型 乱流モデルを使う方が良い。 Smagorinsky Smagorinskyモデル homogeneousDynSmagorinsky ダミナミックSmagorinskyモデル oneEqEddy 1方程式 dynOneEqEddy 局所化ダミナミック1方程式 (Kim-Menon) OpenFOAM LESモデル 乱流モデルにLESモデルを使用する場合は、以下の 解き方が選択できる。
  15. buoyantPimpleFoam FoamFile { version 2.0; format ascii; class volVectorField; object

    U; } dimensions [0 1 -1 0 0 0 0]; internalField uniform (0 0 0); boundaryField { side { type fixedValue; value uniform (0 0 0); } in1 { type fixedValue; value uniform (0.2 0 0); } in2 { type fixedValue; value uniform (0 0 1); } out { type zeroGradient; } } 0/U [kg m s K mol A cd] ベクトル 境界条件 non-slip条件 流速:x方向0.2m/s 流速:z方向1.0m/s ノイマン条件 速度勾配0 patch パッチ wall 壁 symmetryPlane 対象面 cyclic 周期境界 cyclicAMI 不整合周期境界 wedge 2次元軸対象 empty 2次元 OpenFOAM境界層のタイプ フィールド内部の値を設定 速度
  16. buoyantPimpleFoam FoamFile { version 2.0; format ascii; class volScalarField; object

    p_rgh; } dimensions [1 -1 -2 0 0 0 0]; internalField uniform 101325; boundaryField { side { type fixedFluxPressure; value $internalField; } in1 { type fixedFluxPressure; value $internalField; } in2 { type fixedFluxPressure; value $internalField; } out { type fixedFluxPressure; value $internalField; } } 0/p_rgh [kg m s K mol A cd] スカラー 境界条件 大気圧 大気圧 大気圧 大気圧 静水圧を引いた圧力 フィールド内部の値を設定
  17. buoyantPimpleFoam FoamFile { version 2.0; format ascii; class volScalarField; object

    p; } dimensions [1 -1 -2 0 0 0 0]; internalField uniform 101325; boundaryField { side { type calculated; value $internalField; } in1 { type calculated; value $internalField; } in2 { type calculated; value $internalField; } out { type calculated; value $internalField; } } 0/p [kg m s K mol A cd] フィールド内部の値を設定 スカラー 境界条件 P_rghより自動的に計算される 全圧 P_rghより自動的に計算される P_rghより自動的に計算される P_rghより自動的に計算される
  18. buoyantPimpleFoam FoamFile { version 2.0; format ascii; class volScalarField; object

    T; } dimensions [0 0 0 1 0 0 0]; internalField uniform 293; boundaryField { side { type zeroGradient; } in1 { type fixedValue; value uniform 293; } in2 { type fixedValue; value uniform 313; } out { type zeroGradient; } } 0/T [kg m s K mol A cd] スカラー 境界条件 温度勾配0 温度 20℃ 40℃ 温度勾配0 フィールド内部の値を設定
  19. buoyantPimpleFoam FoamFile { version 2.0; format ascii; class volScalarField; location

    "0"; object k; } dimensions [0 2 -2 0 0 0 0]; internalField uniform 0.00015; // U = 0.2; boundaryField { side { type kqRWallFunction; value $internalField; } in1 { type turbulentIntensityKineticEnergyInlet; intensity 0.05; // 5% value $internalField; } in2 { type turbulentIntensityKineticEnergyInlet; intensity 0.05; // 5% value $internalField; } out { type zeroGradient; } } 0/k [kg m s K mol A cd] スカラー 境界条件 壁関数 乱流エネルギー 乱流強度5% 乱流エネルギー勾配0 フィールド内部の値を設定 k=(3/2)(UI)^2=0.00015 乱流強度I=0.05(5%)としている。 乱流強度5% 乱流強度から入口のkを計算 乱流強度から入口のkを計算 https://www.cfd-online.com/Wiki/Turbulence_free-stream_boundary_conditions kを直接指定するのではなく、 乱流強度から入口のkを計算 させる。
  20. buoyantPimpleFoam FoamFile { version 2.0; format ascii; class volScalarField; object

    epsilon; } dimensions [0 2 -3 0 0 0 0]; internalField uniform 0.000431; boundaryField { side { type epsilonWallFunction; Cmu 0.09; kappa 0.41; E 9.8; value $internalField; } in1 { type turbulentMixingLengthDissipationRateInlet; mixingLength 0.0007; phi phi; k k; value $internalField; } in2 { type turbulentMixingLengthDissipationRateInlet; mixingLength 0.00035; phi phi; k k; value $internalField; } out { type zeroGradient; } } 0/epsilon [kg m s K mol A cd] スカラー 境界条件 壁関数 乱流消散エネルギー フィールド内部の値を設定 Ε=Cmu^(3/4)k^(3/2)/l lは混合長 Cmuは通常0.09が使われる。 l=0.07L(L:代表長さ) 壁関数の定数 混合長から入口のεを計算 https://www.cfd-online.com/Wiki/Turbulence_free-stream_boundary_conditions εをするのではなく、混合長 から入口のεを計算させる。 壁関数 混合長から入口のεを計算 l=0.07L=0.07*0.01 10mmの径 l=0.07L=0.07*0.005 5mmの径 勾配0
  21. buoyantPimpleFoam FoamFile { version 2.0; format ascii; class volScalarField; object

    nut; } dimensions [0 2 -1 0 0 0 0]; internalField uniform 0; boundaryField { side { type nutkWallFunction; Cmu 0.09; kappa 0.41; E 9.8; value uniform 0; } in1 { type calculated; value $internalField; } in2 { type calculated; value $internalField; } out { type calculated; value $internalField; } } 0/nut [kg m s K mol A cd] スカラー 境界条件 渦粘性係数 https://www.cfd-online.com/Wiki/Turbulence_free-stream_boundary_conditions 壁関数型より計算 nut=Cmu*k^2/ε Cmu=0.09から計算
  22. buoyantPimpleFoam System/ fvSolution ソルバー設定 FoamFile { version 2.0; format ascii;

    class dictionary; location "system"; object fvSolution; } solvers { "rho.*" { solver PCG; preconditioner DIC; tolerance 0; relTol 0; } p_rgh { solver PCG; preconditioner DIC; tolerance 1e-8; relTol 0.01; } p_rghFinal { $p_rgh; relTol 0; } "(U|h|e|k|epsilon|R)" { solver PBiCG; preconditioner DILU; tolerance 1e-6; relTol 0.1; } "(U|h|e|k|epsilon|R)Final" { $U; relTol 0; } } PIMPLE { momentumPredictor yes; nOuterCorrectors 1; nCorrectors 2; nNonOrthogonalCorrectors 0; }
  23. buoyantPimpleFoam System/ fvSchemes 離散化スキームの設定 FoamFile { version 2.0; format ascii;

    class dictionary; location "system"; object fvSchemes; } ddtSchemes { default Euler; } gradSchemes { default Gauss linear; } divSchemes { default none; div(phi,U) Gauss upwind; div(phi,h) Gauss upwind; div(phi,e) Gauss upwind; div(phi,k) Gauss upwind; div(phi,epsilon) Gauss upwind; div(phi,R) Gauss upwind; div(phi,K) Gauss linear; div(phi,Ekp) Gauss linear; div(R) Gauss linear; div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear; } laplacianSchemes { default Gauss linear corrected; } interpolationSchemes { default linear; } snGradSchemes { default corrected; }
  24. buoyantPimpleFoam system/ controlDict 計算の制御 FoamFile { version 2.0; format ascii;

    class dictionary; location "system"; object controlDict; } application buoyantPimpleFoam; startFrom startTime; startTime 0; stopAt endTime; endTime 1; deltaT 1e-3; writeControl adjustableRunTime; writeInterval 0.01; purgeWrite 0; writeFormat ascii; writePrecision 6; writeCompression off; timeFormat general; timePrecision 6; runTimeModifiable true; adjustTimeStep on; maxCo 0.5; ソルバー実行コマンド 初期から計算開始 1秒まで計算 0.001刻みで計算 計算結果の出力 結果を保存する個数(0はすべての結果) writeContralに応じた値 計算結果の桁数 結果の圧縮(zip) 数値のフォーマット 時刻の桁数 クーラン数で時刻幅を制御 ソルバー実行時にcontralDictを読 み直すかどうか
  25. 概要 スタート 単相流? 温度計算? 温度計算大? 定常? 定常? 定常? buoyantSimpleFoam buoyantPimpleFoam

    simpleFoam pimpleFoam buoyantBoussinesqSimpleFoam buoyantBoussinesqPimpleFoam interFoam yes yes yes yes no no no no yes no yes no 本資料は以下の のソルバーを用いて計算する。 非圧縮流体 非圧縮流体 圧縮流体 圧縮流体
  26. Valid patchField types are : 113 ( MarshakRadiation MarshakRadiationFixedTemperature advective

    alphatJayatillekeWallFunction atmBoundaryLayerInletEpsilon atmBoundaryLayerInletK calculated codedFixedValue codedMixed compressible::alphatJayatillekeWallFunction compressible::alphatWallFunction compressible::thermalBaffle1D<hConstSolidThermoPhysics> compressible::thermalBaffle1D<hPowerSolidThermoPhysics> compressible::turbulentHeatFluxTemperature compressible::turbulentTemperatureCoupledBaffleMixed compressible::turbulentTemperatureRadCoupledMixed convectiveHeatTransfer cyclic cyclicACMI cyclicAMI cyclicSlip directionMixed empty energyJump energyJumpAMI epsilonLowReWallFunction epsilonWallFunction externalCoupled externalCoupledTemperature externalWallHeatFluxTemperature extrapolatedCalculated fWallFunction fan fanPressure fixedEnergy fixedFluxExtrapolatedPressure fixedFluxPressure fixedGradient fixedInternalValue fixedJump fixedJumpAMI fixedMean fixedPressureCompressibleDensity fixedProfile fixedUnburntEnthalpy fixedValue freestream freestreamPressure gradientEnergy gradientUnburntEnthalpy greyDiffusiveRadiation greyDiffusiveRadiationViewFactor inletOutlet inletOutletTotalTemperature kLowReWallFunction kqRWallFunction buoyantBoussinesqPimpleFoam alphatの設定
  27. outletMappedUniformInlet partialSlip phaseHydrostaticPressure plenumPressure porousBafflePressure prghPressure prghTotalHydrostaticPressure prghTotalPressure processor processorCyclic

    rotatingTotalPressure sliced slip symmetry symmetryPlane syringePressure timeVaryingMappedFixedValue totalFlowRateAdvectiveDiffusive totalPressure totalTemperature mapped mappedField mappedFixedInternalValue mappedFixedPushedInternalValue mixed mixedEnergy mixedUnburntEnthalpy nonuniformTransformCyclic nutLowReWallFunction nutTabulatedWallFunction nutURoughWallFunction nutUSpaldingWallFunction nutUWallFunction nutkAtmRoughWallFunction nutkRoughWallFunction nutkWallFunction omegaWallFunction outletInlet turbulentInlet turbulentIntensityKineticEnergyInlet turbulentMixingLengthDissipationRateInlet turbulentMixingLengthFrequencyInlet uniformDensityHydrostaticPressure uniformFixedGradient uniformFixedValue uniformInletOutlet uniformJump uniformJumpAMI uniformTotalPressure v2WallFunction variableHeightFlowRate wallHeatTransfer waveSurfacePressure waveTransmissive wedge wideBandDiffusiveRadiation zeroGradient ) buoyantBoussinesqPimpleFoam alphatの設定
  28. buoyantBoussinesqPimpleFoam FoamFile { version 2.0; format ascii; class dictionary; object

    transportProperties; } transportModel Newtonian; // Laminar viscosity nu [0 2 -1 0 0 0 0] 1e-05; // Thermal expansion coefficient beta [0 0 0 -1 0 0 0] 3e-03; // Reference temperature TRef [0 0 0 1 0 0 0] 300; // Laminar Prandtl number Pr [0 0 0 0 0 0 0] 0.9; // Turbulent Prandtl number Prt [0 0 0 0 0 0 0] 0.7; 動粘性係数 buoyantPimpleFoam