From f983ffbdaf3811ed23f1640a26bf7fe923d3c766 Mon Sep 17 00:00:00 2001
From: mattijs <mattijs>
Date: Thu, 16 Jun 2011 12:53:13 +0100
Subject: [PATCH] ENH: cvMeshDict: added comment

---
 .../mesh/generation/cvMesh/cvMeshDict         | 362 ++++++++++++++++++
 1 file changed, 362 insertions(+)
 create mode 100644 applications/utilities/mesh/generation/cvMesh/cvMeshDict

diff --git a/applications/utilities/mesh/generation/cvMesh/cvMeshDict b/applications/utilities/mesh/generation/cvMesh/cvMeshDict
new file mode 100644
index 00000000000..2896ab85107
--- /dev/null
+++ b/applications/utilities/mesh/generation/cvMesh/cvMeshDict
@@ -0,0 +1,362 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+FoamFile
+{
+    version         2.0;
+    format          ascii;
+    class           dictionary;
+    object          cvMeshDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+// Impoprtant:
+// -----------
+// Any scalar with a name <name>Coeff specifies a value that will be implemented
+// as a faction of the local target cell size
+// Any scalar with a name <name>Size specifies an absolute size.
+
+
+// Geometry. Definition of all surfaces. All surfaces are of class
+// searchableSurface.
+// Surfaces need to be (almost) closed - use closedTriSurfaceMesh
+// if they are not topologically closed. Surfaces need to be oriented so
+// the space to be meshed is always on the inside of all surfaces. Use e.g.
+// surfaceOrient.
+geometry
+{
+    flange.obj
+    {
+        type triSurfaceMesh;
+    }
+}
+
+
+// See cvControls.H
+surfaceConformation
+{
+    // Volume of surfaces that is inside mesh.
+    locationInMesh (0 0 0);
+
+    // Balance this between
+    // - very low distance: little chance of interference from other
+    //   surfaces
+    // - largish distance: less non-orthogonality in final cell
+    //   (circumcentre far away from centroid)
+    pointPairDistanceCoeff      0.1;
+
+    // Mixed feature edges - both inside and outside edges. Recreated
+    // by inserting triplets of points to recreate a single edge. Done for
+    // all edges emanating from point. triplets of points get inserted
+    // mixedFeaturePointPPDistanceCoeff distance away from feature point.
+    mixedFeaturePointPPDistanceCoeff    5.0;
+
+    // See cvControls.H
+    featurePointExclusionDistanceCoeff  0.4;
+
+    // See cvControls.H
+    featureEdgeExclusionDistanceCoeff   0.2;
+
+    // Optimisation: do not check for surface intersection (of dual edges)
+    // for points near to surface.
+    surfaceSearchDistanceCoeff  2.5;
+
+    // Do not conform to small protrusions. These get done by mesh filtering
+    // instead.
+    maxSurfaceProtrusionCoeff   0.1;
+
+    // If feature edge with large angle (so more than 125 degrees) introduce
+    // additional points to create two half angled cells.
+    maxQuadAngle 125;
+
+    // Frequency to redo surface conformation (expensive).
+    surfaceConformationRebuildFrequency 10;
+
+    // Initial and intermediate controls
+    coarseConformationControls
+    {
+        // Initial conformation
+        initial
+        {
+            // We've got a point poking through the surface. Don't do
+            // if near to feature edge.
+            edgeSearchDistCoeff         1.1;
+            surfacePtReplaceDistCoeff   0.5;
+        }
+
+        iteration
+        {
+            edgeSearchDistCoeff         1.25;
+            surfacePtReplaceDistCoeff   0.7;
+        }
+
+        // Stop either at maxIterations or if the number of surface pokes
+        // is very small (iterationToInitialHitRatioLimit * initial number)
+        maxIterations 15;
+
+        iterationToInitialHitRatioLimit 0.001;
+    }
+
+    // Final (at endTime) controls
+    fineConformationControls
+    {
+        initial
+        {
+            edgeSearchDistCoeff         1.1;
+            surfacePtReplaceDistCoeff   0.5;
+        }
+
+        iteration
+        {
+            edgeSearchDistCoeff         1.25;
+            surfacePtReplaceDistCoeff   0.7;
+        }
+
+        maxIterations 15;
+
+        iterationToInitialHitRatioLimit 0.001;
+    }
+
+    // Geometry to mesh to
+    geometryToConformTo
+    {
+        flange.obj
+        {
+            featureMethod extendedFeatureEdgeMesh;
+            extendedFeatureEdgeMesh "flange.extendedFeatureEdgeMesh";
+        }
+    }
+
+    // Independent features
+    additionalFeatures {}
+}
+
+
+initialPoints
+{
+    // Do not place point closer than minimumSurfaceDistanceCoeff
+    // to the surface. Is fraction of local target cell size (see below)
+    minimumSurfaceDistanceCoeff 0.55;
+
+    //initialPointsMethod         densityWeightedStochastic;
+    initialPointsMethod             hierarchicalDensityWeightedStochastic;
+    // initialPointsMethod         uniformGrid;
+    // initialPointsMethod         bodyCentredCubic;
+    // initialPointsMethod         pointFile;
+
+    // Take boundbox of all geometry. Samples with this box. If too much
+    // samples (due to target cell size) in box split box.
+    hierarchicalDensityWeightedStochasticDetails
+    {
+        // Number of refinement levels. Needs to be enough to pick up features
+        // due to size ratio.
+        minLevels 4;
+        // Split box if ratio of min to max size larger than maxSizeRatio
+        maxSizeRatio 5.0;
+        // Per box sample 7x7x7 internally
+        sampleResolution 7;
+        // Additionally per face of the box sample 5x5
+        surfaceSampleResolution 5;
+    }
+
+    densityWeightedStochasticDetails
+    {
+        // Volume of space to be meshed. Use surfaceInertia.
+        totalVolume     1.56e-05;
+    }
+
+    uniformGridDetails
+    {
+        // Absolute cell size.
+        initialCellSize         0.0015;
+        randomiseInitialGrid    yes;
+        randomPerturbationCoeff 0.02;
+    }
+
+    bodyCentredCubicDetails
+    {
+        initialCellSize         0.0015;
+        randomiseInitialGrid    no;
+        randomPerturbationCoeff 0.1;
+    }
+
+    pointFileDetails
+    {
+        // Reads points from file. Still rejects points that are too
+        // close to the surface (minimumSurfaceDistanceCoeff) or on the
+        // wrong side of the surfaces.
+        pointFile              "constant/internalDelaunayVertices";
+    }
+}
+
+
+// Control size of voronoi cells i.e. distance between points. This
+// determines the target cell size which is used everywhere.
+// It determines the cell size given a location. It then uses all
+// the rules
+// - defaultCellSize
+// - cellSizeControlGeometry
+// to determine target cell size. Rule with highest priority wins. If same
+// priority smallest cell size wins.
+motionControl
+{
+    // Absolute cell size of back ground mesh
+    defaultCellSize     0.00075;
+
+    // Assign a priority to all requests for cell sizes, the highest overrules.
+    defaultPriority     0;
+
+    cellSizeControlGeometry
+    {
+        ref7_outside
+        {
+            // optional name of geometry
+            surface             ref7;
+            priority            1;
+            mode                outside;//inside/bothSides
+            cellSizeFunction    linearDistance;
+
+            // Vary from surfaceCellSize (close to the surface) to
+            // distanceCellSize (further than 'distance')
+            linearDistanceCoeffs
+            {
+                surfaceCellSize     1e-5;    // absolute size
+                distanceCellSize    $defaultCellSize;
+                distance            1.0;
+            }
+        }
+
+        tunnel_APPROACH_INLET.obj
+        {
+            priority            1;
+            mode                bothSides;
+            cellSizeFunction    surfaceOffsetLinearDistance;
+            // Constant within a certain distance then linear fade away.
+            // Good for layers.
+            surfaceOffsetLinearDistanceCoeffs
+            {
+                surfaceCellSize     $ref4_size;
+                distanceCellSize    $defaultCellSize;
+                surfaceOffset       0.512;
+                totalDistance       $tunnel_totalDistance;
+            }
+        }
+    }
+
+    // Underrelaxation for point motion. Simulated annealing: starts off at 1
+    // and lowers to 0 (and simulation endTime) to converge points.
+    // adaptiveLinear is preferred choice.
+    // Points move by e.g. 10% of tet size.
+    relaxationModel     adaptiveLinear;
+
+    adaptiveLinearCoeffs
+    {
+        relaxationStart 1.0;
+        relaxationEnd   0.0;
+    }
+
+    // Lots and lots of .obj files
+    objOutput                   no;
+
+    // Timing and memory usage.
+    timeChecks                  yes;
+
+    // Number of rays in plane parallel to nearest surface. Used to detect
+    // next closest surfaces. Used to work out alignment (three vectors)
+    // to surface.
+    // Note that only the initial points (from the seeding) calculate this
+    // information so if these are not fine enough the alignment will
+    // not be correct. (any points added during the running will lookup
+    // this information from the nearest initial point since it is
+    // expensive)
+    alignmentSearchSpokes       36;
+
+    // For each delaunay edge (between two vertices, becomes
+    // the Voronoi face normal) snap to the alignment direction if within
+    // alignmentAcceptanceAngle. Keep at 48.
+    alignmentAcceptanceAngle    48;
+
+    // How often to rebuild the alignment info
+    sizeAndAlignmentRebuildFrequency 20;
+
+    // When to insert points. If edge larger than 1.75 target cell size
+    // (so tets too large/stretched) insert point. Do not change these
+    // settings.
+    pointInsertionCriteria
+    {
+        cellCentreDistCoeff     1.75;
+        // Do not insert point if voronoi face (on edge) very small.
+        faceAreaRatioCoeff      0.0025;
+        // Insert point only if edge closely aligned to local alignment
+        // direction.
+        acceptanceAngle         21.5;
+    }
+
+    // Opposite: remove point if mesh too compressed. Do not change these
+    // settings.
+    pointRemovalCriteria
+    {
+        cellCentreDistCoeff  0.65;
+    }
+
+    // How to determine the point motion. All edges got some direction.
+    // Sum all edge contributions to determine point motion. Weight by
+    // face area so motion is preferentially determined by large faces
+    // (more importantly ignore contribution from small faces).
+    // Do not change these settings.
+    faceAreaWeightModel piecewiseLinearRamp;
+
+    piecewiseLinearRampCoeffs
+    {
+        lowerAreaFraction       0.5;
+        upperAreaFraction       1.0;
+    }
+}
+
+
+// After simulation. Do not change. See cvControls.H
+polyMeshFiltering
+{
+    filterSizeCoeff                         0.2;
+    mergeClosenessCoeff                     1e-4;
+
+    // To not filter: set maxNonOrtho to 1 (so check fails) and then
+    // set continueFilteringOnBadInitialPolyMesh to false.
+    continueFilteringOnBadInitialPolyMesh   true;
+    filterErrorReductionCoeff               0.5;
+    filterCountSkipThreshold                4;
+    maxCollapseIterations                   25;
+    maxConsecutiveEqualFaceSets             5;
+    // Remove little steps (almost perp to surface) by collapsing face.
+    surfaceStepFaceAngle                    80;
+    // Do not collapse face to edge if should become edges
+    edgeCollapseGuardFraction               0.3;
+    // Only collapse face to point if high aspect ratio
+    maxCollapseFaceToPointSideLengthCoeff   0.35;
+}
+
+
+meshQualityControls
+{
+    maxNonOrtho 65;
+    maxBoundarySkewness 50;
+    maxInternalSkewness 10;
+    maxConcave 80;
+    minTetQuality 1e-30;
+    minVol 0;
+    minArea -1;
+    minTwist 0.02;
+    minDeterminant 0.001;
+    minFaceWeight 0.02;
+    minVolRatio 0.01;
+    minTriangleTwist -1;
+}
+
+
+// ************************************************************************* //
-- 
GitLab