/*--------------------------------*- 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; root ""; case ""; instance ""; local ""; class dictionary; object cvMeshDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // Important: // ---------- // Any scalar with a name Coeff specifies a value that will be implemented // as a faction of the local target cell size // Any scalar with a 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 { // Internal shape coneAndSphere.obj { name coneAndSphere; type triSurfaceMesh; tolerance 0.00001; } // // Internal shape // coneAndSphere // { // type searchableSurfaceWithGaps; // surface coneAndSphere.obj; // gap 0.001; // } // Bounds of domain domain.stl { type triSurfaceMesh; } } surfaceConformation { // Point that is inside wanted part of geometry. locationInMesh (0 -0.5 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; mixedFeaturePointPPDistanceCoeff 5.0; featurePointExclusionDistanceCoeff 0.4; featureEdgeExclusionDistanceCoeff 0.2; surfaceSearchDistanceCoeff 2.5; maxSurfaceProtrusionCoeff 0.1; maxQuadAngle 125; surfaceConformationRebuildFrequency 10; coarseConformationControls { initial { edgeSearchDistCoeff 1.1; surfacePtReplaceDistCoeff 0.5; } iteration { edgeSearchDistCoeff 1.25; surfacePtReplaceDistCoeff 0.7; } maxIterations 15; iterationToInitialHitRatioLimit 0.001; } fineConformationControls { initial { edgeSearchDistCoeff 1.1; surfacePtReplaceDistCoeff 0.5; } iteration { edgeSearchDistCoeff 1.25; surfacePtReplaceDistCoeff 0.7; } maxIterations 15; iterationToInitialHitRatioLimit 0.001; } geometryToConformTo { coneAndSphere { featureMethod extendedFeatureEdgeMesh; extendedFeatureEdgeMesh "coneAndSphere.extendedFeatureEdgeMesh"; } domain.stl { featureMethod extendedFeatureEdgeMesh; extendedFeatureEdgeMesh "domain.extendedFeatureEdgeMesh"; } } 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 autoDensity; // 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. autoDensityDetails { // Number of refinement levels. Needs to be enough to pick up features // due to size ratio. minLevels 2; // Split box if ratio of min to max size larger than maxSizeRatio maxSizeRatio 5.0; // Per box sample 3x3x3 internally sampleResolution 3; // Additionally per face of the box sample 3 surfaceSampleResolution 3; } uniformGridDetails { initialCellSize 0.0015; randomiseInitialGrid yes; randomPerturbationCoeff 0.02; } bodyCentredCubicDetails { initialCellSize 0.0015; randomiseInitialGrid no; randomPerturbationCoeff 0.1; } pointFileDetails { pointFile "constant/internalDelaunayVertices"; } } motionControl { defaultCellSize 0.1; // Assign a priority to all requests for cell sizes, the highest overrules. defaultPriority 0; cellSizeControlGeometry { } relaxationModel adaptiveLinear; adaptiveLinearCoeffs { relaxationStart 1.0; relaxationEnd 0.0; } objOutput no; timeChecks yes; alignmentSearchSpokes 36; alignmentAcceptanceAngle 48; sizeAndAlignmentRebuildFrequency 20; pointInsertionCriteria { cellCentreDistCoeff 1.75; faceAreaRatioCoeff 0.0025; acceptanceAngle 21.5; } pointRemovalCriteria { cellCentreDistCoeff 0.65; } faceAreaWeightModel piecewiseLinearRamp; piecewiseLinearRampCoeffs { lowerAreaFraction 0.5; upperAreaFraction 1.0; } } polyMeshFiltering { filterSizeCoeff 0.2; mergeClosenessCoeff 1e-4; continueFilteringOnBadInitialPolyMesh true; filterErrorReductionCoeff 0.5; filterCountSkipThreshold 4; maxCollapseIterations 25; maxConsecutiveEqualFaceSets 5; surfaceStepFaceAngle 80; edgeCollapseGuardFraction 0.3; 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; } // ************************************************************************* //