OpenFoamのサンプル確認(パラメータやキーワードの覚書)です。
チュートリアルフォルダ:チュートリアル場所(windows)
次ページ:メッシュの置き換え
ベース
バージョン : Windows版(OpenFOAM-v2106-windows-mingw.exe)
引用元
<チュートリアルフォルダ>\multiphase\interFoam\laminar\damBreakWithObstacle
結果図
気層、液相のモデルになります。
作業
基本的な流れはT703 OpenFoam tipsと同じです。(または作業)
//チュートリアルからサンプルをコピーしておきます。// //0.origから0へ(.org削除) //コマンド:メッシュ作成 blockMesh //コマンド実行 topoSet subsetMesh -overwrite c0 -patch walls setFields //計算実行// interFoam //ParaView用VTK変換// foamToVTK
モデル
設定値の抜粋まとめ
全体構造
//初期フォルダ・ファイル構成 damBreakWithObstacle ├ 0.orig │ ├ alpha.water │ ├ k │ ├ nut │ ├ omega │ ├ p_rgh │ └ U ├ constant │ ├ dynamicMeshDict │ ├ g │ ├ transportProperties :物性値 │ └ turbulenceProperties ├ system │ ├ blockMeshDict :ブロックメッシュ定義 │ ├ controlDict :解析ジョブ設定 │ ├ decomposeParDict :未使用(win) │ ├ fvSchemes :ソルバー設定 │ ├ fvSolution :ソルバー設定 │ ├ setFieldsDict │ └ topoSetDict ├ Allclean └ Allrun
0.orig
設定確認 alpha.water
dimensions [0 0 0 0 0 0 0]; internalField uniform 0; boundaryField { walls { type zeroGradient; } obstacle { type zeroGradient; } atmosphere { type inletOutlet; inletValue uniform 0; value uniform 0; } }
k
dimensions [0 2 -2 0 0 0 0]; internalField uniform 0.00015; boundaryField { atmosphere { type inletOutlet; inletValue $internalField; value $internalField; } "(obstacle|walls)" { type kqRWallFunction; value $internalField; } }
nut
dimensions [0 2 -1 0 0 0 0]; internalField uniform 5e-07; boundaryField { atmosphere { type zeroGradient; } "(obstacle|walls)" { type nutkRoughWallFunction; Ks uniform 100e-6; Cs uniform 0.5; value $internalField; } }
omega
dimensions [0 0 -1 0 0 0 0]; internalField uniform 2; boundaryField { atmosphere { type inletOutlet; inletValue $internalField; value $internalField; } "(obstacle|walls)" { type omegaWallFunction; value $internalField; } }
p_rgh
dimensions [1 -1 -2 0 0 0 0]; internalField uniform 0; boundaryField { walls { type fixedFluxPressure; phi phiAbs; value uniform 0; } obstacle { type fixedFluxPressure; phi phiAbs; value uniform 0; } atmosphere { type totalPressure; p0 uniform 0; } }
U
dimensions [0 1 -1 0 0 0 0]; internalField uniform (0 0 0); boundaryField { atmosphere { type pressureInletOutletVelocity; value uniform (0 0 0); } "(obstacle|walls)" { type uniformFixedValue; uniformValue (0 0 0); } }
constant
dynamicMeshDict
dynamicFvMesh dynamicRefineFvMesh; // How often to refine refineInterval 1; // Field to be refinement on field alpha.water; // Refine field inbetween lower..upper lowerRefineLevel 0.001; upperRefineLevel 0.999; // If value < unrefineLevel unrefine unrefineLevel 10; // Have slower than 2:1 refinement nBufferLayers 1; // Refine cells only up to maxRefinement levels maxRefinement 2; // Stop refinement if maxCells reached maxCells 200000; // Flux field and corresponding velocity field. Fluxes on changed // faces get recalculated by interpolating the velocity. Use 'none' // on surfaceScalarFields that do not need to be reinterpolated. correctFluxes ( (phi none) (nHatf none) (rhoPhi none) (alphaPhi0.water none) (ghf none) (alphaPhiUn none) ); // Write the refinement level as a volScalarField dumpLevel true;
g
dimensions [0 1 -2 0 0 0 0]; value (0 0 -9.81);
設定確認 transportProperties
phases (water air); water { transportModel Newtonian; nu 1e-06; rho 1000; } air { transportModel Newtonian; nu 1.48e-05; rho 1; } sigma 0.07;
turbulenceProperties
simulationType laminar;
system
設定確認 blockMeshDict
scale 1; vertices ( (0 0 0) (1 0 0) (1 1 0) (0 1 0) (0 0 1) (1 0 1) (1 1 1) (0 1 1) ); blocks ( hex (0 1 2 3 4 5 6 7) (32 32 32) simpleGrading (1 1 1) ); edges ( ); boundary ( atmosphere { type patch; faces ( (3 7 6 2) ); } walls { type wall; faces ( (0 4 7 3) (2 6 5 1) (1 5 4 0) (0 3 2 1) (4 5 6 7) ); } ); mergePatchPairs ( );
設定確認 controlDict
application interFoam; startFrom startTime; startTime 0; stopAt endTime; endTime 2; deltaT 0.001; writeControl adjustable; writeInterval 0.02; purgeWrite 0; writeFormat ascii; writePrecision 6; writeCompression off; timeFormat general; timePrecision 6; runTimeModifiable yes; adjustTimeStep yes; maxCo 0.5; maxAlphaCo 0.5; maxDeltaT 1;
decomposeParDict
numberOfSubdomains 6; method scotch;
設定確認 fvSchemes
ddtSchemes { default Euler; } gradSchemes { default Gauss linear; } divSchemes { div(rhoPhi,U) Gauss upwind; div(phi,alpha) Gauss vanLeer; div(phirb,alpha) Gauss linear; div(phi,k) Gauss upwind; div(phi,omega) Gauss upwind; div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear; } laplacianSchemes { default Gauss linear corrected; } interpolationSchemes { default linear; } snGradSchemes { default corrected; } wallDist { method meshWave; }
設定確認 fvSolution
solvers { "alpha.water.*" { nAlphaCorr 1; nAlphaSubCycles 3; cAlpha 1; } p_rgh { solver GAMG; tolerance 1e-08; relTol 0.01; smoother DIC; cacheAgglomeration no; } p_rghFinal { $p_rgh; relTol 0; } "pcorr.*" { $p_rghFinal; tolerance 0.0001; } U { solver smoothSolver; smoother GaussSeidel; tolerance 1e-06; relTol 0; nSweeps 1; } "(k|omega|B|nuTilda).*" { solver smoothSolver; smoother symGaussSeidel; tolerance 1e-08; relTol 0; } } PIMPLE { momentumPredictor no; nCorrectors 3; nNonOrthogonalCorrectors 0; pRefPoint (0.51 0.51 0.51); pRefValue 0; }
設定確認 setFieldsDict
defaultFieldValues ( volScalarFieldValue alpha.water 0 volVectorFieldValue U (0 0 0) ); regions ( boxToCell { box (0 0 0) (0.6 0.1875 0.75); fieldValues ( volScalarFieldValue alpha.water 1 ); } );
topoSetDict
actions ( { name c0; type cellSet; action clear; } { name c0; type cellSet; action invert; } { name c0; type cellSet; action subtract; source boxToCell; box (0.375 0.375 0) (0.625 0.625 0.25); } );
その他
次ページ以降
コメント