diff --git a/tutorials/mesh/cvMesh/simpleShapes/Allclean b/tutorials/mesh/cvMesh/simpleShapes/Allclean new file mode 100755 index 0000000000..5361756c0d --- /dev/null +++ b/tutorials/mesh/cvMesh/simpleShapes/Allclean @@ -0,0 +1,18 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # run from this directory + +# Source tutorial run functions +. $WM_PROJECT_DIR/bin/tools/CleanFunctions + +rm -r constant/extendedFeatureEdgeMesh constant/internalDelaunayVertices > /dev/null 2>&1 +rm constant/triSurface/*.eMesh > /dev/null 2>&1 +rm constant/triSurface/*_clean* > /dev/null 2>&1 +rm -r constant/polyMesh > /dev/null 2>&1 +rm constant/targetCellSize > /dev/null 2>&1 +rm -r constant/tetDualMesh > /dev/null 2>&1 + +rm domain coneAndSphere > /dev/null 2>&1 + +cleanCase + +# ----------------------------------------------------------------- end-of-file diff --git a/tutorials/mesh/cvMesh/simpleShapes/Allrun b/tutorials/mesh/cvMesh/simpleShapes/Allrun index b348890484..f38a84a48b 100755 --- a/tutorials/mesh/cvMesh/simpleShapes/Allrun +++ b/tutorials/mesh/cvMesh/simpleShapes/Allrun @@ -4,13 +4,48 @@ cd ${0%/*} || exit 1 # run from this directory # Source tutorial run functions . $WM_PROJECT_DIR/bin/tools/RunFunctions +# Remove any small triangles (edges < 1e-4, sliver with Q < 1e-6) from surface +# (cvMesh will try to conform to every feature). +runApplication surfaceClean \ + constant/triSurface/coneAndSphere.obj \ + 1e-4 1e-6 \ + constant/triSurface/coneAndSphere_clean.obj +mv log.surfaceClean log.surfaceClean.coneAndSphere +# Orient so point to be meshed is inside surface +runApplication surfaceOrient \ + constant/triSurface/coneAndSphere_clean.obj \ + -inside '(0 -0.5 0)' \ + constant/triSurface/coneAndSphere_clean_orient.obj +mv log.surfaceOrient log.surfaceOrient.coneAndSphere + +# Same for outside +runApplication surfaceClean \ + constant/triSurface/domain.stl \ + 1e-4 1e-6 \ + constant/triSurface/domain_clean.stl +mv log.surfaceClean log.surfaceClean.domain +runApplication surfaceOrient \ + constant/triSurface/domain_clean.stl \ + -inside '(0 -0.5 0)' \ + constant/triSurface/domain_clean_orient.stl +mv log.surfaceOrient log.surfaceOrient.domain + +runApplication surfaceFeatureExtract \ + constant/triSurface/coneAndSphere_clean_orient.obj \ + coneAndSphere -includedAngle 125 +mv log.surfaceFeatureExtract log.surfaceFeatureExtract.coneAndSphere_clean + +unset FOAM_SIGFPE +runApplication surfaceFeatureExtract \ + constant/triSurface/domain_clean_orient.stl \ + domain -includedAngle 125 +mv log.surfaceFeatureExtract log.surfaceFeatureExtract.domain + # Generate aligned points (in constant/internalDelaunayVertices) and a # mesh from that. -runApplication surfaceFeatureExtract constant/triSurface/coneAndSphere.obj coneAndSphere -includedAngle 125 -runApplication surfaceFeatureExtract constant/triSurface/domain.stl domain -includedAngle 125 runApplication cvMesh # Generate some sets for a bit of mesh inspection -runApplication topoSet +runApplication topoSet -constant -time 0:100 # ----------------------------------------------------------------- end-of-file diff --git a/tutorials/mesh/cvMesh/simpleShapes/system/cvMeshDict b/tutorials/mesh/cvMesh/simpleShapes/system/cvMeshDict index c8055a4d34..db4183588b 100644 --- a/tutorials/mesh/cvMesh/simpleShapes/system/cvMeshDict +++ b/tutorials/mesh/cvMesh/simpleShapes/system/cvMeshDict @@ -403,6 +403,11 @@ meshQualityControls // Set to 180 to disable. maxConcave 80; + //- Minimum pyramid volume. Is absolute volume of cell pyramid. + // Set to a sensible fraction of the smallest cell volume expected. + // Set to very negative number (e.g. -1E30) to disable. + minVol -1E30; + //- Minimum quality of the tet formed by the // variable base point minimum decomposition triangles and // the cell centre (so not face-centre decomposition).