From 227480c3661ef55bca65853585b2fd434bb7499b Mon Sep 17 00:00:00 2001 From: mattijs Date: Thu, 7 Dec 2023 14:41:37 +0000 Subject: [PATCH] TUT: snappyHexMesh: demo multiple insidePoints --- tutorials/mesh/snappyHexMesh/Allrun | 1 + .../mesh/snappyHexMesh/insidePoints/Allclean | 8 + .../mesh/snappyHexMesh/insidePoints/Allrun | 13 + .../snappyHexMesh/insidePoints/README.txt | 2 + .../insidePoints/constant/triSurface/box.obj | 41 +++ .../constant/triSurface/plane.obj | 21 ++ .../insidePoints/system/blockMeshDict | 86 +++++ .../insidePoints/system/controlDict | 97 +++++ .../insidePoints/system/decomposeParDict | 23 ++ .../insidePoints/system/fvSchemes | 46 +++ .../insidePoints/system/fvSolution | 18 + .../insidePoints/system/meshQualityDict | 24 ++ .../insidePoints/system/snappyHexMeshDict | 331 ++++++++++++++++++ .../system/surfaceFeatureExtractDict | 45 +++ 14 files changed, 756 insertions(+) create mode 100755 tutorials/mesh/snappyHexMesh/insidePoints/Allclean create mode 100755 tutorials/mesh/snappyHexMesh/insidePoints/Allrun create mode 100644 tutorials/mesh/snappyHexMesh/insidePoints/README.txt create mode 100644 tutorials/mesh/snappyHexMesh/insidePoints/constant/triSurface/box.obj create mode 100644 tutorials/mesh/snappyHexMesh/insidePoints/constant/triSurface/plane.obj create mode 100644 tutorials/mesh/snappyHexMesh/insidePoints/system/blockMeshDict create mode 100644 tutorials/mesh/snappyHexMesh/insidePoints/system/controlDict create mode 100644 tutorials/mesh/snappyHexMesh/insidePoints/system/decomposeParDict create mode 100644 tutorials/mesh/snappyHexMesh/insidePoints/system/fvSchemes create mode 100644 tutorials/mesh/snappyHexMesh/insidePoints/system/fvSolution create mode 100644 tutorials/mesh/snappyHexMesh/insidePoints/system/meshQualityDict create mode 100644 tutorials/mesh/snappyHexMesh/insidePoints/system/snappyHexMeshDict create mode 100644 tutorials/mesh/snappyHexMesh/insidePoints/system/surfaceFeatureExtractDict diff --git a/tutorials/mesh/snappyHexMesh/Allrun b/tutorials/mesh/snappyHexMesh/Allrun index 09fbf8333c..1d3d88749d 100755 --- a/tutorials/mesh/snappyHexMesh/Allrun +++ b/tutorials/mesh/snappyHexMesh/Allrun @@ -14,6 +14,7 @@ cd "${0%/*}" || exit # Run from this directory ( cd airfoilWithLayers && ./Allrun ) ( cd sphere_gapClosure && ./Allrun ) ( cd block_with_curvature && ./Allrun ) +( cd insidePoints && ./Allrun ) exit 0 diff --git a/tutorials/mesh/snappyHexMesh/insidePoints/Allclean b/tutorials/mesh/snappyHexMesh/insidePoints/Allclean new file mode 100755 index 0000000000..fb1f384730 --- /dev/null +++ b/tutorials/mesh/snappyHexMesh/insidePoints/Allclean @@ -0,0 +1,8 @@ +#!/bin/sh +cd "${0%/*}" || exit # Run from this directory +. ${WM_PROJECT_DIR:?}/bin/tools/CleanFunctions # Tutorial clean functions +#------------------------------------------------------------------------------ + +cleanCase0 + +#------------------------------------------------------------------------------ diff --git a/tutorials/mesh/snappyHexMesh/insidePoints/Allrun b/tutorials/mesh/snappyHexMesh/insidePoints/Allrun new file mode 100755 index 0000000000..478682c12e --- /dev/null +++ b/tutorials/mesh/snappyHexMesh/insidePoints/Allrun @@ -0,0 +1,13 @@ +#!/bin/sh +cd "${0%/*}" || exit # Run from this directory +. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions # Tutorial run functions +. ${WM_PROJECT_DIR:?}/bin/tools/CleanFunctions # Tutorial clean functions +#------------------------------------------------------------------------------ + +runApplication blockMesh + +runApplication decomposePar + +runParallel snappyHexMesh + +#------------------------------------------------------------------------------ diff --git a/tutorials/mesh/snappyHexMesh/insidePoints/README.txt b/tutorials/mesh/snappyHexMesh/insidePoints/README.txt new file mode 100644 index 0000000000..a8cef8e427 --- /dev/null +++ b/tutorials/mesh/snappyHexMesh/insidePoints/README.txt @@ -0,0 +1,2 @@ +- demo multiple insidePoints per cellZone +- two boxes, one additionally split in y direction so in total 3 separate regions diff --git a/tutorials/mesh/snappyHexMesh/insidePoints/constant/triSurface/box.obj b/tutorials/mesh/snappyHexMesh/insidePoints/constant/triSurface/box.obj new file mode 100644 index 0000000000..aa45b2d051 --- /dev/null +++ b/tutorials/mesh/snappyHexMesh/insidePoints/constant/triSurface/box.obj @@ -0,0 +1,41 @@ +# Generated by Visualization Toolkit +v -0.5 0.5 -0.5 +v 0.5 0.5 -0.5 +v -0.5 -0.5 -0.5 +v 0.5 -0.5 -0.5 +v -0.5 0.5 0.5 +v 0.5 0.5 0.5 +v 0.5 -0.5 0.5 +v -0.5 -0.5 0.5 +v 2.5 1.5 0.5 +v 2.5 1.5 1.5 +v 2.5 0.5 0.5 +v 2.5 0.5 1.5 +v 1.5 1.5 0.5 +v 1.5 0.5 0.5 +v 1.5 1.5 1.5 +v 1.5 0.5 1.5 +f 1 2 3 +f 3 2 4 +f 1 5 2 +f 2 5 6 +f 4 7 3 +f 3 7 8 +f 3 8 1 +f 1 8 5 +f 2 6 4 +f 4 6 7 +f 8 7 5 +f 5 7 6 +f 9 10 11 +f 11 10 12 +f 13 9 14 +f 14 9 11 +f 13 15 9 +f 9 15 10 +f 11 12 14 +f 14 12 16 +f 14 16 13 +f 13 16 15 +f 16 12 15 +f 15 12 10 diff --git a/tutorials/mesh/snappyHexMesh/insidePoints/constant/triSurface/plane.obj b/tutorials/mesh/snappyHexMesh/insidePoints/constant/triSurface/plane.obj new file mode 100644 index 0000000000..5fbb08b551 --- /dev/null +++ b/tutorials/mesh/snappyHexMesh/insidePoints/constant/triSurface/plane.obj @@ -0,0 +1,21 @@ +# Generated by Visualization Toolkit +v 1.25 1.0499999523162842 0.25 +v 2.75 1.0499999523162842 0.25 +v 1.25 0.949999988079071 0.25 +v 2.75 0.949999988079071 0.25 +v 1.25 1.0499999523162842 1.75 +v 2.75 1.0499999523162842 1.75 +v 2.75 0.949999988079071 1.75 +v 1.25 0.949999988079071 1.75 +f 1 2 3 +f 3 2 4 +f 1 5 2 +f 2 5 6 +f 2 6 4 +f 4 6 7 +f 4 7 3 +f 3 7 8 +f 3 8 1 +f 1 8 5 +f 8 7 5 +f 5 7 6 diff --git a/tutorials/mesh/snappyHexMesh/insidePoints/system/blockMeshDict b/tutorials/mesh/snappyHexMesh/insidePoints/system/blockMeshDict new file mode 100644 index 0000000000..cc9076cd81 --- /dev/null +++ b/tutorials/mesh/snappyHexMesh/insidePoints/system/blockMeshDict @@ -0,0 +1,86 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2306 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +scale 1; + +vertices +( + (-1 -1 -1) + (4 -1 -1) + (4 4 -1) + (-1 4 -1) + (-1 -1 4) + (4 -1 4) + (4 4 4) + (-1 4 4) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (10 10 10) simpleGrading (1 1 1) +); + +edges +( +); + +boundary +( + frontAndBack + { + type patch; + faces + ( + (3 7 6 2) + (1 5 4 0) + ); + } + inlet + { + type patch; + faces + ( + (0 4 7 3) + ); + } + outlet + { + type patch; + faces + ( + (2 6 5 1) + ); + } + lowerWall + { + type patch; //wall; + faces + ( + (0 3 2 1) + ); + } + upperWall + { + type patch; + faces + ( + (4 5 6 7) + ); + } +); + + +// ************************************************************************* // diff --git a/tutorials/mesh/snappyHexMesh/insidePoints/system/controlDict b/tutorials/mesh/snappyHexMesh/insidePoints/system/controlDict new file mode 100644 index 0000000000..2e2a54a2bc --- /dev/null +++ b/tutorials/mesh/snappyHexMesh/insidePoints/system/controlDict @@ -0,0 +1,97 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2306 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// Where to load it from (if not already in solver) +libs (fieldFunctionObjects); + +DebugSwitches +{ + //shortestPath 1; +} + +application snappyHexMesh; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 500; + +deltaT 1; + +writeControl timeStep; + +writeInterval 100; + +purgeWrite 0; + +writeFormat binary; + +writePrecision 6; + +writeCompression off; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable true; + +functions +{ + processorField + { + // Type of functionObject + type processorField; + + // Where to load it from (if not already in solver) + libs (fieldFunctionObjects); + + // Function object enabled flag + enabled true; + + // When to output the average fields + //writeControl writeTime; + } + + leakFind + { + type sets; + + writeControl timeStep; + interpolationScheme cell; + setFormat vtk; + + // Needs at least one field + fields ( processorID ); + + sets + { + leakFind + { + type shortestPath; + insidePoints ((3.0001 3.0001 0.43)); + outsidePoints ((1 0 1.3)); + axis xyz; + } + } + } +} + + +// ************************************************************************* // diff --git a/tutorials/mesh/snappyHexMesh/insidePoints/system/decomposeParDict b/tutorials/mesh/snappyHexMesh/insidePoints/system/decomposeParDict new file mode 100644 index 0000000000..470ea14591 --- /dev/null +++ b/tutorials/mesh/snappyHexMesh/insidePoints/system/decomposeParDict @@ -0,0 +1,23 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2306 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object decomposeParDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +numberOfSubdomains 6; + +method hierarchical; + +n (3 2 1); + +// ************************************************************************* // diff --git a/tutorials/mesh/snappyHexMesh/insidePoints/system/fvSchemes b/tutorials/mesh/snappyHexMesh/insidePoints/system/fvSchemes new file mode 100644 index 0000000000..9d45bc4447 --- /dev/null +++ b/tutorials/mesh/snappyHexMesh/insidePoints/system/fvSchemes @@ -0,0 +1,46 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2306 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ +} + +gradSchemes +{ +} + +divSchemes +{ +} + +laplacianSchemes +{ +} + +interpolationSchemes +{ +} + +snGradSchemes +{ +} + +wallDist +{ +} + + +// ************************************************************************* // diff --git a/tutorials/mesh/snappyHexMesh/insidePoints/system/fvSolution b/tutorials/mesh/snappyHexMesh/insidePoints/system/fvSolution new file mode 100644 index 0000000000..f59e45d526 --- /dev/null +++ b/tutorials/mesh/snappyHexMesh/insidePoints/system/fvSolution @@ -0,0 +1,18 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2306 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + + +// ************************************************************************* // diff --git a/tutorials/mesh/snappyHexMesh/insidePoints/system/meshQualityDict b/tutorials/mesh/snappyHexMesh/insidePoints/system/meshQualityDict new file mode 100644 index 0000000000..68ab8af37e --- /dev/null +++ b/tutorials/mesh/snappyHexMesh/insidePoints/system/meshQualityDict @@ -0,0 +1,24 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2306 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object meshQualityDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// Include defaults parameters from master dictionary +#includeEtc "caseDicts/meshQualityDict" + +//- minFaceWeight (0 -> 0.5) +minFaceWeight 0.02; + + +// ************************************************************************* // diff --git a/tutorials/mesh/snappyHexMesh/insidePoints/system/snappyHexMeshDict b/tutorials/mesh/snappyHexMesh/insidePoints/system/snappyHexMeshDict new file mode 100644 index 0000000000..c4d0e4052f --- /dev/null +++ b/tutorials/mesh/snappyHexMesh/insidePoints/system/snappyHexMeshDict @@ -0,0 +1,331 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2306 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object snappyHexMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// Which of the steps to run +castellatedMesh true; +snap true; +addLayers false; + + +// 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 +{ + box.obj + { + type triSurfaceMesh; + name box; + } + plane.obj + { + type triSurfaceMesh; + name plane; + } + +}; + + + +// 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 10; + + // 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 3; + + + + // Explicit feature edge refinement + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + // Specifies a level for any cell intersected by its edges. + // This is a featureEdgeMesh, read from constant/triSurface for now. + features + ( + ); + + + + // 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 + { + plane + { + level (2 2); + } + box + { + // Surface-wise min and max refinement level + level (1 1); + faceZone boxFz; + cellZone boxCz; + cellZoneInside insidePoint; + insidePoints + ( + (2.01 0.75 1.13) // minY of split box + (2.01 1.25 1.1) // maxY of split box + (0.01 0.01 0.01) // non-split box + (0.02 0.02 0.03) // (surplus point) non-split box + ); + } + } + + // Resolve sharp angles + resolveFeatureAngle 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 + // descending 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 + { + } + + + // 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 (3.0001 3.0001 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; + + + // Enable automatic leak closure (default is exit immediately) + useLeakClosure true; +} + + + +// Settings for the snapping. +snapControls +{ + //- Number of patch smoothing iterations before finding correspondence + // to surface + nSmoothPatch 3; + + //- Relative distance for points to be attracted by surface feature point + // or edge. True distance is this factor times local + // maximum edge length. + 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 points on multiple surfaces (only for explicitFeatureSnap) + multiRegionFeatureSnap 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; + + // Per final patch (so not geometry!) the layer information + layers + { + "(lowerWall|motorBike).*" + { + nSurfaceLayers 1; + } + } + + // Expansion factor for layer mesh + expansionRatio 1.0; + + // Wanted thickness of final added cell layer. If multiple layers + // is the thickness of the layer furthest away from the wall. + // Relative to undistorted size of cell outside layer. + // See relativeSizes parameter. + finalLayerThickness 0.3; + + // Minimum thickness of cell layer. If for any reason layer + // cannot be above minThickness do not add layer. + // Relative to undistorted size of cell outside layer. + minThickness 0.1; + + // 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 1.7.x! (didn't do anything in 1.7.x) + nGrow 0; + + // Advanced settings + + // When not to extrude surface. 0 is flat surface, 90 is when two faces + // are perpendicular + featureAngle 60; + + // At non-patched sides allow mesh to slip if extrusion direction makes + // angle larger than slipFeatureAngle. + slipFeatureAngle 30; + + // Maximum number of snapping relaxation iterations. Should stop + // before upon reaching a correct mesh. + nRelaxIter 3; + + // Number of smoothing iterations of surface normals + nSmoothSurfaceNormals 1; + + // Number of smoothing iterations of interior mesh movement direction + nSmoothNormals 3; + + // Smooth layer thickness over surface patches + nSmoothThickness 10; + + // Stop layer growth on highly warped cells + maxFaceThicknessRatio 0.5; + + // Reduce layer growth where ratio thickness to medial + // distance is large + maxThicknessToMedialRatio 0.3; + + // Angle used to pick up medial axis points + // Note: changed(corrected) w.r.t 1.7.x! 90 degrees corresponds to 130 + // in 1.7.x. + minMedialAxisAngle 90; + + + // 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; +} + + + +// Generic mesh quality settings. At any undoable phase these determine +// where to undo. +meshQualityControls +{ + #include "meshQualityDict" + + + // Advanced + + //- Number of error distribution iterations + nSmoothScale 4; + //- Amount to scale back displacement at error points + errorReduction 0.75; +} + + +// Advanced + +// Format to use for lines (e.g. leak path) +setFormat ensight; + + +// Write flags +writeFlags +( + scalarLevels + layerSets + 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; + + +// ************************************************************************* // diff --git a/tutorials/mesh/snappyHexMesh/insidePoints/system/surfaceFeatureExtractDict b/tutorials/mesh/snappyHexMesh/insidePoints/system/surfaceFeatureExtractDict new file mode 100644 index 0000000000..10fb628a71 --- /dev/null +++ b/tutorials/mesh/snappyHexMesh/insidePoints/system/surfaceFeatureExtractDict @@ -0,0 +1,45 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: v2306 | +| \\ / A nd | Website: www.openfoam.com | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object surfaceFeatureExtractDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +motorBike-wo-visor.obj +{ + // How to obtain raw features (extractFromFile || extractFromSurface) + extractionMethod extractFromSurface; + + // Mark edges whose adjacent surface normals are at an angle less + // than includedAngle as features + // - 0 : selects no edges + // - 180: selects all edges + includedAngle 150; + + subsetFeatures + { + // Keep nonManifold edges (edges with >2 connected faces) + nonManifoldEdges no; + + // Keep open edges (edges with 1 connected face) + openEdges yes; + } + + + // Write options + + // Write features to obj format for postprocessing + writeObj yes; +} + + +// ************************************************************************* //