diff --git a/tutorials/mesh/foamyHexMesh/mixerVessel/Allclean b/tutorials/mesh/foamyHexMesh/mixerVessel/Allclean new file mode 100755 index 0000000000..3b88829f54 --- /dev/null +++ b/tutorials/mesh/foamyHexMesh/mixerVessel/Allclean @@ -0,0 +1,11 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # run from this directory + +# Source tutorial run functions +. $WM_PROJECT_DIR/bin/tools/CleanFunctions + +rm -r constant/internalDelaunayVertices constant/targetCellSize > /dev/null 2>&1 + +cleanCase + +# ----------------------------------------------------------------- end-of-file diff --git a/tutorials/mesh/foamyHexMesh/mixerVessel/Allrun b/tutorials/mesh/foamyHexMesh/mixerVessel/Allrun new file mode 100755 index 0000000000..bbe4923241 --- /dev/null +++ b/tutorials/mesh/foamyHexMesh/mixerVessel/Allrun @@ -0,0 +1,56 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # run from this directory + +# Source tutorial run functions +. $WM_PROJECT_DIR/bin/tools/RunFunctions + +nProcs=$(getNumberOfProcessors) + +# copy flange surface from resources folder +cp $FOAM_TUTORIALS/resources/geometry/mixerVessel.tar.gz constant/triSurface/ +tar zxf constant/triSurface/mixerVessel.tar.gz -C constant/triSurface/rawSurfaces + +# Run the surface preparation script +./constant/triSurface/surfaceProcess.sh > log.surfaceProcess 2>&1 + +runApplication surfaceBooleanFeatures \ + intersection \ + constant/triSurface/vessel.stl \ + constant/triSurface/spargerShaft.stl -perturb + +mv log.surfaceBooleanFeatures log.surfaceBooleanFeatures.vessel_spargerShaft + +runApplication surfaceBooleanFeatures \ + intersection \ + constant/triSurface/vessel.stl \ + constant/triSurface/shaftStatic.stl -perturb + +mv log.surfaceBooleanFeatures log.surfaceBooleanFeatures.vessel_shaftStatic + +runApplication surfaceBooleanFeatures \ + intersection \ + constant/triSurface/spargerShaft.stl \ + constant/triSurface/spargerInlet.stl -perturb + +mv log.surfaceBooleanFeatures log.surfaceBooleanFeatures.spargerShaft_spargerInlet + +runApplication surfaceBooleanFeatures \ + intersection \ + constant/triSurface/stirrer.stl \ + constant/triSurface/shaftRotating.stl -perturb + +mv log.surfaceBooleanFeatures log.surfaceBooleanFeatures.stirrer_shaftRotating + +runApplication surfaceFeatureExtract + +runApplication blockMesh +runApplication decomposePar + +runParallel foamyHexMesh $nProcs + +runParallel collapseEdges $nProcs -collapseFaces -latestTime + +runParallel checkMesh $nProcs -latestTime -allTopology -allGeometry + + +# ----------------------------------------------------------------- end-of-file diff --git a/tutorials/mesh/foamyHexMesh/mixerVessel/constant/polyMesh/blockMeshDict b/tutorials/mesh/foamyHexMesh/mixerVessel/constant/polyMesh/blockMeshDict new file mode 100644 index 0000000000..438af44eea --- /dev/null +++ b/tutorials/mesh/foamyHexMesh/mixerVessel/constant/polyMesh/blockMeshDict @@ -0,0 +1,58 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 1; + +vertices +( + ( -300 -300 -250) + ( 300 -300 -250) + ( 300 300 -250) + ( -300 300 -250) + ( -300 -300 1500) + ( 300 -300 1500) + ( 300 300 1500) + ( -300 300 1500) +); + +blocks +( + hex (0 1 2 3 4 5 6 7) (30 30 67) simpleGrading (1 1 1) +); + +edges +( +); + +boundary +( + allBoundary + { + type patch; + faces + ( + (3 7 6 2) + (0 4 7 3) + (2 6 5 1) + (1 5 4 0) + (0 3 2 1) + (4 5 6 7) + ); + } +); + + +// ************************************************************************* // diff --git a/tutorials/mesh/foamyHexMesh/mixerVessel/constant/triSurface/rawSurfaces/README b/tutorials/mesh/foamyHexMesh/mixerVessel/constant/triSurface/rawSurfaces/README new file mode 100644 index 0000000000..dbf3b73d5f --- /dev/null +++ b/tutorials/mesh/foamyHexMesh/mixerVessel/constant/triSurface/rawSurfaces/README @@ -0,0 +1,4 @@ +Folder to house tri-surfaces + +The Allrun script copies the surface from the $FOAM_TUTORIALS/resources/geometry +folder diff --git a/tutorials/mesh/foamyHexMesh/mixerVessel/constant/triSurface/surfaceProcess.sh b/tutorials/mesh/foamyHexMesh/mixerVessel/constant/triSurface/surfaceProcess.sh new file mode 100755 index 0000000000..a061a5ba32 --- /dev/null +++ b/tutorials/mesh/foamyHexMesh/mixerVessel/constant/triSurface/surfaceProcess.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +cd ${0%/*} || exit 1 # run from this directory + +#cp rawSurfaces/MRF.stl MRF.stl +#cp rawSurfaces/baffles.stl baffles.stl + +cp rawSurfaces/vessel.stl vessel.stl +cp rawSurfaces/sparger.stl sparger.stl +cp rawSurfaces/shaftRotating.stl shaftRotating.stl +cp rawSurfaces/shaftStatic.stl shaftStatic.stl +cp rawSurfaces/gasInlet.stl gasInlet.stl +cp rawSurfaces/stirrer.stl stirrer.stl + +# Vessel surface +surfaceAutoPatch vessel.stl vessel.stl 120 + +# Sparger +surfaceCheck sparger.stl +surfaceAdd gasInlet.stl sparger_0.obj spargerInlet.stl +surfaceConvert sparger_1.obj spargerShaft.stl +surfaceOrient -inside spargerInlet.stl "(-100 -50 500)" spargerInlet.stl +surfaceOrient -inside spargerShaft.stl "(-50 -20 -100)" spargerShaft.stl + +# Rotating shaft +surfaceOrient -inside shaftRotating.stl "(-100 -50 500)" shaftRotating.stl + +# Static shaft +surfaceOrient -inside shaftStatic.stl "(15 -200 1000)" shaftStatic.stl + +# Stirrer +surfaceSplitByTopology stirrer.stl stirrer.stl +surfaceOrient -inside stirrer.stl "(15 -200 1000)" stirrer.stl + + +# ----------------------------------------------------------------- end-of-file diff --git a/tutorials/mesh/foamyHexMesh/mixerVessel/system/collapseDict b/tutorials/mesh/foamyHexMesh/mixerVessel/system/collapseDict new file mode 100644 index 0000000000..6967962571 --- /dev/null +++ b/tutorials/mesh/foamyHexMesh/mixerVessel/system/collapseDict @@ -0,0 +1,85 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object collapseDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// If on, after collapsing check the quality of the mesh. If bad faces are +// generated then redo the collapsing with stricter filtering. +controlMeshQuality on; + +collapseEdgesCoeffs +{ + // Edges shorter than this absolute value will be merged + minimumEdgeLength 1e-6; + + // The maximum angle between two edges that share a point attached to + // no other edges + maximumMergeAngle 180; +} + + +collapseFacesCoeffs +{ + // The initial face length factor + initialFaceLengthFactor 0.3; + + // If the face can't be collapsed to an edge, and it has a span less than + // the target face length multiplied by this coefficient, collapse it + // to a point. + maxCollapseFaceToPointSideLengthCoeff 0.3; + + // Allow early collapse of edges to a point + allowEarlyCollapseToPoint on; + + // Fraction to premultiply maxCollapseFaceToPointSideLengthCoeff by if + // allowEarlyCollapseToPoint is enabled + allowEarlyCollapseCoeff 0.2; + + // Defining how close to the midpoint (M) of the projected + // vertices line a projected vertex (X) can be before making this + // an invalid edge collapse + // + // X---X-g----------------M----X-----------g----X--X + // + // Only allow a collapse if all projected vertices are outwith + // guardFraction (g) of the distance form the face centre to the + // furthest vertex in the considered direction + guardFraction 0.1; +} + + +controlMeshQualityCoeffs +{ + // Name of the dictionary that has the mesh quality coefficients used + // by motionSmoother::checkMesh + #include "meshQualityDict"; + + // The amount that minimumEdgeLength will be reduced by for each + // edge if that edge's collapse generates a poor quality face + edgeReductionFactor 0.5; + + // The amount that initialFaceLengthFactor will be reduced by for each + // face if its collapse generates a poor quality face + faceReductionFactor 0.5; + + // Maximum number of outer iterations is mesh quality checking is enabled + maximumIterations 10; + + maximumSmoothingIterations 2; + + maxPointErrorCount 3; +} + + +// ************************************************************************* // diff --git a/tutorials/mesh/foamyHexMesh/mixerVessel/system/controlDict b/tutorials/mesh/foamyHexMesh/mixerVessel/system/controlDict new file mode 100644 index 0000000000..c0004ba42b --- /dev/null +++ b/tutorials/mesh/foamyHexMesh/mixerVessel/system/controlDict @@ -0,0 +1,49 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application icoFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 100; + +deltaT 1; + +writeControl timeStep; + +writeInterval 100; + +purgeWrite 0; + +writeFormat binary; + +writePrecision 10; + +writeCompression uncompressed; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable yes; + + +// ************************************************************************* // diff --git a/tutorials/mesh/foamyHexMesh/mixerVessel/system/decomposeParDict b/tutorials/mesh/foamyHexMesh/mixerVessel/system/decomposeParDict new file mode 100644 index 0000000000..24853f860c --- /dev/null +++ b/tutorials/mesh/foamyHexMesh/mixerVessel/system/decomposeParDict @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object decomposeParDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +numberOfSubdomains 8; + +//method ptscotch; +//method hierarchical; +method scotch; + +simpleCoeffs +{ + n ( 2 2 1 ); + delta 0.001; +} + +hierarchicalCoeffs +{ + n ( 2 2 2 ); + delta 0.001; + order xyz; +} + +manualCoeffs +{ + dataFile ""; +} + +distributed no; + +roots ( ); + + +// ************************************************************************* // diff --git a/tutorials/mesh/foamyHexMesh/mixerVessel/system/foamyHexMeshDict b/tutorials/mesh/foamyHexMesh/mixerVessel/system/foamyHexMeshDict new file mode 100644 index 0000000000..a000ba4ad3 --- /dev/null +++ b/tutorials/mesh/foamyHexMesh/mixerVessel/system/foamyHexMeshDict @@ -0,0 +1,278 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object foamyHexMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "$WM_PROJECT_DIR/etc/caseDicts/foamyHexMeshDict" + +geometry +{ + #include "meshDict.geometry" +} + + +initialPoints +{ + initialPointsMethod autoDensity; + + autoDensityCoeffs + { + minLevels 2; + maxSizeRatio 2.0; + sampleResolution 5; + surfaceSampleResolution 5; + } +} + + +surfaceConformation +{ + locationInMesh (200 0 10); + + geometryToConformTo + { + spargerInlet + { + featureMethod extendedFeatureEdgeMesh; + extendedFeatureEdgeMesh "spargerInlet.extendedFeatureEdgeMesh"; + } + + spargerShaft + { + featureMethod none; + } + + vessel + { + featureMethod extendedFeatureEdgeMesh; + extendedFeatureEdgeMesh "vessel.extendedFeatureEdgeMesh"; + regions + { + vessel_wall {} + vessel_outletPipe {} + vessel_outlet {} + } + } + + shaftRotating + { + featureMethod extendedFeatureEdgeMesh; + extendedFeatureEdgeMesh "shaftRotating.extendedFeatureEdgeMesh"; + } + + shaftStatic + { + featureMethod none; + } + + stirrer + { + featureMethod extendedFeatureEdgeMesh; + extendedFeatureEdgeMesh "stirrer.extendedFeatureEdgeMesh"; + } + } + + additionalFeatures + { + spargerShaft_spargerInlet_intersection + { + featureMethod extendedFeatureEdgeMesh; + extendedFeatureEdgeMesh "spargerShaft_spargerInlet_intersection.extendedFeatureEdgeMesh"; + } + + vessel_shaftStatic_intersection + { + featureMethod extendedFeatureEdgeMesh; + extendedFeatureEdgeMesh "vessel_shaftStatic_intersection.extendedFeatureEdgeMesh"; + } + + vessel_spargerShaft_intersection + { + featureMethod extendedFeatureEdgeMesh; + extendedFeatureEdgeMesh "vessel_spargerShaft_intersection.extendedFeatureEdgeMesh"; + } + + stirrer_shaftRotating_intersection + { + featureMethod extendedFeatureEdgeMesh; + extendedFeatureEdgeMesh "stirrer_shaftRotating_intersection.extendedFeatureEdgeMesh"; + } + } +} + + +motionControl +{ + defaultCellSize 10; + + minimumCellSizeCoeff 0.1; + + maxRefinementIterations 0; + + maxSmoothingIterations 100; + + shapeControlFunctions + { + vessel + { + type searchableSurfaceControl; + priority 1; + mode inside; + forceInitialPointInsertion off; + + surfaceCellSizeFunction uniformValue; + uniformValueCoeffs + { + surfaceCellSizeCoeff 1; + } + + cellSizeFunction uniform; + uniformCoeffs{} + + regions + { + vessel_wall + { + surfaceCellSizeFunction uniformValue; + uniformValueCoeffs + { + surfaceCellSizeCoeff 1; + } + + cellSizeFunction uniform; + uniformCoeffs{} + } + + vessel_outletPipe + { + priority 2; + surfaceCellSizeFunction uniformValue; + uniformValueCoeffs + { + surfaceCellSizeCoeff 0.5; + } + + cellSizeFunction uniformDistance; + uniformDistanceCoeffs + { + distanceCoeff 5; + } + } + + vessel_outlet + { + priority 2; + surfaceCellSizeFunction uniformValue; + uniformValueCoeffs + { + surfaceCellSizeCoeff 0.5; + } + + cellSizeFunction uniformDistance; + uniformDistanceCoeffs + { + distanceCoeff 2; + } + } + } + } + + shaftRotating + { + type searchableSurfaceControl; + priority 2; + mode inside; + forceInitialPointInsertion off; + + surfaceCellSizeFunction uniformValue; + uniformValueCoeffs + { + surfaceCellSizeCoeff 0.25; + } + + cellSizeFunction linearDistance; + linearDistanceCoeffs + { + distanceCellSizeCoeff 1; + distanceCoeff 4; + } + } + + shaftStatic + { + ${shaftRotating}; + } + + stirrer + { + ${shaftRotating}; + } + + spargerInlet + { + type searchableSurfaceControl; + priority 2; + mode inside; + forceInitialPointInsertion off; + + surfaceCellSizeFunction uniformValue; + uniformValueCoeffs + { + surfaceCellSizeCoeff 0.25; + } + + cellSizeFunction linearDistance; + linearDistanceCoeffs + { + distanceCellSizeCoeff 1; + distanceCoeff 4; + } + } + + spargerShaft + { + ${spargerInlet} + } + } + + objOutput no; + + timeChecks no; +} + + +backgroundMeshDecomposition +{ + minLevels 1; + sampleResolution 4; + spanScale 20; + maxCellWeightCoeff 20; +} + + +polyMeshFiltering +{ + writeTetDualMesh false; + filterEdges on; + filterFaces off; +} + + +meshQualityControls +{ + #include "meshQualityDict" +} + + +// ************************************************************************* // diff --git a/tutorials/mesh/foamyHexMesh/mixerVessel/system/fvSchemes b/tutorials/mesh/foamyHexMesh/mixerVessel/system/fvSchemes new file mode 100644 index 0000000000..6acef5c539 --- /dev/null +++ b/tutorials/mesh/foamyHexMesh/mixerVessel/system/fvSchemes @@ -0,0 +1,30 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +gradSchemes +{ +} + +divSchemes +{ +} + +laplacianSchemes +{ +} + +// ************************************************************************* // diff --git a/tutorials/mesh/foamyHexMesh/mixerVessel/system/fvSolution b/tutorials/mesh/foamyHexMesh/mixerVessel/system/fvSolution new file mode 100644 index 0000000000..6db4e1a6ba --- /dev/null +++ b/tutorials/mesh/foamyHexMesh/mixerVessel/system/fvSolution @@ -0,0 +1,18 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +// ************************************************************************* // diff --git a/tutorials/mesh/foamyHexMesh/mixerVessel/system/meshDict.geometry b/tutorials/mesh/foamyHexMesh/mixerVessel/system/meshDict.geometry new file mode 100644 index 0000000000..b73418aeab --- /dev/null +++ b/tutorials/mesh/foamyHexMesh/mixerVessel/system/meshDict.geometry @@ -0,0 +1,66 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object meshDict.geometry; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +vessel.stl +{ + name vessel; + type triSurfaceMesh; + + regions + { + patch0 {name vessel_wall;} + patch1 {name vessel_outletPipe;} + patch2 {name vessel_outlet;} + } +} + + +spargerInlet.stl +{ + name spargerInlet; + type triSurfaceMesh; +} + + +spargerShaft.stl +{ + name spargerShaft; + type triSurfaceMesh; +} + + +shaftRotating.stl +{ + name shaftRotating; + type triSurfaceMesh; +} + + +shaftStatic.stl +{ + name shaftStatic; + type triSurfaceMesh; +} + + +stirrer.stl +{ + name stirrer; + type triSurfaceMesh; +} + + +// ************************************************************************* // diff --git a/tutorials/mesh/foamyHexMesh/mixerVessel/system/meshQualityDict b/tutorials/mesh/foamyHexMesh/mixerVessel/system/meshQualityDict new file mode 100644 index 0000000000..358c725ccc --- /dev/null +++ b/tutorials/mesh/foamyHexMesh/mixerVessel/system/meshQualityDict @@ -0,0 +1,30 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object meshQualityControls; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +maxNonOrtho 60; +maxBoundarySkewness 50; +maxInternalSkewness 10; +maxConcave 80; +minVol 1e-20; +minTetQuality 1e-30; +minArea -1; +minTwist 0.0; +minDeterminant 0.001; +minFaceWeight 0.02; +minVolRatio 0.01; +minTriangleTwist -1; + +// ************************************************************************* // diff --git a/tutorials/mesh/foamyHexMesh/mixerVessel/system/surfaceFeatureExtractDict b/tutorials/mesh/foamyHexMesh/mixerVessel/system/surfaceFeatureExtractDict new file mode 100644 index 0000000000..e26f75b58f --- /dev/null +++ b/tutorials/mesh/foamyHexMesh/mixerVessel/system/surfaceFeatureExtractDict @@ -0,0 +1,113 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object surfaceFeatureExtractDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +shaftRotating.stl +{ + extractionMethod extractFromSurface; + + extractFromSurfaceCoeffs + { + // Mark edges whose adjacent surface normals are at an angle less + // than includedAngle as features + // - 0 : selects no edges + // - 180: selects all edges + includedAngle 100; + } + + subsetFeatures + { + // Remove the top feature + insideBox (-100 -100 -100)(100 100 100); + } + + // Write options + + // Write features to obj format for postprocessing + writeObj no; +} + + +vessel.stl +{ + extractionMethod extractFromSurface; + + extractFromSurfaceCoeffs + { + // Mark edges whose adjacent surface normals are at an angle less + // than includedAngle as features + // - 0 : selects no edges + // - 180: selects all edges + includedAngle 120; + } + + subsetFeatures + { + // Keep nonManifold edges (edges with >2 connected faces where + // the faces form more than two different normal planes) + nonManifoldEdges no; + + // Keep open edges (edges with 1 connected face) + openEdges no; + } + + // Write options + + // Write features to obj format for postprocessing + writeObj no; +} + + +spargerInlet.stl +{ + extractionMethod extractFromSurface; + + extractFromSurfaceCoeffs + { + // Mark edges whose adjacent surface normals are at an angle less + // than includedAngle as features + // - 0 : selects no edges + // - 180: selects all edges + includedAngle 120; + } + + // Write options + + // Write features to obj format for postprocessing + writeObj no; +} + + +stirrer.stl +{ + extractionMethod extractFromSurface; + + extractFromSurfaceCoeffs + { + // Mark edges whose adjacent surface normals are at an angle less + // than includedAngle as features + // - 0 : selects no edges + // - 180: selects all edges + includedAngle 120; + } + + // Write options + + // Write features to obj format for postprocessing + writeObj no; +} + + +// ************************************************************************* // diff --git a/tutorials/resources/geometry/mixerVessel.tar.gz b/tutorials/resources/geometry/mixerVessel.tar.gz new file mode 100644 index 0000000000..eafb6a18da Binary files /dev/null and b/tutorials/resources/geometry/mixerVessel.tar.gz differ