OpenFoamのサンプル確認(パラメータやキーワードの覚書)です。
チュートリアルフォルダ:チュートリアル場所(windows)
ベース
バージョン : WINDOWS v2206
引用元
<チュートリアルフォルダ>\incompressible\simpleFoam\simpleCar
結果図

作業
基本的な流れはT703 OpenFoam tipsと同じです。(または作業)
//チュートリアルからコピーします。 //0.origを0フォルダにします。 blockMesh topoSet createPatch -overwrite simpleFoam //ParaView用VTK変換// foamToVTK
全体構造
simpleCar ├ 0.orig │ ├ epsilon │ ├ k │ ├ nut │ ├ p │ └ U ├ constant │ ├ transportProperties │ └ turbulenceProperties ├ system │ ├ blockMeshDict │ ├ controlDict │ ├ createPatchDict │ ├ fieldAverage │ ├ forceCoeffs │ ├ fvOptions │ ├ fvSchemes │ ├ fvSolution │ ├ referencePressure │ ├ runTimeControls │ └ topoSetDict ├ Allclean ├ Allrun └ README
0
epsilon
dimensions [0 2 -3 0 0 0 0]; internalField uniform 0.125; boundaryField { inlet { type fixedValue; value $internalField; } "(body|upperWall|lowerWall)" { type epsilonWallFunction; value $internalField; Cmu 0.09; kappa 0.41; E 9.8; } frontAndBack { type empty; } ".*" { type zeroGradient; } }
k
dimensions [0 2 -2 0 0 0 0]; internalField uniform 0.375; boundaryField { inlet { type fixedValue; value $internalField; } "(body|upperWall|lowerWall)" { type kqRWallFunction; value $internalField; } frontAndBack { type empty; } ".*" { type zeroGradient; } }
nut
dimensions [0 2 -1 0 0 0 0]; internalField uniform 0; boundaryField { "(body|upperWall|lowerWall)" { type nutkWallFunction; Cmu 0.09; kappa 0.41; E 9.8; value $internalField; } frontAndBack { type empty; } ".*" { type calculated; value $internalField; } }
p
dimensions [0 2 -2 0 0 0 0]; internalField uniform 0; boundaryField { outlet { type fixedValue; value $internalField; } frontAndBack { type empty; } ".*" { type zeroGradient; } }
U
dimensions [0 1 -1 0 0 0 0]; internalField uniform (10 0 0); // Surface normal with time ramping intakeType1 { type surfaceNormalFixedValue; refValue uniform 1.2; ramp table ((0 0) (10 1)); } // Uniform surface normal with Function1 for ramping intakeType2 { type uniformNormalFixedValue; uniformValue table ((0 0) (10 1.2)); } // Uniform surface normal with time ramping intakeType3 { // Or directly with uniform value (ramping also possible) type uniformNormalFixedValue; uniformValue constant 1.2; ramp table ((0 0) (10 1)); } boundaryField { inlet { type fixedValue; value $internalField; } airIntake { $intakeType1; } outlet { type pressureInletOutletVelocity; value $internalField; } "(body|upperWall|lowerWall)" { type fixedValue; value uniform (0 0 0); } frontAndBack { type empty; } } #remove "intakeType.*"
constant
transportProperties
transportModel Newtonian; nu 1e-05;
turbulenceProperties
simulationType RAS; RAS { RASModel kEpsilon; turbulence on; printCoeffs on; }
system
blockMeshDict
scale 1; vertices ( ( 0.0 0.0 0.1) // 0 ( 2.1 0.0 0.1) // 1 ( 2.5 0.0 0.1) // 2 ( 3.0 0.0 0.1) // 3 ( 5.0 0.0 0.1) // 4 (10.0 0.0 0.1) // 5 ( 0.0 0.3 0.1) // 6 ( 2.1 0.3 0.1) // 7 ( 2.5 0.3 0.1) // 8 ( 3.0 0.3 0.1) // 9 ( 5.0 0.3 0.1) // 10 (10.0 0.3 0.1) // 11 ( 0.0 0.4 0.1) // 12 ( 2.0 0.4 0.1) // 13 ( 2.4 0.4 0.1) // 14 ( 0.0 0.8 0.1) // 15 ( 2.0 0.8 0.1) // 16 ( 2.6 0.8 0.1) // 17 ( 0.0 0.9 0.1) // 18 ( 2.1 0.9 0.1) // 19 ( 3.0 1.0 0.1) // 20 ( 3.6 1.5 0.1) // 21 ( 4.4 1.5 0.1) // 22 ( 5.0 1.0 0.1) // 23 (10.0 1.0 0.1) // 24 ( 0.0 3.0 0.1) // 25 ( 1.2 3.0 0.1) // 26 ( 2.2 3.0 0.1) // 27 ( 3.1 3.0 0.1) // 28 ( 4.5 3.0 0.1) // 29 ( 5.5 3.0 0.1) // 30 (10.0 3.0 0.1) // 31 ( 0.0 0.0 0.0) // 32 ( 2.1 0.0 0.0) // 33 ( 2.5 0.0 0.0) // 34 ( 3.0 0.0 0.0) // 35 ( 5.0 0.0 0.0) // 36 (10.0 0.0 0.0) // 37 ( 0.0 0.3 0.0) // 38 ( 2.1 0.3 0.0) // 39 ( 2.5 0.3 0.0) // 40 ( 3.0 0.3 0.0) // 41 ( 5.0 0.3 0.0) // 42 (10.0 0.3 0.0) // 43 ( 0.0 0.4 0.0) // 44 ( 2.0 0.4 0.0) // 45 ( 2.4 0.4 0.0) // 46 ( 0.0 0.8 0.0) // 47 ( 2.0 0.8 0.0) // 48 ( 2.6 0.8 0.0) // 49 ( 0.0 0.9 0.0) // 50 ( 2.1 0.9 0.0) // 51 ( 3.0 1.0 0.0) // 52 ( 3.6 1.5 0.0) // 53 ( 4.4 1.5 0.0) // 54 ( 5.0 1.0 0.0) // 55 (10.0 1.0 0.0) // 56 ( 0.0 3.0 0.0) // 57 ( 1.2 3.0 0.0) // 58 ( 2.2 3.0 0.0) // 59 ( 3.1 3.0 0.0) // 60 ( 4.5 3.0 0.0) // 61 ( 5.5 3.0 0.0) // 62 (10.0 3.0 0.0) // 63 ); blocks ( hex ( 0 6 7 1 32 38 39 33) ( 8 40 1) simpleGrading (1 1 1) // 0 hex ( 1 7 8 2 33 39 40 34) ( 8 10 1) simpleGrading (1 1 1) // 1 hex ( 2 8 9 3 34 40 41 35) ( 8 10 1) simpleGrading (1 1 1) // 2 hex ( 3 9 10 4 35 41 42 36) ( 8 40 1) simpleGrading (1 1 1) // 3 hex ( 4 10 11 5 36 42 43 37) ( 8 100 1) simpleGrading (1 1 1) // 4 hex (10 23 24 11 42 55 56 43) ( 15 100 1) simpleGrading (1 1 1) // 5 hex (23 30 31 24 55 62 63 56) ( 40 100 1) simpleGrading (1 1 1) // 6 hex (22 29 30 23 54 61 62 55) ( 40 20 1) simpleGrading (1 1 1) // 7 hex (21 28 29 22 53 60 61 54) ( 40 25 1) simpleGrading (1 1 1) // 8 hex (20 27 28 21 52 59 60 53) ( 40 20 1) simpleGrading (1 1 1) // 9 hex (19 26 27 20 51 58 59 52) ( 40 20 1) simpleGrading (1 1 1) // 10 hex (18 25 26 19 50 57 58 51) ( 40 40 1) simpleGrading (1 1 1) // 11 hex (15 18 19 16 47 50 51 48) ( 3 40 1) simpleGrading (1 1 1) // 12 hex (12 15 16 13 44 47 48 45) ( 10 40 1) simpleGrading (1 1 1) // 13 hex ( 6 12 13 7 38 44 45 39) ( 3 40 1) simpleGrading (1 1 1) // 14 hex (13 16 17 14 45 48 49 46) ( 10 10 1) simpleGrading (1 1 1) // 15 hex (14 17 9 8 46 49 41 40) ( 10 10 1) simpleGrading (1 1 1) // 16 ); edges ( arc 10 23 (5.15 0.7 0.1) arc 42 55 (5.15 0.7 0.0) ); defaultPatch { name frontAndBack; type empty; } boundary ( inlet { type patch; faces ( ( 0 6 38 32) ( 6 12 44 38) (12 15 47 44) (15 18 50 47) (18 25 57 50) ); } outlet { type patch; faces ( (5 37 43 11) (11 43 56 24) (24 56 63 31) ); } upperWall { type wall; faces ( (25 26 58 57) (26 27 59 58) (27 28 60 59) (28 29 61 60) (29 30 62 61) (30 31 63 62) ); } lowerWall { type wall; faces ( (0 32 33 1) (1 33 34 2) (2 34 35 3) (3 35 36 4) (4 36 37 5) ); } body { type wall; faces ( (7 8 40 39) (14 46 40 8) (13 45 46 14) (7 39 45 13) (16 17 49 48) (17 9 41 49) (9 10 42 41) (10 42 55 23) (22 54 55 23) (21 53 54 22) (20 52 53 21) (19 51 52 20) (16 48 51 19) ); } ); mergePatchPairs ( );
controlDict
application simpleFoam; startFrom startTime; startTime 0; stopAt endTime; endTime 5000; deltaT 1; writeControl timeStep; writeInterval 100; purgeWrite 10; writeFormat ascii; writePrecision 6; writeCompression off; timeFormat general; timePrecision 6; runTimeModifiable true; functions { #include "forceCoeffs" #include "fieldAverage" #include "referencePressure" #include "runTimeControls" }
createPatchDict
pointSync false; // Patches to create patches ( { // Name of new patch name airIntake; // Dictionary to construct new patch from patchInfo { type patch; } // How to construct: either from 'patches' or 'set' constructFrom set; // If constructFrom = patches : names of patches. Wildcards allowed. patches (); // If constructFrom = set : name of faceSet set airIntake; } );
fieldAverage
fieldAverage1 { type fieldAverage; libs (fieldFunctionObjects); triggerStart 1; timeStart 500; controlMode timeOrTrigger; writeControl writeTime; fields ( U { base iteration; mean on; prime2Mean off; } ); }
forceCoeffs
forceCoeffs1 { type forceCoeffs; libs (forces); writeControl writeTime; writeFields true; patches (body); p p; U U; rho rhoInf; // Indicates incompressible log true; rhoInf 1; // Required when rho = rhoInf liftDir (0 1 0); dragDir (1 0 0); CofR (3.5 0 0); // Axle midpoint on ground pitchAxis (0 0 1); magUInf 10; lRef 4; // Wheelbase length Aref 1; // Estimated porosity on; binData { nBin 20; // output data into 20 bins direction (1 0 0); // bin direction cumulative yes; } }
fvOptions
porosity1 { type explicitPorositySource; active true; explicitPorositySourceCoeffs { type DarcyForchheimer; selectionMode cellZone; cellZone porousZone; DarcyForchheimerCoeffs { d d [0 -2 0 0 0 0 0] (5e7 -1000 -1000); f f [0 -1 0 0 0 0 0] (0 0 0); coordinateSystem { origin (0 0 0); e1 (1 0 0); e2 (0 1 0); } } } }
fvSchemes
ddtSchemes { default steadyState; } gradSchemes { default Gauss linear; } divSchemes { default none; div(phi,U) bounded Gauss upwind; turbulence bounded Gauss upwind; div(phi,k) $turbulence; div(phi,epsilon) $turbulence; div((nuEff*dev2(T(grad(U))))) Gauss linear; } laplacianSchemes { default Gauss linear corrected; } interpolationSchemes { default linear; } snGradSchemes { default corrected; }
fvSolution
solvers { p { solver GAMG; tolerance 1e-06; relTol 0.1; smoother GaussSeidel; nPreSweeps 0; nPostSweeps 2; cacheAgglomeration on; agglomerator faceAreaPair; nCellsInCoarsestLevel 10; mergeLevels 1; } "(U|k|epsilon|R|nuTilda)" { solver smoothSolver; smoother symGaussSeidel; tolerance 1e-05; relTol 0.1; } } SIMPLE { nNonOrthogonalCorrectors 0; residualControl { p 1e-2; U 1e-4; "(k|epsilon)" 1e-4; } } relaxationFactors { fields { p 0.3; } equations { U 0.7; k 0.7; epsilon 0.7; } }
referencePressure
sample1 { type sets; libs (sampling); interpolationScheme cellPointFace; setFormat raw; fields ( p ); sets ( cloud { type cloud; axis xyz; points ( (1 0.2 0.05) (1 0.4 0.05) (1 0.6 0.05) (1 0.8 0.05) (1 1.0 0.05) ); } ); } average1 { type valueAverage; libs (fieldFunctionObjects); writeControl writeTime; functionObject sample1; fields (average(p)); } reference1 { type reference; libs (fieldFunctionObjects); writeControl writeTime; field p; refValue functionObjectValue; functionObject average1; functionObjectResult average(p)Mean; } reference2 { type reference; libs (fieldFunctionObjects); writeControl writeTime; field p; refValue sample; position (1 0.2 0.05); }
runTimeControls
runTimeControl1 { type runTimeControl; libs (utilityFunctionObjects); conditions { condition1 { type average; functionObject forceCoeffs1; fields (Cd); tolerance 1e-3; window 20; windowType exact; } } satisfiedAction setTrigger; trigger 1; } runTimeControl2 { type runTimeControl; libs (utilityFunctionObjects); controlMode trigger; triggerStart 1; conditions { condition1 { type maxDuration; duration 100; } } satisfiedAction end; } /* runTimeControl3 { type runTimeControl; libs (utilityFunctionObjects); conditions { condition1 { type equationInitialResidual; fields (U.component(0)); value 1e-02; mode minimum; } } satisfiedAction end; } */
topoSetDict
actions ( { name porousCells; type cellSet; action new; source boxToCell; box (2.05 0.4 -1) (2.1 0.85 1); } { name porousZone; type cellZoneSet; action new; source setToCellZone; set porousCells; } { name airIntake; type faceSet; action new; source patchToFace; patch body; } { name airIntake; type faceSet; action subset; source boxToFace; box (2.6 0.75 0)(2.64 0.8 0.1); } );
コメント